一.学习背景
5G网络作为第5代的移动通信网络,它的网络峰值传播速度可1以达到10Gbps/s.这比4G的的传输速度快数百倍.举个例子,整部超高画质电影下载可在1秒钟之内下载完成.
当然,随着5G技术的诞生,用在智能终端分享3D电影,游戏或者超高画质节目的时代已经毫无悬念的向我们走来.
想必大家也逐步了解,国内外的互联网公司也已经布局音视频,3D技术方面的开发者招聘和相关产品研发.目前落地推广最普遍的就是直播类项目和小视频类的项目.当然未来的方向肯定不止如此.
1 什么是编码?
编码就是按照一定的格式记录采样和量化后的数据.
直播项目流程
在直播项目中,一般常见有8个步骤.
- 音视频采集
- 视频滤镜
- 音视频编码
- 推流
- 流媒体服务器处理
- 拉流
- 音视频解码
- 音视频播放
这个在开发者面试一些有意向或者目前业务中包含直播需求的公司,最为常见的面试题.不管在我们过往的工作经验是否有直播或音视频相关经验.这个一块都是你必须能了解.希望大家可以简单的了解.
相关框架的学习与使用场景
![e4440627211b878d3d6a899265e3e43e.png](https://i-blog.csdnimg.cn/blog_migrate/329aade900cc58b4ff2655a251d759b3.jpeg)
- 采集视频,音频使用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
推流
- 推流: 将采集的音频.视频数据通过流媒体协议发送到流媒体服务器
- 推流技术
- 流媒体协议: RTMPRTSPHLSFLV
- 视频封装格式: TSFLV
- 音频封装格式: Mp3AAC
流媒体服务器
- 数据分发
- 截屏
- 实时转码
- 内容检测
拉流
- 拉流: 从流媒体服务器中获取音频视频数据
- 流媒体协议: RTMPRTSPHLSFLV
音视频解码
- 硬解码
- 视频: VideoToolBox框架
- 音频: AudioToolBox 框架
软解码
- 视频: 使用FFmpeg,X264算法解码
- 音频: 使用fdk_aac 解码
播放
- ijkplayer 播放框架
- kxmovie 播放框架