目前相关落地推广的有直播类项目和小视频类的项目.5G时代的到来,未来的方向肯定不止如此.
编码
何为编码?
编码就是按照一定的格式记录采样和量化后的数据.
编码中软编码和硬编码的区别?
硬编码:
- 使用非CPU进行编码,例如使用GPU芯片处理
- 性能高,低码率下通常质量低于硬编码器,但部分产品在GPU硬件平台移植了优秀的软编码算法(如X264)的,质量基本等同于软编码。
软编码:
- 使用CPU来进行编码计算.
- 实现直接、简单,参数调整方便,升级易,但CPU负载重,性能较硬编码低,低码率下质量通常比硬编码要好一点。
直播APP需求剖析
直播项目流程
一般常见有8个步骤.
-
音视频采集
-
视频滤镜
-
音视频编码
-
推流
-
流媒体服务器处理
-
拉流
-
音视频解码
-
音视频播放
相关框架
采集视频,音频
- 使用iOS原生框架 AVFoundation.framework
视频滤镜处理
-
使用iOS原生框架 CoreImage.framework
-
使用第三方框架 GPUImage.framework
视频\音频编码压缩
硬编码
- 视频: 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框架封装的