用ffmpeg修改/纠正H.264/AVC/H.265/HEVC视频的HDR元数据错误

@Ta 2022-04-18发布,09-05 17:43修改 27839点击

以下方法是修改元数据,不是转换视频内容。修改元数据不会让非HDR内容具有HDR效果,也不能让HDR内容在非HDR设备中正常显示。

以下方法的用途是纠正原始视频文件中的元数据错误,比如HDR内容丢失了HDR元数据,或者误把非HDR内容标记为HDR等情况。

只有在原始视频元数据不正确/丢失的情况下,才应该使用下述方法进行修改。如果你想转换视频内容(比如把正常的HDR视频转换为正常的SDR视频),则应该使用其他参数,下述方法不能达到目的,只会得到色彩异常的视频文件。

H.264/AVC

H.264/AVC视频(8bit/10bit)标记为HDR(BT2020/PQ)的方法(可以用来修复错误标记为SDR的NVIDIA即时重放录屏):

ffmpeg -i "input.mp4" -map 0 -c copy -bsf:v h264_metadata=colour_primaries=9:transfer_characteristics=16:matrix_coefficients=9 -color_primaries bt2020 -color_trc smpte2084 -colorspace bt2020nc -color_range tv "output.mp4"

也可用于格式工厂,把-bsf:v h264_metadata=colour_primaries=9:transfer_characteristics=16:matrix_coefficients=9 -color_primaries bt2020 -color_trc smpte2084 -colorspace bt2020nc -color_range tv一段添加到ffmpeg参数里即可。


修改H.264/AVC视频的数据级别(有限、完全)

# 标记为完全范围
ffmpeg -i "input.mp4" -map 0 -c copy -color_range pc "output.mp4"
# 标记为有限范围
ffmpeg -i "input.mp4" -map 0 -c copy -color_range tv "output.mp4"

H.265/HEVC

把HEVC视频强行标记为HDR(BT2020/ST2084/PQ):

ffmpeg -i input.mp4 -c copy -bsf:v hevc_metadata=colour_primaries=9:transfer_characteristics=16:matrix_coefficients=9 output.mp4

把HEVC视频强行标记为非HDR(BT709):

ffmpeg -i input.mp4 -c copy -bsf:v hevc_metadata=colour_primaries=1:transfer_characteristics=1:matrix_coefficients=1 output.mp4

把HEVC视频强行标记为HDR(HLG):

ffmpeg -i input.mp4 -c copy -bsf:v hevc_metadata=colour_primaries=9:transfer_characteristics=18:matrix_coefficients=9 output.mp4

也可用于格式工厂,把-bsf:v hevc_metadata=colour_primaries=9:transfer_characteristics=16:matrix_coefficients=9一段添加到ffmpeg参数里即可。


修改H.265/HEVC视频的数据级别(有限、完全)

# 标记为有限范围
ffmpeg -i input.mp4 -c copy -bsf:v hevc_metadata=video_full_range_flag=0 output.mp4
# 标记为完全范围
ffmpeg -i input.mp4 -c copy -bsf:v hevc_metadata=video_full_range_flag=1 output.mp4
回复列表(10|隐藏机器人聊天)
  • @Ta / 2022-04-18 / /
    问题来了  怎么让1h1g小鸡 使用ffmpeg时 不会宕机
  • @Ta / 2022-04-18 / /

    @20263,你试过挂载swap吗,有效吗?

  • @Ta / 2022-04-18 / /
    @老虎会游泳,这个楼层怎么变了  挂载了swap 但是还是会卡死 又在docker里装了ffmpeg限制0.8cpu 过了一夜  也卡住了

    ffmpeg这吃内存大户  相同代码换到4h8g很流畅就进行下去了  只不过太贵了一个月几百美元 

     要是能第三方白嫖的大佬推荐推荐  我B站马上破万粉丝了  经常鸽持续掉粉
  • @Ta / 2022-04-18 / /

    @20263,在用户中心点一下“正序”

  • @Ta / 2022-04-18 / /

    @20263,发个 ID 关注一下
    小米MIX2s(白)

  • @Ta / 2022-04-18 / /

    @20263,可以多关注下国内服务器的活动,前段时间我1300块在腾讯云买了4C8G10M 5年
    红米K30 Pro(变焦版)

  • @Ta / 2022-04-18 / /
    @水木易安,我要女粉@Curtion,富婆  我用的Azure 白嫖的学生机100美元一年
  • @Ta / 2022-04-18 / /
    @20263,我是女粉
  • @Ta / 2023-02-01 / /

    修改HEVC视频的数据级别(有限、完全)

    ffmpeg -i HLG测试:数据级别完全.mkv -c copy -bsf:v hevc_metadata=video_full_range_flag=0 HLG测试:数据级别完全,错标为有限.mkv
    ffmpeg -i HLG测试:数据级别有限.mkv -c copy -bsf:v hevc_metadata=video_full_range_flag=1 HLG测试:数据级别有限,错标为完全.mkv
    
  • @Ta / 09-05 17:21 / /

    H.264/AVC标记为HDR的方法(可以用来修复错误标记为SDR的NVIDIA即时重放录屏):

    ffmpeg -i "input.mp4" -map 0 -c copy -bsf:v h264_metadata=colour_primaries=9:transfer_characteristics=16:matrix_coefficients=9 -color_primaries bt2020 -color_trc smpte2084 -colorspace bt2020nc -color_range tv "output.mp4"
    
添加新回复
回复需要登录