You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用ffprobe获取MediaInfo中的Bit depth(视频位深度)信息?

可靠获取视频位深度的ffprobe方案

方法1:基于pix_fmt的预定义映射表

ffmpeg的像素格式命名有明确规律,你可以通过官方像素格式列表构建映射表,覆盖绝大多数场景:

  • 8bit格式:如yuv420p、yuv422p、rgb24等,无数字后缀
  • 10bit格式:如yuv420p10le、yuv422p10le、p010le等,带10le/10be后缀
  • 12bit格式:如yuv420p12le、yuv422p12le等,带12le/12be后缀
  • 16bit格式:如yuv420p16le、rgb48le等,带16le/16be后缀

你可以用以下命令导出完整的像素格式-位深度对应表,直接整理成程序可用的映射字典:

ffmpeg -pix_fmts | awk '{if(NR>1) print $1, $3}'

之后用ffprobe获取pix_fmt字段,再通过映射表直接对位深度即可。

方法2:结合bits_per_raw_sample与编码参数兜底

先尝试直接读取bits_per_raw_sample字段:

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

如果返回N/A,再通过编码参数辅助判断x264/x265视频的位深度:

ffprobe -i input.mp4 -v error -select_streams v:0 -show_entries stream_tags=encoder -of default=noprint_wrappers=1:nokey=1

若编码器信息包含10bit字样(如x264的core xxx H.264/MPEG-4 AVC codec ... 10bit、x265的x265 HEVC encoder ... 10bit),即可直接判定为10bit视频,剩余情况用方法1的映射表处理。

方法3:调用MediaInfo命令行工具(兜底方案)

既然MediaInfo能正常识别,可直接用其命令行工具提取位深度:

mediainfo --Inform="Video;%BitDepth%" input.mp4

该方法可作为ffprobe方案失效时的补充。


内容的提问来源于stack exchange,提问作者Sam Kook

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 07:58:11