我是 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 连接在一起)。
谢谢。
解决你的标题。
这样做 -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 从视频文件中删除音频
添加
-acodec
and的语法-vcodec
现已弃用。建议使用-c:a
and的语法(它们是and-c:v
的别名)-codec:a
-codec:v
-c
or-codec
是通用流选择器,因此您可以使用它来设置任何流(无论是音频还是视频)的编解码器。
-acodec
是该功能的子集,可自动将范围限定为音频流
-acodec:1
与 相同-codec:a:1
,表示您正在为第二个音频流设置编解码器(第一个音频流为 0)。
从您的链接文档:-c,-codec
-c[:stream_specifier] 编解码器(输入/输出,每个流) -codec[:stream_specifier] 编解码器(输入/输出,每个流)
Run Code Online (Sandbox Code Playgroud)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
解码器/编码器的名称或特殊值副本(仅输出)以指示流不被重新编码。
-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
只是其音频或视频子集的快捷方式。