【FFmpeg如何判断HDR视频,SDR视频】

本文介绍了如何使用ffprobe和ffmpeg命令来判断HDR视频的color_primaries和color_transfer特性,并提供方法检测SDR与HDR混合视频。关键点包括color_primaries=bt2020和color_trc=arib-std-b67或smpte2084。

1. hdr视频判断规则

判断的方法:

ffprobe -v error -select_streams v -show_streams 'input.mp4' | grep -E "color_primaries|color_transfer" 

hdr视频满足下面两个条件

1. color_primaries=bt2020
2. color_transfer=arib-std-b67 或者 color_transfer=smpte2084

2. 前几帧是sdr、后面的帧是hdr视频(sdr和hdr混合视频)的检测方法

ffmpeg -hide_banner -i  'i.mp4' -vf showinfo -frames:v 25 -f null /dev/null  2>&1
  • 此命令会打印每帧的color_primaries(色域)和color_trc(传输函数)信息。

hdr的帧需满足下面两个条件

1. color_primaries=bt2020
2. color_trc=arib-std-b67 或者 color_trc=smpte2084

如果存在hdr帧和非hdr帧则为sdr和hdr混合的视频

### 将 SDR 视频转换为 HDR 视频FFmpeg 方法 将标准动态范围(SDR视频转换为高动态范围(HDR视频是一个复杂的过程,因为这不仅涉及颜色空间和亮度范围的转换,还需要对色调映射进行逆向操作。以下是一个详细的解决方案: #### 1. 使用 FFmpeg 的 `zscale` 和 `tonemap` 滤镜 FFmpeg 提供了 `zscale` 和 `tonemap` 滤镜来处理颜色空间和动态范围的转换。为了从 SDR 转换到 HDR,需要使用反向色调映射(Inverse Tone Mapping, ITM)。以下是命令示例: ```bash ffmpeg -i 输入文件 \ -vf "zscale=t=linear:npl=100,format=gbrpf32le,zscale=p=bt2020,tonemap=tonemap=linear:desat=0,zscale=t=smpte2084:m=bt2020:r=tv,format=yuv420p10le" \ -c:v libx265 -preset slow -crf 26 -x265-params colorprim=bt2020:transfer=smpte2084:colormatrix=bt2020nc -c:a copy 输出文件 ``` #### 参数解释 - `-vf`:定义视频滤镜链。 - `zscale=t=linear:npl=100`:将输入的颜色空间转换为线性颜色空间[^1]。 - `format=gbrpf32le`:设置像素格式为 32 位浮点数 RGB 格式。 - `zscale=p=bt2020`:将色彩 primaries 转换为 BT.2020,这是 HDR 常用的标准。 - `tonemap=tonemap=linear:desat=0`:应用线性反向色调映射以扩展亮度范围[^3]。 - `zscale=t=smpte2084:m=bt2020:r=tv`:将目标传输特性设置为 SMPTE ST 2084(PQ 曲线),并指定电视范围。 - `format=yuv420p10le`:输出为 10 位 YUV 格式。 - `-c:v libx265`:使用 HEVC 编码器,支持 HDR10。 - `-preset slow`:选择编码速度与质量的平衡。 - `-crf 26`:设置恒定质量因子,数值越低质量越高。 - `-x265-params colorprim=bt2020:transfer=smpte2084:colormatrix=bt2020nc`:明确指定颜色元数据以确保播放器正确解码 HDR 内容。 #### 注意事项 - **输入视频的质量**:高质量的 SDR 视频会显著提升转换效果[^2]。 - **硬件支持**:某些设备可能不支持 10 位或更高位深的视频解码,需确保目标平台兼容。 - **色彩管理**:转换后的 HDR 视频需要在支持 HDR 的显示器上观看才能获得最佳效果。 #### 示例代码块 ```bash ffmpeg -i input.mp4 \ -vf "zscale=t=linear:npl=100,format=gbrpf32le,zscale=p=bt2020,tonemap=tonemap=linear:desat=0,zscale=t=smpte2084:m=bt2020:r=tv,format=yuv420p10le" \ -c:v libx265 -preset slow -crf 26 -x265-params colorprim=bt2020:transfer=smpte2084:colormatrix=bt2020nc -c:a copy output.mp4 ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值