如何用FFmpeg将HDR10+/Dolby Vision视频转换为HDR视频?
转码HDR10+/Dolby Vision至标准HDR(HDR10)的FFmpeg命令
以下是针对两种格式的转码方案,核心是让FFmpeg生成符合HDR10标准的静态元数据,同时保留原视频的高动态范围特性:
1. 处理HDR10+视频
ffmpeg -i input_hdr10plus.mkv -c:v libx265 -crf 18 -preset medium -x265-params "hdr-opt=1:repeat-headers=1:colorprim=bt2020:transfer=smpte2084:colormatrix=bt2020nc:master-display=G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(10000000,1):max-cll=0,0" -c:a copy output_hdr10.mp4
参数说明:
-c:v libx265:选用H.265编码,适配HDR视频的压缩需求-crf 18:画质控制参数,18-22区间的画质接近原片,数值越小画质越好、文件越大-preset medium:平衡编码速度与画质,可按需替换为fast(更快)或slow(画质更优)-x265-params中的关键配置:hdr-opt=1:启用HDR专属优化colorprim=bt2020、transfer=smpte2084、colormatrix=bt2020nc:指定HDR10标准的色彩空间、传输函数与色域矩阵master-display和max-cll:建议用ffprobe input_hdr10plus.mkv提取原视频的实际元数据替换,避免默认值导致的色彩偏差
2. 处理Dolby Vision视频
Dolby Vision多数基于HDR10底层,转码命令与HDR10+类似:
ffmpeg -i input_dolbyvision.mkv -c:v libx265 -crf 18 -preset medium -x265-params "hdr-opt=1:repeat-headers=1:colorprim=bt2020:transfer=smpte2084:colormatrix=bt2020nc:master-display=G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(10000000,1):max-cll=0,0" -c:a copy output_hdr10.mp4
额外说明:
- 若原视频为Dolby Vision Profile 8.x,FFmpeg会自动提取其中的静态HDR元数据生成HDR10输出
- 务必用
ffprobe获取原视频的真实master-display和max-cll值,这是保证色彩表现准确的关键
实用提示
- 音频无需转码时用
-c:a copy,如需转码为AAC可替换为-c:a aac -b:a 192k - 转码前用
ffmpeg -v error -select_streams v:0 -show_entries stream=color_primaries,transfer_characteristics,color_space,master_display,max_cll -of default=noprint_wrappers=1:nokey=1 input_file.mkv一键提取所有HDR元数据,直接复制到命令中即可
内容的提问来源于stack exchange,提问作者HONGSM
相关产品推荐
相关产品推荐

