我正在编写一个使用bash命令ffmpeg的快捷脚本。我一直在关注this excellent guide。一切正常,除了我尝试运行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
我的脚本在做什么错?