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

nii*_*ico 2 ffmpeg

我是 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
Run Code Online (Sandbox Code Playgroud)

我在 Google 上搜索了几个小时,找到了 ffmpeg 的各种文档,但没有一个文档解释了 -c 或 -acodec 的实际用途。我认为 -c 代表“编解码器”,-acodec 代表“音频编解码器”?两者的作用/有什么区别/哪个更好?

我发现文档没有帮助:

https://ffmpeg.org/ffmpeg-all.html

https://gist.github.com/tayvano/6e2d456a9897f55025e25035478a3a50

另外,关于如何改进这一点的任何建议也非常受欢迎(我只需要依次将 3 个 mp3 连接在一起)。

谢谢。

bar*_*lop 7

解决你的标题。

这样做 -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没有视频。/sf/ask/693912271/ 因此它不会复制视频。或者-an对于没有音频的情况,使用 FFmpeg 从视频文件中删除音频

添加

-acodecand的语法-vcodec现已弃用。建议使用-c:aand的语法(它们是and-c:v的别名)-codec:a-codec:v


Fra*_*mas 6

-cor-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
Run Code Online (Sandbox Code Playgroud)

解码器/编码器的名称或特殊值副本(仅输出)以指示流不被重新编码。

-a编解码器

-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只是其音频或视频子集的快捷方式。