RT,最近一直在研究Linux下利用GPU进行硬件加速转码的方案,折腾了很久,至今没有找到比较理想的硬加速转码方案。似乎网上讨论这一方案的文章也特别少,这个过程中也进行了各种尝试,遇到很多具体问题,以下便对之前所作的一些工作做一些总结和分享,省的时间长了自己也忘记了,也希望后来者能少走弯路,并找到适合自己的最佳方案。
背景:
项目需要在指定的Linux服务器上对视频源进行转码存储,以节省存储空间。操作系统必须是Linux,用来硬加速转码的GPU是nViDIA的GT440。
方案1:
由于nViDIA的CUDA SDK中提供了现成的硬加速encoder和decoder,最简单、性能最有保障的方式就是调用CUDA中的编解码API进行转码。国内比较有名的MediaCoder就是这么搞的,当然它只用了CUDA的encoder,解码还是用CPU来做的。但问题是,安装了CUDA SDK之后才发现,CUDA提供的编解码API只有windows的版本,没有Linux的版本。于是,只能退而求其次地尝试在Linux下安装Windows虚拟机试一下。