gpt4 book ai didi

执行命令时 Swift 脚本卡住 (ffmpeg)

转载 作者:行者123 更新时间:2023-12-04 13:37:14 25 4
gpt4 key购买 nike

我正在编写一个使用 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

我在脚本中做错了什么?

最佳答案

您需要添加 -nostdin调用 ffmpeg 时的选项。

let ffmpeg = Process()
ffmpeg.executableURL = URL(fileURLWithPath: "/usr/local/bin/ffmpeg")
ffmpeg.arguments = ["-nostdin", "-i", "input.mov", "output.mp4"]
ffmpeg 正在等待标准输入作为输入。
以下是来自 ffmpeg docs 的一些有用信息.

Enable interaction on standard input. On by default unless standard input is used as an input. To explicitly disable interaction you need to specify -nostdin.


归功于 Swift Forum 上的 jazzbox .

关于执行命令时 Swift 脚本卡住 (ffmpeg),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61174226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com