本次博客思路来自与公司的一次技术分享。前段时间被公司委派做视频相关的开发,就把视频总体内容梳理一下当做备忘。
下面是本博文的写作思路:
流媒体数据接收到播放
在网络传输过程中我们接收到相关媒体数据要经过一些列的处理来实现对媒体数据的播放,具体过程如下图:
可以看出我们在获取流媒体协议需要经过一下处理方式:
解协议 ---> 解封装 ---> 音视频的解码 (实现音视频同步 & 播放)
流媒体数据解析
在获取流媒体数据后,要对其进行协议的解析来获取封装的媒体数据进行播放。我们常见的协议:HTTP
、RTMP
和MMS
媒体协议
协议简介
<ul>
<li>HTTP:超文本传输协议(HyperText Transfer Protocol)是一个客户端(用户)和服务端(网站)请求和应答的标准。
参考地址:
</li>
<li>RTMP:实时信息传输协议(Real Time Message Protocol)基于TCP实现持久链接和低延迟通信。流分解成片,客户端和服务端可设置大小(音:64,视频:128)。
参考地址1:
参考地址2:</li>
<li>MMS:串流媒体传送协议(Microsoft Media Server)用来访问并流式接受 Windows Media 服务器中 .asf 文件协议。
参考地址:</li>
<li>HLS:流媒体网络传输协议(HTTP Live Streaming)把数据源分解为基于 HTTP 的片段,每次下载一些。下载数据之前需要一个包含数据的 m3u8 playlist文件来查找可用的媒体流。
参考地址:
</li>
<li>RTP:实时传输协议(Real-time Transport Protocol)被设置为多播协议,和 RTP 协议、RTP 控制协议一起使用。
参考地址:</li>
<li>RTCP:实时传输控制协议(Real-time Transport Protocol)搜集媒体链接统计信息,为 RTP 提供服务质量反馈。
参考地址:
</li>
<li>RTSP:实时流协议,用于建立和控制终端之间的媒体会话,和 RTP 、RTCP 结合的,媒体流传输。
参考地址:</li>
</ul>
媒体封装格式
媒体封装就是把视频数据和音频数据进行按照一定的格式进行封装。我们常见的封装格式:AVI
、MP4
、TS
、FLV
、MKV
和RMVB
。
媒体封装格式简介
下面是对媒体封装格式的整理和简介:
音视频编码格式
在音视频录制完成后为方便传输需要对其进行编码压缩处理,我们常见的音视频编码格式:
视频编码格式:H.264
、H.265(HEVC)
、MPEG4
、MPEG2
、VP9
、VP8
和VC-1
音频编码格式:AAC
、AC-3
、MP3
和WMP
视音频编码格式
编码格式地址
下面是编码格式地址:
H.264 :
地址 | 链接 |
---|---|
地址1 | https://zh.wikipedia.org/wiki/H.264/MPEG-4_AVC |
地址2 | https://abson.github.io/2016/11/15/深入浅出理解视频编码H264结构/ |
H.265 :
地址 | 链接 |
---|---|
地址1 | www.4k123.com/thread-6369-1-1.html |
AAC:
地址 | 链接 |
---|---|
地址1 | www.4k123.com/thread-6369-1-1.html |
AC-3:
地址 | 链接 |
---|---|
地址1 | blog.csdn.net/leixiaohua1020/article/details/11822737 |
MP3:
地址 | 链接 |
---|---|
地址1 | https://zh.wikipedia.org/zh-hans/MP3 |
解码简介
在视频播放过程中我们需要对视频进行解码处理,常见的解码方式:硬解码和软解码。
解码方式简介
编码资料地址
|框架名称 | 资料地址-1 | 资料地址-2
| ------------- |:-------------
|AVFoundation | http://yoferzhang.com/post/20160803AVFoundation01Introduction/ | http://www.superqq.com/blog/2015/08/24/avfoundation-gpuimage-find/|
| VideoToolBox | http://www.4k123.com/thread-6369-1-1.html |
|FFMpeg | blog.csdn.net/leixiaohua1020/article/category/1360795 | www.tuicool.com/articles/22A7na3 |
CPU
& GPU
的参考:
框架名称 | 资料地址-1 |
---|---|
CPU | https://zh.wikipedia.org/wiki/中央处理器 |
GPU | https://zh.wikipedia.org/zh/圖形處理器 |
AVFoundation 框架介绍
AVFoundation 可以用来播放和创建基于时间视听媒体的框架之一,提供基于时间的视听数据详细的 Objective-C上的接口。
AVFoundation 功能介绍
使用 AVFoundation
可以实现视频的播放、编辑、静态媒体的捕捉、输出和时间媒体的表现等功能,如果仅仅是播放电影的话可以使用 AVKit
框架。