保证兼容性,输出标准的DVD格式,不是神马超码版或者高清扩展版,即使最古早的第一代DVD机器也能顺畅播放。编码器调用标准的FFMPEG,没有使用扩展库或者特殊优化版本,保证您自己动手也能轻松复现。我为了方便,前端使用了“ShanaEncoder”编码器,如果喜欢手打命令行的,稍微改一下命令格式,效果一样的……
首先将源视频转码中间格式,格式参数如下图,这一步就是调节画面gamma(因为DVD的MPEG-2编码方法对暗部细节处理经常翻车,这个参数相当于将真实gamma值设为约1.8到约2.0的感觉)以及自动生成关键帧。
接着就是将中间格式转换为标准DVD格式。
如果视频为23.98FPS,使用如下图参数,输出标准PAL制式,过滤器第一行视频参数为:
-vf "scale=720:576:flags=spline+full_chroma_int+accurate_rnd+full_chroma_inp,setsar=64/45,setdar=16/9,setpts=PTS*24000/1001/25"

如果视频为24FPS,将过滤器第一行和第二行参数修改如下,其他不变:
-vf "scale=720:576:flags=spline+full_chroma_int+accurate_rnd+full_chroma_inp,setsar=64/45,setdar=16/9,setpts=PTS*24/25"
-af "atempo=25/24"
如果视频为25FPS,则将过滤器第二行完全删除,“-C:V”命令行行中的“-r 25”删除,过滤器参数第一行修改如下,其他不变:
-vf "scale=720:576:flags=spline+full_chroma_int+accurate_rnd+full_chroma_inp,setsar=64/45,setdar=16/9"
如果视频为29.98FPS,则使用下图参数,输出标准NTSC制式,过滤器第一行视频参数为:
-vf "scale=720:480:flags=spline+full_chroma_int+accurate_rnd+full_chroma_inp,setsar=32/27,setdar=16/9,setpts=PTS*30000/1001/30"

如果视频为30FPS,则沿用上面参数输出标准NTSC,过滤器第二行完全删除,“-C:V”命令行行中的“-r 30”删除,过滤器第一行修改如下:
-vf "scale=720:480:flags=spline+full_chroma_int+accurate_rnd+full_chroma_inp,setsar=32/27,setdar=16/9"
如果视频是50FPS,则在编码中间格式时将帧率降为25FPS。60FPS的情况类似,编码中间格式时降为30FPS。
还是那段8K视频来测试,用以上参数压成NTSC制式DVD光盘,我的便携DVD正确识别为DVD并顺畅播放。有机器的也可以帮忙测试一下,谢谢了。不过该测试视频有长时间(最长的时候有3秒)以标准最高缓冲码率10.02Mbps输出的情况发生,因此对刻录盘刻录机的要求较高,我用我的便携式刻录机以8X速刻0.8元的盘片后,在便携式DVD上播放时就发现光盘会转速不稳,老会突然加速旋转进行缓冲或着纠错,偶有卡顿和花屏现象。而在我换台式蓝光刻录机刻录莱尔德档案级光盘后,在便携式DVD机上播放时,光盘旋转速度就非常平稳并且播放顺畅,这真的是把最后一丁点冗余潜力都给激发了……
链接:https://pan.baidu.com/s/18muUkE77p7-OfBsPbU3OMg?pwd=sux2 提取码:sux2


至于改进其实还是有的,比如DVD标准允许瞬时最高码率为15Mbps,缓冲最高码率为10.02Mbps。而我现在是将最高码率小于缓冲码率来搞,参数为:“-maxrate 9500k -bufsize 10m”。如果按照标准描述,将参数设置为“-maxrate 15000k -bufsize 10m”,则编码器编码速度会从正常的几百上千FPS掉到个位数FPS,编码器会长时间在高码率处不停循环反复尝试编码以满足你设置的参数,速度比X265的placebo级别还慢,不差时间的可以试试,高复杂度画面暂停仔细比较是可以看出一点区别来的。
另外就是缩放算法,这个对画质的影响是决定性的,已经用上FFMPEG里最好的方法了,要改进就需要调用外接扩展库,比如大名鼎鼎的“JINS”,有能力的推荐自己动手折腾就行。
首先将源视频转码中间格式,格式参数如下图,这一步就是调节画面gamma(因为DVD的MPEG-2编码方法对暗部细节处理经常翻车,这个参数相当于将真实gamma值设为约1.8到约2.0的感觉)以及自动生成关键帧。

接着就是将中间格式转换为标准DVD格式。
如果视频为23.98FPS,使用如下图参数,输出标准PAL制式,过滤器第一行视频参数为:
-vf "scale=720:576:flags=spline+full_chroma_int+accurate_rnd+full_chroma_inp,setsar=64/45,setdar=16/9,setpts=PTS*24000/1001/25"

如果视频为24FPS,将过滤器第一行和第二行参数修改如下,其他不变:
-vf "scale=720:576:flags=spline+full_chroma_int+accurate_rnd+full_chroma_inp,setsar=64/45,setdar=16/9,setpts=PTS*24/25"
-af "atempo=25/24"
如果视频为25FPS,则将过滤器第二行完全删除,“-C:V”命令行行中的“-r 25”删除,过滤器参数第一行修改如下,其他不变:
-vf "scale=720:576:flags=spline+full_chroma_int+accurate_rnd+full_chroma_inp,setsar=64/45,setdar=16/9"
如果视频为29.98FPS,则使用下图参数,输出标准NTSC制式,过滤器第一行视频参数为:
-vf "scale=720:480:flags=spline+full_chroma_int+accurate_rnd+full_chroma_inp,setsar=32/27,setdar=16/9,setpts=PTS*30000/1001/30"

如果视频为30FPS,则沿用上面参数输出标准NTSC,过滤器第二行完全删除,“-C:V”命令行行中的“-r 30”删除,过滤器第一行修改如下:
-vf "scale=720:480:flags=spline+full_chroma_int+accurate_rnd+full_chroma_inp,setsar=32/27,setdar=16/9"
如果视频是50FPS,则在编码中间格式时将帧率降为25FPS。60FPS的情况类似,编码中间格式时降为30FPS。
还是那段8K视频来测试,用以上参数压成NTSC制式DVD光盘,我的便携DVD正确识别为DVD并顺畅播放。有机器的也可以帮忙测试一下,谢谢了。不过该测试视频有长时间(最长的时候有3秒)以标准最高缓冲码率10.02Mbps输出的情况发生,因此对刻录盘刻录机的要求较高,我用我的便携式刻录机以8X速刻0.8元的盘片后,在便携式DVD上播放时就发现光盘会转速不稳,老会突然加速旋转进行缓冲或着纠错,偶有卡顿和花屏现象。而在我换台式蓝光刻录机刻录莱尔德档案级光盘后,在便携式DVD机上播放时,光盘旋转速度就非常平稳并且播放顺畅,这真的是把最后一丁点冗余潜力都给激发了……
链接:https://pan.baidu.com/s/18muUkE77p7-OfBsPbU3OMg?pwd=sux2 提取码:sux2


至于改进其实还是有的,比如DVD标准允许瞬时最高码率为15Mbps,缓冲最高码率为10.02Mbps。而我现在是将最高码率小于缓冲码率来搞,参数为:“-maxrate 9500k -bufsize 10m”。如果按照标准描述,将参数设置为“-maxrate 15000k -bufsize 10m”,则编码器编码速度会从正常的几百上千FPS掉到个位数FPS,编码器会长时间在高码率处不停循环反复尝试编码以满足你设置的参数,速度比X265的placebo级别还慢,不差时间的可以试试,高复杂度画面暂停仔细比较是可以看出一点区别来的。
另外就是缩放算法,这个对画质的影响是决定性的,已经用上FFMPEG里最好的方法了,要改进就需要调用外接扩展库,比如大名鼎鼎的“JINS”,有能力的推荐自己动手折腾就行。
