如果我导入一个文件与ffmpeg一起使用但是没有指定任何关于任何流的编解码器的内容,那么ffmpeg会做什么吗?是否只是复制编解码器的默认操作?或者ffmpeg使用一些默认编解码器对输入文件进行编码?
以下两个命令是否相同?或者第二次重新编码并需要多长时间?
ffmpeg -i input.mkv -c:v copy -c:a copy output.mp4
ffmpeg -i input.mkv output.mp4
答案 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。