我正在尝试将以下复杂过滤器转换为Fluent FFMPEG命令,但我无法弄清楚映射的工作原理。
ffmpeg -i audio.mp3 -filter_complex "[0:a]showfreqs=s=200x100:colors=white|white,format=yuv420p[vid]" -map "[vid]" -map 0:a video.mp4
这是我到目前为止的内容,但是我收到关于“ vid”流的错误。
ffmpeg()
.input("audio.mp3")
.audioCodec("aac")
.audioBitrate("320")
.complexFilter(
{
filter: "showfreqs",
options: { s: "200x100" },
inputs: "0:a",
},
{
filter: "format",
options: { pix_fmts: "yuv420p" },
outputs: ["vid"],
}
)
.outputOptions(['-map "[vid]"', "-map 0:a"])
.save(spectrumTmp)
错误:ffmpeg exited with code 1: Stream map '"[vid]"' matches no streams.
To ignore this, add a trailing '?' to the map.
如果我添加结尾的'?'在outputOptions
中,我得到一个没有视频流的文件。
答案 0 :(得分:1)
解决了这个问题。我的原始代码有三件事:
complexFilter
必须是一个对象数组,但缺少数组括号。outputOptions
中遇到了一个报价问题最终的工作代码:
ffmpeg()
.input("audio.mp3")
.audioCodec("aac")
.audioBitrate("320")
.complexFilter([
{
filter: "showfreqs",
options: { s: "200x100" },
inputs: "0:a",
outputs: "[freqs]",
},
{
filter: "format",
options: { pix_fmts: "yuv420p" },
inputs: "[freqs]",
outputs: "[vid]",
},
])
.outputOptions(["-map [vid]", "-map 0:a"])
.save(spectrumTmp)