直播APP需求剖析
直播项目流程
在直播项目中,一般常见有8个步骤.
-
音视频采集
-
视频滤镜
-
音视频编码
-
推流
-
流媒体服务器处理
-
拉流
-
音视频解码
-
音视频播放
- 采集视频,音频
- 使用iOS原生框架 AVFoundation.framework
- 视频滤镜处理
- 使用iOS原生框架 CoreImage.framework
- 使用第三方框架 GPUImage.framework
CoreImage与GPUImage框架比较:\
在实际项目开发中,开发者更加倾向使用于
GPUImage框架.\
首先它在使用性能上与iOS提供的原生框架,并没有差别;其次它的使用便利性高于iOS原生框架,最后也是最重要的
GPUImage框架是开源的.而大家如果想要学习GPUImage框架,建议学习OpenGL ES,其实GPUImage的封装和思维都是基于OpenGL ES.\
- 视频\音频编码压缩
- 硬编码
- 视频: VideoToolBox框架
- 音频: AudioToolBox 框架
- 软编码
- 视频: 使用FFmpeg,X264算法把视频原数据YUV/RGB编码成H264
- 音频: 使用fdk_aac 将音频数据PCM转换成AAC
- 推流
- 推流: 将采集的音频.视频数据通过流媒体协议发送到流媒体服务器
- 推流技术
- 流媒体协议: RTMP\RTSP\HLS\FLV
- 视频封装格式: TS\FLV
- 音频封装格式: Mp3\AAC
- 流媒体服务器
- 数据分发
- 截屏
- 实时转码
- 内容检测
- 拉流
- 拉流: 从流媒体服务器中获取音频\视频数据
- 流媒体协议: RTMP\RTSP\HLS\FLV
- 音视频解码
- 硬解码
- 视频: VideoToolBox框架
- 音频: AudioToolBox 框架
- 软解码
- 视频: 使用FFmpeg,X264算法解码
- 音频: 使用fdk_aac 解码
- 播放
- ijkplayer 播放框架
- kxmovie 播放框架
> ijkplayer,kxmovie 都是基于FFmpeg框架封装的