FFMPEG 中的“-acodec”和“-c”有什么区别

FFMPEG 中的“-acodec”和“-c”有什么区别

我是 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 从视频文件中删除音频

添加

-acodecand的语法-vcodec现已弃用。建议使用-c:aand的语法-c:v(它们是-codec:aand的别名-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只是音频或视频子集的快捷方式。

相关内容