我是 FFMPEG 的新手,找不到关于此内容的清晰具体文档。
我正在连接 3 个 mp3(我只想要多路复用,不需要编码/转码)。
这两个命令似乎都运行良好。使用“-c”和“-acodec”有什么区别吗?
ffmpeg -i "concat:a.mp3|b.mp3|c.mp3" -acodec copy out.mp3
ffmpeg -i "concat:a.mp3|b.mp3|c.mp3" -c copy out.mp3
我在 Google 上搜索了几个小时,找到了各种 ffmpeg 文档,但没有一个解释 -c 或 -acodec 的实际作用。我认为 -c 代表“编解码器”,而 -acodec 代表“音频编解码器”?它们各自有什么作用/有什么区别/哪个更好?
我发现没有帮助的文档:
https://ffmpeg.org/ffmpeg-all.html
https://gist.github.com/tayvano/6e2d456a9897f55025e25035478a3a50
此外,任何关于如何改进的建议都非常感谢(我只需要按顺序将 3 个 mp3 连接在一起)。
谢谢。
答案1
解决你的标题。
这样做 -c copy
将复制音频编解码器 (acodec) 和视频编解码器 (vcodec)
-c copy
是相同的 -acodec copy -vcodec copy
-c:a copy
是相同的-acodec copy
。
-c:v copy
是相同的-vcodec copy
当然,你可以指定一个编解码器,例如-vcodec libx264
或-c:v libx264
-c 代表编解码器。您也可以写 -codec https://ffmpeg.org/ffmpeg.html 例如 -codec:a copy
如果您不指定例如-acodec copy
或-acodec blahblah
或-codec:a ...
,则它将选择某个默认编解码器。您也可以说-vn
没有视频。https://stackoverflow.com/questions/9913032/how-can-i-extract-audio-from-video-with-ffmpeg 所以它不会复制视频。或-an
没有音频使用 FFmpeg 从视频文件中删除音频
添加
-acodec
and的语法-vcodec
现已弃用。建议使用-c:a
and的语法-c:v
(它们是-codec:a
and的别名-codec:v
)
答案2
-c
或者-codec
是一个通用的流选择器,因此您可以使用它来设置任何流(无论是音频还是视频)的编解码器。
-acodec
是该功能的一个子集,可自动将范围限定为音频流
-acodec:1
和 相同-codec:a:1
,表示您正在设置第二个音频流的编解码器(第一个音频流为 0)。
来自链接的文档:-c,-codec
-c[:stream_specifier] 编解码器(输入/输出,每个流)-codec[:stream_specifier] 编解码器(输入/输出,每个流)
Select an encoder (when used before an output file) or a decoder (when used before an input file) for one or more streams. codec is the
解码器/编码器的名称或特殊值副本(仅输出)以指示该流不会被重新编码。
-acodec
-acodec 编解码器(输入/输出)
设置音频编解码器。这是 -codec:a 的别名。
还有一个 -vcodec,其工作方式与视频流相同。
因此,综上所述,请考虑文档中的这个命令
ffmpeg -i INPUT -map 0 -c copy -c:v:1 libx264 -c:a:137 libvorbis OUTPUT
这就是说,对于所有的流都使用原始编解码器(-c copy
),但对于第二个视频流使用 libx264(-c:v:1 libx264
),对于第 138 个音频流使用 libvorbis(-c:a:137 libvorbis
)。
因此-c
您可以使用 控制所有类型的流,而-acodec
和-vcodec
只是音频或视频子集的快捷方式。