有没有办法在转码前使用ffmpeg来确定文件的编码?

时间:2011-04-11 07:54:04

标签: ffmpeg video-processing video-encoding

我打算使用ffmpeg确保上传到我网站的所有视频文件都编码为mp4 h264。

不是自动处理每个文件,而是希望通过仅处理那些不是mp4 h264的文件来最小化处理开销。有没有一种简单的方法可以使用ffmpeg或其他命令行实用程序来执行此操作?

3 个答案:

答案 0 :(得分:26)

使用ffprobe

示例命令

$ ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=nokey=1:noprint_wrappers=1 input.mp4

结果

h264

选项说明

  • -v error除了致命错误外,不提供额外信息。

  • -select_streams v:0仅选择第一个视频流。否则,将显示文件中所有其他流的codec_name,例如音频。

  • -show_entries stream=codec_name仅输出codec_name而非所有流信息。

  • -of default=nokey=1:noprint_wrappers=1选择默认输出格式样式并省略键和包装器信息。否则,如果没有这些选项,它将输出:

    [STREAM]
    codec_name=h264
    [/STREAM]
    

另见

答案 1 :(得分:21)

如果您将输入文件传递给ffmpeg而没有其他参数,它将为您提供有关视频源的信息:

ffmpeg -i myfile.avi

另一种方法是mplayer的-identify选项,它可能稍微容易解析。有一个包装脚本midentify,它可以为您提供更好的输出。见this example.

答案 2 :(得分:5)

另一种方法是使用ffmpeg附带的ffprobe。以下将提供我可以从ffmpeg工具中找到的最简洁的输出:

ffprobe -hide_banner -stats -i myfile.avi