WebRTC源码分析之硬编码那些事
WebRTC (Web Real-Time Communications) 是 RTC 的一部分,是一项实时通信技术,它容许网络应用或者站点,在不借助两头媒介的状况下,建设浏览器之间点对点(Peer-to-Peer)的关联,实现视频流/音频流或者应用数据的传输。
硬编码和软编码
区别
软编码:使用 CPU 进行编码
硬编码:使用非 CPU 进行编码,如显卡 GPU、专用的 DSP、FPGA、ASIC 芯片等
比较
软编码:实现直接、简单,参数调整方便,升级易,但 会造成CPU 负载重,性能较硬编码低,视频码率质量通常比硬编码要好一点。
硬编码:性能高,视频码率通常质量低于软编码器,但部分产品在 GPU 硬件平台移植了优秀的软编码算法(如 X264)的,质量基本会趋近于软编码。
主流 GPU 加速平台
Intel、AMD、NVIDIA
主流的 GPU 平台开发框架
CUDA:NVIDIA 的封闭编程框架,通过框架可以调用 GPU 计算资源
AMD APP:AMD 为自己的 GPU 提出的一套通用并行编程框架,标准开放,通过在 CPU、GPU 同时支持 OpenCL 框架,进行计算力融合。
OpenCL:开放计算语言,为异构平台编写程序的该框架,异构平台可包含 CPU、GPU 以及其他计算处理器ÿ