Swift Script зависает при выполнении команды (ffmpeg) - PullRequest
2 голосов
/ 12 апреля 2020

Я пишу быстрый скрипт, который использует команду bash ffmpeg. Я следил за этим прекрасным гидом . Все работает, кроме случаев, когда я пытаюсь запустить ffmpeg для конвертации видео. Обычно я могу просто ffmpeg -i input.mov output.mp4 конвертировать видео, которое отлично работает в терминале. Но когда я помещаю его в свой скрипт, у меня возникают проблемы.

Это мой быстрый скрипт:

#!/usr/bin/env swift
import Foundation

let ffmpeg = Process()
ffmpeg.executableURL = URL(fileURLWithPath: "/usr/local/bin/ffmpeg")
ffmpeg.arguments = ["-i", "input.mov", "output.mp4"]

let pipe = Pipe()
ffmpeg.standardOutput = pipe

do{
  try ffmpeg.run()
  let data = pipe.fileHandleForReading.readDataToEndOfFile()
  if let output = String(data: data, encoding: String.Encoding.utf8) {
    print(output)
  }
} catch {
  print("Error")
}

Однако процесс просто зависает в следующей точке, и мне нужно нажать Ctrl c для выхода:

ffmpeg version 4.2.2-with-options Copyright (c) 2000-2019 the FFmpeg developers
  built with Apple clang version 11.0.3 (clang-1103.0.32.29)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/4.2.2_2 --enable-shared --cc=clang --host-cflags=-fno-stack-check --host-ldflags= --enable-gpl --enable-libaom --enable-libmp3lame --enable-libopus --enable-libsnappy --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --disable-libjack --disable-indev=jack --disable-htmlpages --extra-version=with-options --enable-opencl --enable-videotoolbox
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100

Что я делаю не так в моем скрипте?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...