修改merange加速编码速度是否可行
dwing吧
全部回复
仅看楼主
level 1
x265编码1080p视频速度太慢了
是否可以修改减小merange参数,加快编码速度。
===================================================================
我是这样想的,百度查了资料看到x264的默认merange是4-16,默认16 (凭印象)
而x265运动估算参数默认merange=57 ,且各个档位preset都一样
--me 3 --subme 5 --merange 57
默认merange参数是不是太大?
x265官方文档说“The default is derived from the default CTU size (64) minus the luma interpolation half-length (4) minus maximum su
bp
el distance (2) minus one extra pixel just in case the hex search method is used. If the search range were any larger than this, another CTU row of latency would be required for reference frames.”
基于CTU=64设置了merange=57,
所以,是不是可以在1080p视频编码的时候,设置CTU=32,相应的调整缩小merange加快速度?
网上所搜了一番,确实有人提及到缩小merange加快速度。
http引用s://nmm-h网站d.org/new地址bbs/viewtopic.php?t=1560
netsky 时间: 2015-01-26 14:18
“x265默认的merange 57实在是太慢了,速度只有1-2fps,改成merange 24能提升到4-6fps,如果嫌慢的话,把这个改了能快很多。”
请吧里各位大神帮忙分析一下,这样做是否可行?画质损失会不会很大?
2023年04月07日 06点04分 1
level 1
这不是你要考虑的问题。如果你使用了预设那么参数都会变。只有自定义情况下同时你没有指定它的参数他才会保持默认预设。另外merange 不影响速度。
ctu=64
ctu=32
2023年04月07日 10点04分 3
速度越快效果越差,或体积越大。别想兼顾。
2023年04月07日 10点04分
我理解的是merange会增大搜索范围,导致搜索量大幅度增加?看测试结果,完全不影响,这是什么原理?
2023年04月07日 15点04分
level 1
无论最快或最慢都没有人去动range.
2023年04月07日 17点04分 4
吧务
level 14
hex以上的算法受merange影响比较大,另外,建议不要看别人胡说八道
2023年04月08日 03点04分 5
level 14
……个人觉得最影响速度的是rd
2023年04月08日 04点04分 6
level 7
逻辑上讲,不管范围设置多大,当某个区域搜到相同块,函数会退出,返回移动角度和距离。
两帧区别很大,可能就会出创建新关键帧,很少有搜索到指定边界无结果。
2023年04月08日 05点04分 7
level 10
merange不要低于32,至于对画面有没有影响你需要测试截图对比
2023年04月08日 08点04分 8
level 1
我是这样想的
ME是运动估计/运动补偿技术(Motion Estimate)
MErange是运动估计范围,X264或X265对相邻帧的图像进行运动估计,评估选出正确(或最佳?)相同区块或相似区块,进行复制。
理想情况B帧在非常邻近的位置(比如range=4)速搜索到相似图块,然后完成搜索。这并不影响转码速度
导致转码速度降低的是,画面变化较大,在邻近的位置无法搜索到
正确的
图块,如果设置较大的merange=57,有可能在较远处搜索到相似图块进行替换(压缩)。也有可能穷尽也没有搜索到相似图块,导致搜索失败,进而转入创建“新图块”,也有可能是SceneCut 创建新的关键帧I帧或者p帧
有时候扩大范围以后,搜索到满足近似度的图块,但实际不是相同的图块(实际是画面中相似的图块),这回导致后续搜索继承这个近似图块去编码。导致后续搜索累积误差,最终排除并插入新的关键帧I帧或者p帧图块。
这时候如果软件不用那么大的merange,早一点放弃搜索,插入关键帧I帧或者p帧,可以提高画质,并使得后续编码不会累积错误。
另外,基于x264的merange=4-16,其对应的是编码480p或720p的分辨率。
在720p分辨率视频中,merange=16 pixel像素点,相当于画面2.2%移动范围
在480p分辨率视频中,相同2.2%移动范围,merange=10约
x265主要是hevc编码4k(最大支持8k分辨率),画面中图像发生运动补偿的时候,要考虑的merange自然会提高。
如果处理的视频是1080p视频。相同的运动范围(2.2% x 1080)=24,设置merange=24是否更恰当?
=======================基于CTU角度考虑设置merange=======================
另外,x265官方文档说“The default is derived from the default CTU size (64) minus the luma interpolation half-length (4) minus maximum subpel distance (2) minus one extra pixel just in case the hex search method is used. If the search range were any larger than this, another CTU row of latency would be required for reference frames.”
基于CTU=64设置了merange=57,
在编码1080p视频的时候,将编码区块调低到CTU=32,避免画面糊掉。
基于官方文档相同说法,应该用32减去 半长4 减去 子像素2 减去1pixel
32-4-2-1=25?
综合上面两个方面的考虑
针对1080p视频,设置merange=24-25
针对720p视频, 设置merange=16
2023年04月10日 02点04分 10
如果画面的运动非常剧烈,b帧编码的图块移动距离较大,这时应该增加merange以提高搜索成功的几率
2023年04月10日 02点04分
ctu不会导致画面糊,开32主要还是为了增加并行效率
2023年04月10日 17点04分
level 1
2023年04月10日 08点04分 11
level 1
命令行BAT批处理跑了一个视频
-c:v libx265 -pix_fmt yuv420p10le -preset 6 -crf 30 -x265-params psy-rd=2:aq-mode=2:aq-strength=0.8:qcomp=0.6:pbratio=1.3:merange=57:sao=0:rect=0:amp=0:strong-intra-smoothing=0:b-intra=1:weightb=1:ctu=32:cbqpoffs=-2:crqpoffs=-2:deblock=-1,-1:rc-lookahead=25:keyint=250:min-keyint=20:open-gop=0:bframes=5:rd=4 -acodec copy output
在参数大致设置为preset=6 slow的情况下,
单纯只是调整变化merange,分别设置57和22,
结果文件体积和编码速度差异都非常小。
原理不明白,后续准备不调整merange参数,用默认参数。
2023年04月11日 15点04分 12
ffmpeg可以更新了(虽然性能提升不一定很大
2023年04月15日 16点04分
@208hafº 没区别。最多x265 3.4vs3.5。甚至版本都是一样的。只有av1这种新编码或许有一定的改善空间。
2023年04月15日 17点04分
(编译器不一样
2023年04月28日 16点04分
level 8
这个参数调小容易出问题,从此再也不调了
2023年04月15日 16点04分 13
1