流媒体&音视频开发流程框架

* 前言 <https://blog.csdn.net/Hanghang_/article/details/83689061#_1>
* 流媒体音视频开发的主要框架图 <https://blog.csdn.net/Hanghang_/article/details/83689061#_5>
* 对上述所描述的一些协议和格式的理解
<https://blog.csdn.net/Hanghang_/article/details/83689061#_11>


<>前言


好久没有发过博客了…这几个月以来一直在复习考研,没想到获得了推免资格…闲来无事,最近研究起了流媒体的音视频开发,在网上查了很多的资料,大致地了解了一些皮毛…在这里特别推荐
雷神的博客. <https://blog.csdn.net/leixiaohua1020?viewmode=contents>
…网上有一句话是这么说的,没有看过他的博客都不好说自己入门了音视频,雷神为音视频社区贡献了很多,在这里向他致敬。
以下是我最近学习音视频的一些心得,如有错误,还希望大家指出~

<>流媒体音视频开发的主要框架图

当我刚开始接触流媒体音视频的时候,我是感觉到非常懵逼的,因为你很容易把一种格式当成一种协议,或者是把协议当成了格式。
这是我在ipad上画的一个流媒体音视频开发的流程图,看了这个流程图,小伙伴们是否更加清晰了呢?


<>对上述所描述的一些协议和格式的理解

由于我主要是捣鼓了视频这一部分,所以下面我只介绍视频与图像部分。

1、图像格式:图像格式又可以分类成位图、矢量图形等。常见的图片格式有BMP、JPG/JPEG、PNG、RAW、TIFF等。 以下来自wiki百科:
图形文件格式比较
<https://zh.wikipedia.org/wiki/%E5%9B%BE%E5%BD%A2%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E6%AF%94%E8%BE%83>

2、RGB格式:亦为一种颜色模型,字母R\G\B分别代表红\绿\蓝,通过三种颜色的叠加来得到各种各样的颜色。
我们所看到的屏幕,都是由这三种色光按照不同的比例混合而成的。以下来自wiki百科:RGB颜色模型
<https://en.wikipedia.org/wiki/RGB_color_model>

3、摄像头输出格式:一般会有YUV格式,MJPEG格式和JPEG格式。
这里的JPEG和图片格式JPEG其实是一样的,把视频流取出一帧写入一个JPEG文件就是一张可用的JPEG格式图,所以在这里只讨论MJPEG和YUV格式的区别。YUV其中YUV格式又包含YUV420、YUV422与YUV411等,他也是一种颜色编码的方法,相同的分辨率下,YUV所占的字节数最大,而MJPEG所占分辨率较小,当然,YUV的图像质量也更好。以下为一些比较好的博客:
https://www.cnblogs.com/silence-hust/p/4465354.html
<https://www.cnblogs.com/silence-hust/p/4465354.html>

https://blog.csdn.net/leixiaohua1020/article/details/50534150
<https://blog.csdn.net/leixiaohua1020/article/details/50534150>

4、编码格式:通常有H.264/H.265、MJPEG、MPEG1/2/3/4等。其中H.264属于MPEG4的第十部分,是目前非常主流的视频编码格式。
由于在互联网上传输RGB/YUV格式的数据数据量非常大,所以人们不得不先将原始数据编码以减小数据量
。目前主流的视频编码格式当属H.265/H,264以及MJPEG。以下是介绍视频编码格式的博客:

H.264介绍:https://blog.csdn.net/leixiaohua1020/article/details/50534369
<https://blog.csdn.net/leixiaohua1020/article/details/50534369>

H.264与MJPEG的区别:
https://blog.csdn.net/wenquan107/article/details/39665973?locationNum=14&fps=1
<https://blog.csdn.net/wenquan107/article/details/39665973?locationNum=14&fps=1>

5、视频封装格式:MP4、FLV、RMVB、MKV等等。封装格式就是将已经编码压缩好的视频轨和音频轨按照一定的格式放到一个文件中
,也就是说仅仅是一个外壳,或者大家把它当成一个放视频轨和音频轨的文件夹也可以。说得通俗点,视频轨相当于饭,而音频轨相当于菜,封装格式就是一个碗,或者一个锅,用来盛放饭菜的容器。(源自百度百科)

WIKI百科各封装格式的对比:https://en.wikipedia.org/wiki/Comparison_of_container_formats
<https://en.wikipedia.org/wiki/Comparison_of_container_formats>

6、流媒体协议:RTP、RTSP、HTTP等,所谓流媒体是指采用流式传输的方式在Internet播放的媒体格式。
流媒体又叫流式媒体,它是指商家用一个视频传送服务器把节目当成数据包发出,传送到网络上。用户通过解压设备对这些数据进行解压后,节目就会像发送前那样显示出来。

WIKI百科各流媒体协议的对比:
https://en.wikipedia.org/wiki/Comparison_of_streaming_media_systems
<https://en.wikipedia.org/wiki/Comparison_of_streaming_media_systems>