我的非线性视频编辑器MiaoVideoCut(0) --- 音视频播放流程

1.视频从采集到播放的流程

        以我们电脑保存的电影说起,其实它就是通过摄像机和话筒对音视频采集、编码、封装之后的数据。当我们使用播放器进行观看的时候就是进行逆向过程解封装,解码音视频,然后把音频视频数据分别发送到我们的显示器和音响(音视频同步)。互联网的发展让在线视频的播放更加普及,因此视频的在线传输则需要用到相关的流媒体协议(rtmp协议,rtsp协议)。

视频从采集到播放的流程


视频播放器播放一个互联网上的视频文件

视频从采集到播放的流程图说明:

1.视频数据采集:

    通过特定的硬件设备采集视频图像(一般为光学镜头),通过数字量化将光学图像转变为数字图像,从而可以用来进行数据的压缩处理和传输。此时的数据为原始的视频像素数据一般有(YUV数据(居多)和RGB数据)。eg.摄像机采集的数据就是YUV格式的。

2.音频数据采集:

通过特定的硬件设备采集音频图像(一般为话筒),通过数字量化将声波转变为数字信号,从而可以用来进行数据的压缩处理和传输。此时的数据为原始的音频数据一般有(PCM数据)。

3.视频数据压缩编码:

由于采集的原始视频像素数据用数字表示,需要很大的存储空间(1小时原始视频占用空间约559.872G)。因此数据的压缩是很有必要性的。常用的压缩标准有H.264/AVC,H.265(未来趋势),MPEG2,MPEG4等。视频编码的主要作用是将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量。

音频数据压缩编码:同样具有压缩的必要性,常用的压缩标准有AAC,MP3,AC-3等等。

数据内容的封装:按照一定的封装格式将压缩编码后的视频数据和音频数据进行封装,最后封装成一个文件。视频文件的后缀名为avi、MP4、rmvb、flv等都是按照相应的标准封装的音视频文件。(封装格式的主要作用是把视频码流和音频码流按照一定的格式存储在一个文件中。)

至此,封装完的文件就可以上传到网上或者服务器了。如果是电影这种完整的文件就可以上传到服务器供人们下载和播放,如果是视频直播则需要不断的把直播内容发送到互联网供人们实时观看。

网络流媒体协议:主要是用于直播,将封装完成的数据(有时也可以不用封装,直接用压缩完成的视频或音频码流)按照特定的网络协议发布到服务器。常用的网络传输协议有rtmp协议,rtsp协议,http协议 ##问等。

解析网络协议:同样是用于直播,指用户通过特定的网络协议下载到直播数据,需要解析协议,得到音视频的封装数据(有时也为没有封装的视频或者音频码流)。解协议的作用,就是将流媒体协议的数据,解析为标准的相应的封装格式数据。视音频在网络上传播的时候,常常采用各种流媒体协议,例如HTTP,RTMP,或是MMS等等。这些协议在传输视音频数据的同时,也会传输一些信令数据。这些信令数据包括对播放的控制(播放,暂停,停止),或者对网络状态的描述等。解协议的过程中会去除掉信令数据而只保留视音频数据。例如,采用RTMP协议传输的数据,经过解协议操作后,输出FLV格式的数据。

播放器:得到下载的音视频数据文件后,我们就可以使用播放器进行播放了,这里播放器包括我们常用的客户端(爱奇艺、快播、暴风影音等)、网页中内嵌的播放器(flash等)、特定的播放设备(电视机、MP4等)。播放器的功能就是上述的逆过程通过解码得到相关的音视频原始数据进行播放。

解析文件封装格式(解封装):把avi、mp4、flv、ts等封装格式解析得到压缩的视频压缩数据和音频压缩数据。解封装的作用,就是将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据。封装格式种类很多,例如MP4,MKV,RMVB,TS,FLV,AVI等等,它的作用就是将已经压缩编码的视频数据和音频数据按照一定的格式放到一起。例如,FLV格式的数据,经过解封装操作后,输出H.264编码的视频码流和AAC编码的音频码流。

解码视频编码压缩数据:按照特定的视频码流压缩标准对压缩数据进行解码,得到原始视频YUV或者RGB数据,这样就可以把数据发送到我们的显卡进行图像显示。解码的作用,就是将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据。音频的压缩编码标准包含AAC,MP3,AC-3等等,视频的压缩编码标准则包含H.264,MPEG2,VC-1等等。解码是整个系统中最重要也是最复杂的一个环节。通过解码,压缩编码的视频数据输出成为非压缩的颜色数据,例如YUV420P,RGB等等;压缩编码的音频数据输出成为非压缩的音频抽样数据,例如PCM数据。

解码音频编码压缩数据:按照特定的音频码流压缩标准对压缩数据进行解码,得到原始的音频PCM数据,这样就可以把数据发送到我们的声卡进行播放。

参考:

定性说明下视频压缩的必要性。

我们知道视频其实就是一幅一幅的图像连续播放的过程。视频一般为1秒不少于25帧,不然的话会感觉到画面卡顿,那么一小时的视频就需要60*60*25张图像的原始数据视频,图像的大小为我们计算的屏幕大小(1920*1080),屏幕每个像素点用颜色用红绿蓝三色值表示,每一种颜色占用计算1一个字节计算所需存储空间如下:

每幅图像大小 = 1920*1080*3*1B;

存储空间 = 60*60*25*每幅图像大小=60*60*25*1920*1080*3*

B=559872000000B≈559.872G

这样的话我们电脑的存储空间是远远不够我们存放多部电影的。因此视频压缩存在很大的必要性。

2.网络音视频平台

        现有的网络视音频服务主要包括两种方式:点播和直播。点播意即根据用户的需要播放相应的视频节目,这是互联网视音频服务最主要的方式。绝大部分视频网站都提供了点播服务。直播意即互联网视音频平台直接将视频内容实时发送给用户,目前还处于发展阶段。直播在网络电视台,社交视频网站较为常见。

1.直播平台


网络直播平台参数对比

        直播服务普遍采用了RTMP作为流媒体协议; 封装格式,视频编码,音频编码方面,无一例外的使用了FLV + H.264 + AAC的组合。FLV是RTMP使用的封装格式,H.264是当今实际应用中编码效率最高的视频编码标准,AAC则是当今实际应用中编码效率最高的音频编码标准。视频播放器方面,都使用了Flash播放器。Flash播放器如今已经安装在全球99%的电脑上,并且与浏览器结合的很好。因此这种流媒体直播平台可以实现“无插件直播”,极大的简化了客户端的操作。

2.点播平台

点播平台参数对比

        可以看出,点播服务普遍采用了HTTP作为流媒体协议,H.264作为视频编码格式,AAC作为音频编码格式。采用HTTP作为点播协议有以下两点优势:一方面,HTTP是基于TCP协议的应用层协议,媒体传输过程中不会出现丢包等现象,从而保证了视频的质量;另一方面,HTTP被绝大部分的Web服务器支持,因而流媒体服务机构不必投资购买额外的流媒体服务器,从而节约了开支。点播服务采用的封装格式有多种:MP4,FLV,F4V等,它们之间的区别不是很大。视频编码标准和音频编码标准是H.264和AAC。这两种标准分别是当今实际应用中编码效率最高的视频标准和音频标准。视频播放器方面,无一例外的都使用了Flash播放器。


该文章借鉴自 https://blog.csdn.net/wf021017/article/details/78211887 和  https://blog.csdn.net/leixiaohua1020/article/details/18893769

你可能感兴趣的:(我的非线性视频编辑器MiaoVideoCut(0) --- 音视频播放流程)