1、前言
实时音视频的开发学习有很多可以参考的开源项目。一个实时音视频应用共包括几个环节:采集、编码、前后处理、传输、解码、缓冲、渲染等很多环节。每一个细分环节,还有更细分的技术模块。比如,前后处理环节有美颜、滤镜、回声消除、噪声抑制等,采集有麦克风阵列等,编解码有VP8、VP9、H.264、H.265等。
典型的实时音视频应用数据流转过程如下:
下面这张图可能更具体一点:
本文汇总了一些能帮助到正在学习或进行实时音视频开发的同行们的开源工程,这些工程分为几类:音视频编解码类、视频前后处理、服务端类等,希望能加速您的学习或研究过程。
2、音视频编解码类开源工程
视频编解码的作用就是:在设备的摄像头采集画面和前处理后,将图像进行压缩、进行数字编码、用于传输。
编解码器的优劣基本在于:压缩效率的高低、速度和功耗。
目前,主流的视频编码器分为3个系列:
- 1)VPx(VP8,VP9):
VPx系列是由Google开源的视频编解码标准。在保证相同质量情况下,VP9相比VP8码率减少约50%; - 2)H.26x(H.264,H.265):H.26x系列在硬件支持上比较广泛,H.265的编码效率能比上一代提高了30-50%,但是复杂度和功耗会比上一代大很多,所以纯软件编码实现的话有一定瓶颈,现有的技术下,还是需要依靠硬件编解码为主;
- 3)AVS(AVS1.0,AVS2.0):
AVS是我国具备自主知识产权的第二代信源编码标准,目前已经发展到第二代。
2.1WebRTC工程
首先会用到的肯定是WebRTC,是一个支持网页浏览器进行实时语音对话或视频对话的开源项目。它提供了包括音视频的采集、编解码、网络传输、显示等功能。如果你想基于WebRTC开发实时音视频应用,需要注意,由于WebRTC缺少服务端设计和部署方案,你还需要将WebRTC与Janus等服务端类开源项目结合即可。
官网地址:https://webrtc.org/
2.2x264工程
H.264是目前应用最广的码流标准。x264则是能够产生符合H.264标准的码流的编码器,它可以将视频流编码为H.264、MPEG-4 AVC格式。它提供了命令行接口与API,前者被用于一些图形用户接口例如Straxrip、MeGUI,后者则被FFmpeg、Handbrake等调用。当然,既然有x264,就有对应HEVC/H.265的x265。
官网地址: