我来说说CUDA 转码为啥不受人待见

原因1、业界用免费X264.exe习惯了。
直到目前,X264.exe依旧是大势所趋,地位崇高,因为X264.exe除了慢没有缺点。其实也不慢,转RMVB等其他格式也是一样慢。CUDA转码软件中免费的只有Media Coder稍好点,但是。。。

原因2、不支持预订码率。
据我所知,免费版的Media Coder只支持Const Quality,不支持预订码率。预订码率可以让你获得你期望的文件大小,不支持这点很囧。

原因3、画质不好。
我曾今试验过,X264 2pass @ 1000kbps 基本等同于 CUDA @ 2000kbps,也就是说,同大小下,CUDA的画质根本不是X264的对手。有些人说目测无区别,但是在习惯和1080p打交道的人眼里,哪怕头发的边缘出现一两个噪点都是区别。画质不好的原因请看原因4:

原因4:支持参数惨不忍睹的少:
1、CUDA不支持自定义CABAC
2、CUDA不支持自定义B帧数量、B-Bias、B-pyramids,要知道B帧的引入是X264效率的灵魂;
3、CUDA不支持自定义Chroma ME,导致CUDA对于高速运动画面的处理惨不忍睹;
4、诸如量化细节之类的参数,统统没有。
5、基本只能自定义level。。。
为什么CUDA的编码器跟x264差别如此大?请看原因5:

原因5:
这是没办法的事情。因为显卡的结构和CPU不同。CPU的分支预测要强于显卡好多好多。而且此类软件数据吞吐量很大,要用到缓存、内存之处比比皆是,但是要想程序员来利用GPU里面的寄存器、缓存、显存、内存来编程,编程难度实在太大,尽管NV频频更新SDK,但是研究新SDK、API的难度无异于学习一门新的语言。目前要根据NV CUDA 或者 OpenCL写压缩软件很难,加上GPU先天不足使得理论上CUDA画质完败X264,程序员没有为CUDA开发强大的X264编码器的热情。

为啥说CUDA适合做移动设备转码?
答案:再渣的画质上了PSP那种小屏幕也就无所谓了。

你可能感兴趣的:(编解码学习笔记,cuda,编程,api,语言)