前言:本篇是到大神博客http://blog.csdn.net/leixiaohua1020/article/details/18893769参考和学习,读者感兴趣就直接到大神博客学习就好,因为下面本人总结的笔记,都是参考他的。本人视音频技术零基础,但是乐爱学习,也愿意和你们交流技术,只要我能拿得出技术?,或者你们不要嫌弃我技术不够就行哈。嘻嘻?。
1、生活中的视音频技术
封装格式:
也就是很多电影文件的格式:avi,rmvb,mp4,flv,mkv等等。
概念:把视频数据和音频数据打包成一个文件的规范,叫封装格式。
但是,观看封装格式是无法知道这个视音频文件用了什么视音频编码标准,下面我在Mac电脑上用一个软件来查看视音频文件的编码标准。
其实如果你阅读了大神的博客http://blog.csdn.net/leixiaohua1020/article/details/18893769你就会发现Windows的很多软件自带了这个功能。
看的出:未命名.mov采用MPEG-4的Apple QuickTIme的封装格式(MOV),采用了H.264(AVC)的压缩编码标准。
另外,关于MediaInfo简介和源码分析,可以阅读大神的博客:http://blog.csdn.net/leixiaohua1020/article/details/18893769
2、视频播放的原理
视音频技术:
1、封装技术。
2、视频压缩编码技术
3、音频压缩编码技术
4、流媒体协议技术(应用于网络传输)
视频播放器播放互联网上的视频文件,需要的步骤:
解协议,解封装,解码视音频,视音频同步。
视频播放器播放 本地 上的视频文件,需要的步骤:
解封装,解码视音频,视音频同步。
解析仪的作用:将流媒体协议的数据,解析为标准的相应的封装格式数据。
视音频在网络上传输的时候,常常采用各种流媒体协议,例如HTTP,RTMP,或是MMS等等。
这些协议在传输视音频数据的同事,也会传输一些信令数据。
这些信令数据包括对播放的控制(播放,暂停,停止),或者对网络状态的描述等等。
解协议的过程中会去除掉信令数据而值保留视音频数据。例如:采用RTMP协议传输的数据,经过解协议操作后,输出FLV格式的数据。
解封装的作用:就是讲输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据。
封装格式种类很多,前面有介绍。它的作用就是将已经压缩编码的视频数据和音频数据按照一定的格式放到一起。
解封装的过程就例如FLV格式的数据,经过解封装操作后,输出H.264编码的视频码流和AAC编码的音频码流。
解码的作用:就是将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据。
1、音频的压缩编码标准包含AAC、MP3、AC-3等等
2、视频的压缩编码标准则包含H.264,MPEG2,VC-1等等
解码是整个系统中最重要的雅诗最复杂的一个环节。
通过解码,压缩编码的视频数据输出成为非压缩的颜色数据,例如YUV420P,RGB等等
通过解码,压缩编码的音频数据输出成为非压缩的音频抽样数据,例如PCM数据
视音频同步的作用:就是根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来。
有关几个视频参数对比的资源,是Wikipedia上的,总结的非常好:
流媒体系统对比:
http://en.wikipedia.org/wiki/Comparison_of_streaming_media_systems
封装格式对比:
http://en.wikipedia.org/wiki/Comparison_of_container_formats
视频编码器对比:
http://en.wikipedia.org/wiki/Comparison_of_video_codecs
音频编码格式对比:
http://en.wikipedia.org/wiki/Comparison_of_audio_formats
视频播放器对比:
http://en.wikipedia.org/wiki/Comparison_of_video_player_software
其实,以上技术从视音频流的方向来看,是输出的,但是直播是双向的,而且是需要输入这个过程,其实输入应该就是上面讲的输出过程的逆向过程。关于更详细的技术学习,希望本人能有所学识,以后补充。
关于IOS的音视频解码工具FFmpeg类库的学习地址,也是雷霄骅大神的博客笔记:
最简单的基于FFmpeg的移动端例子:IOS HelloWorld
这位大神还在爱奇艺上发布了授课视频 http://www.iqiyi.com/w_19rru6fjh9.html?src=sharemodclk131212 :