转码技术对比
一直很苦恼。
我总有一个习惯,当我做视频转码服务器的时候,原本本着开发周期以及成本等问题,已经选择了FFMPEG转码的方案。
在开发过程中,突然想到曾经看到过CUBA这几个字。于是,我立马开始百度(谷歌又被墙了),看到暴风解码就集成了CUBA转码技术,也看到了不要脸闭源的MediaCoder,从一系列对比数据看出,使用GPU转码确实能比CPU转码快很多,只是质量上稍差。其实看到这就已经不错了。
但我手贱,又开始查询CUBA转码有哪些缺点,有哪些限制,我们本身的平台能否满足。看着看着,我又看到一个词SNB,转身又去搜索相关的技术,原来intel在Sandy Bridge中引入了Quick Sync技术,该技术是一项硬件加速视频转码技术,速度甚至超过了最好的GPU加速方案,而且无需消耗CPU资源。
我又心动了,转身开始查询Quick Sync相关优缺点、开发支持等等。
于是一个小时过去了,我原本的开发任务又要延期一个小时,再加上各种会议。。。这种习惯又能给我带来好处:知识面爆棚,经常能拿出最优的方案。好吧,继续苦恼吧,反正没有什么事情是完美的。
言归正传。
目前市面上常见的转码技术有这么几种:FFMPEG(或x264)、CUDA、Quick Sync。从如下几个参数来对比这三种技术吧:
1、 通用性: FFMPEG(X264) > CUDA > Quick Sync
2、 速度 : Quick Sync > CUDA > FFMPEG(X264)
3、 质量 : FFMPEG(X264) > Quick Sync > CUDA
具体参数我无法给出,因为我没有亲测。
总结下吧,目前大多数的转码服务器其实用的都是FFMPEG方案,为什么呢,GPU比CPU快很多。但是FFMPEG是非常成熟的方案,基本不会有什么太大的问题,所以很多公司,比如酷狗、快播还有很多。。。他们都不愿花太多精力去开发CUDA和Quick sync方案,因为再贵的CPU能有多贵?
刚刚说的是服务器产品,对于个人产品而言,比如暴风转码,那就不一样了,你不可能告诉用户换CPU吧,所以暴风才基于CUDA开发了相应的转码技术。
为嘛很少人开发Quick Sync呢?才推出嘛,而且intel也才于去年推出 intel media sdk,另外还有一款开源转码程序HandBrake,老外在这方面比MediaCoder国人靠谱多了。
下次我开发桌面端转码产品时,思路应该是这样的,首先推出Quick sync和FFMPEG两种转码方式的集合,如果发现大多数用户都没有intel芯片的话,考虑下cuda技术。
浙公网安备 33010602011771号