未指定任何内容时的默认ffmpeg编解码器

时间:2013-07-22 16:53:24

标签: ffmpeg codec

如果我导入一个文件与ffmpeg一起使用但是没有指定任何关于任何流的编解码器的内容,那么ffmpeg会做什么吗?是否只是复制编解码器的默认操作?或者ffmpeg使用一些默认编解码器对输入文件进行编码?

以下两个命令是否相同?或者第二次重新编码并需要多长时间?

ffmpeg -i input.mkv -c:v copy -c:a copy output.mp4

ffmpeg -i input.mkv output.mp4

2 个答案:

答案 0 :(得分:10)

  

如果我导入一个文件用于ffmpeg但是没有指定任何关于任何流的编解码器的内容,那么ffmpeg会做什么吗?

ffmpeg将使用默认编码器重新编码输入中的每个流。使用的编码器取决于您配置ffmpeg的方式。例如,如果可用libx264将是mp4输出的默认编码器,但如果不可用,则将使用mpeg4。默认情况下,ffmpeg只会重新编码每种类型的一个流,并忽略其余的流(参见stream selection)。

在您的两个命令中,第一个命令将stream copy mode用于视频和音频。你的第二个命令将重新编码。

答案 1 :(得分:1)

要在您的计算机上发现第二个命令使用的默认编解码器(音频和视频):

  • 运行第二个命令,可能使用-t 5,以便更快完成(仅编码5秒)。

  • 运行ffprobe output.mp4。扫描输出"视频"和"音频"看看哪些编解码器最终被使用。例如,我的Ubuntu 12安装使用h264和aac。