这个问题成立是有前提的——低码率视频。如果码率足够高,GPU加速的画质也不差,肉眼几乎无法看出,用软件比对结果差异也很小。
此外,还有具体的压缩算法、视频编码影响。其它的视频编码我没怎么研究过就不说了,这里单说一下最流行的H264。
H264视频的全部画面分为三类:I帧、P帧和B帧:
使用一张网上的图片[1]:
对于视频压缩算法来说,想要获得最高的压缩率,最关键在于选择合适的I帧和P帧,使得双向对比的B帧需要记录的数据量最小。而想要选择最合适的I帧和P帧,则需要基于对原始视频中大量的帧画面进行比对分析。分析的画面数量越多,比对的运算量越大。这就是H264编码器中,不同的预设(preset)的区别:preset设置的越慢,比对的帧数越多,越能选出最合适的I帧和P帧,P帧/B帧需要记录的画面差异的数据就越少,结果就是要压缩到相同的目标码率,画质损失也就越少。反之,使用快速预设,比对的帧数量少,P帧/B帧记录的画面差异的数据就越多,压缩画面时的画质损失就越严重。
至于GPU加速,这个因为是大部分使用了GPU加速的商业编码器,以及不同GPU厂家的实现电路目前都是不公开的,和CPU压缩的差异区别在哪,我本人作为非相关人员自然也不清楚。但可以推测的两个可能:
如果目标视频码率足够高的话,即使B帧需要记录更多的数据,压缩下来对画质的影响是很轻微的,肉眼看不出来,用软件比对算出来的PSNR/SSNI区别也很小。
最后补充一下,某些转码工具的GPU加速,只是使用GPU对原始视频解码,压制还是使用CPU编码,这种情况下是否使用GPU加速的画质区别非常小。例如ffmpeg就可以使用这种加速方式。
这个问题透着一股邪乎味儿,怎么看怎么危险啊……
建议专业机构给予支援。