Я пишу быстрый скрипт, который использует команду 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
Что я делаю не так в моем скрипте?