以下方法是修改元数据,不是转换视频内容。修改元数据不会让非HDR内容具有HDR效果,也不能让HDR内容在非HDR设备中正常显示。
以下方法的用途是纠正原始视频文件中的元数据错误,比如HDR内容丢失了HDR元数据,或者误把非HDR内容标记为HDR等情况。
只有在原始视频元数据不正确/丢失的情况下,才应该使用下述方法进行修改。如果你想转换视频内容(比如把正常的HDR视频转换为正常的SDR视频),则应该使用其他参数,下述方法不能达到目的,只会得到色彩异常的视频文件。
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参数里即可。
# 标记为完全范围
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"
把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参数里即可。
# 标记为有限范围
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
@20263,你试过挂载swap吗,有效吗?
ffmpeg这吃内存大户 相同代码换到4h8g很流畅就进行下去了 只不过太贵了一个月几百美元
要是能第三方白嫖的大佬推荐推荐 我B站马上破万粉丝了 经常鸽持续掉粉
@20263,在用户中心点一下“正序”
@20263,发个 ID 关注一下
小米MIX2s(白)
@20263,可以多关注下国内服务器的活动,前段时间我1300块在腾讯云买了4C8G10M 5年
红米K30 Pro(变焦版)
修改HEVC视频的数据级别(有限、完全)
H.264/AVC标记为HDR的方法(可以用来修复错误标记为SDR的NVIDIA即时重放录屏):