You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用FFmpeg转码并保留杜比视界(Dolby Vision)视频信息?

如何使用FFmpeg转码并保留杜比视界(Dolby Vision)视频信息?

看起来你已经尝试用x265的参数来保留杜比视界,但转码后的文件没能成功保留DV信息,我来帮你分析问题并调整命令。

首先看你给出的原命令:

ffmpeg -i input.mkv -maxrate 89000k -crf 19 -c:v libx265 -preset ultrafast -pix_fmt yuv420p10le -an -x265-params vbv-bufsize=89000:vbv-maxrate=89000:dolby-vision-profile=5:hdr-opt=1:colorprim=bt2020:transfer=smpte2084:colormatrix=bt2020nc -f mpegts output.ts

从原文件的MediaInfo可以看到,这是一个**Dolby Vision Profile 5(BL+RPU)**的HEVC视频:

Format                                   : HEVC
Format/Info                              : High Efficiency Video Coding
Format profile                           : Main 10@L5@High
HDR format                               : Dolby Vision, Version 1.0, Profile 5, dvhe.05.06, BL+RPU
Codec ID                                 : V_MPEGH/ISO/HEVC
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 10 bits

但转码后的文件确实丢失了DV信息,MediaInfo里完全没有HDR format相关的DV条目。问题出在你没有启用x265的杜比视界编码开关,仅仅指定profile是不够的。

调整后的转码命令

我帮你修改了命令,核心是添加dolby-vision=1来启用DV支持,同时补充必要的DV参数:

ffmpeg -i input.mkv -maxrate 89000k -crf 19 -c:v libx265 -preset ultrafast -pix_fmt yuv420p10le -an -x265-params "vbv-bufsize=89000:vbv-maxrate=89000:dolby-vision=1:dolby-vision-profile=5:dolby-vision-level=6:hdr-opt=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" -f mpegts output.ts

关键参数说明

  • dolby-vision=1:这是最核心的缺失参数,启用x265的杜比视界编码功能,让编码器读取输入视频中的RPU(Reference Processing Unit)数据并嵌入到输出中
  • dolby-vision-profile=5:和原文件的Profile保持一致,确保兼容性
  • master-displaymax-cll:建议从原文件中提取准确值(可以用ffmpeg -i input.mkv -hide_banner查看metadata),我这里填的是通用值,用原文件的参数会更准确
  • 保持pix_fmt yuv420p10le:DV Profile5要求10位色深,这个你已经设置正确了

额外注意事项

  • 确保你的FFmpeg和x265版本足够新:旧版本可能不支持完整的DV编码参数,x265 3.5+基本支持Profile5,但建议用最新编译版本
  • 如果你只是想封装而不重新编码,可以用-c:v copy直接复制视频流,这样100%保留DV信息,但你这里是要重新编码,所以必须用上述参数

转码完成后,你可以再用MediaInfo检查,应该会看到类似原文件的Dolby Vision条目了。

备注:内容来源于stack exchange,提问作者SubJunk

火山引擎 最新活动