您的位置:首页 > 移动开发 > Android开发

小艾笔记--H.264视频编解码原理整理(四)

2016-10-21 11:02 323 查看
接近一周的时间没有更新小艾笔记了。原来直播系统开发的好好的,结果项目需求改了,我们全部推翻,着手去开发视频会议。反正都与视频开发相关,就没想那么多,没想到深似海啊。。。简直了。开始着手WebRTC的研究,经过这一周的研究,发现WebRTC是谷歌的开源项目,早就实现的web端与web端之间的视频会议了。但项目需求是Android与Web端的视频会议。。。到现在基本也可以跑的通了!因为开发这个不需要考虑太多的视频编解码的问题。有时间我也会把视频会议系统简单的介绍一下。今天算是完成了当前的任务,所以赶紧过来继续整理笔记了。

主要介绍一下视频数据的来源以及简单说一下DirectShow,是基于Windows的直播开发工具,毕竟我是开发Android的。最后引入H.264视频编解码的核心算法——Xvid。

标准测试序列

实时采集视频

DirectShow实现视频采集

Xvid——MPEG-4视频编解码开源算法

标准测试序列

视频编码算法是对输入的图像序列进行持续的编码,一个流水线作业,然后输出无明确物理含义的压缩码流。视频解码算法则是对码流进行解码,以还原初始的图像帧。编码的过程是有损的,所以解码后的图像质量要低于原始图像。同时编码系统的效率与性能对不同的视频通常有较大的波动,可能场景变换剧烈的视频更能考验编解码系统的性能。一般来说,检验视频编解码系统的性能是用相同的一个视频序列。即标准测试序列。

http://media.xiph.org/video/derf/提供了许多常用的测试序列,包括其他链接如http://trace.eas.asu.edu/yuv/的YUV文件,以及Y4M格式的视频文件。就是一段简单的未经压缩处理的图像帧,由于主流的一些编解码的时候需要YUV420数据,所以Y4M需要转换成YUV420格式,转换可以借助相应的软件。

实时采集视频

设备的摄像头采集原始数据,大多数支持I420格式,少数支持RGB格式,采集的RGB格式需要做YUV转换的操作。转换的简单操作我之前博客有写过,底层的C代码我也贴出来过。需要的可以去看看。

DirectShow实现视频采集

DirectShow是微软公司在ActiveMovie和Video for Windows的基础上推出的新一代基于COM(Component Object Model)的流媒体处理的开发包,与DirectX开发包一起发布。DirectShow使用一种叫Filter Graph的模型来管理整个数据流的处理过程,运用DirectShow,我们可以很方便地从支持WDM驱动模型的采集卡上捕获数据,并且进行相应的后期处理乃至存储到文件中。这样使在多媒体数据库管理系统(MDBMS)中多媒体数据的存取变得更加方便。它广泛地支持各种媒体格式,包括Asf、Mpeg、Avi、Dv、Mp3、Wave等,为多媒体流的捕捉和回放提供了强有力的支持。

DirectSshow功能:

1.音视频多媒体流的捕获和预览

2.支持多种媒体格式的回放

3.集成DirectX技术,增强音视频硬件如声卡、显卡的性能

4.视频文件的回放,非线性编辑等

5.支持DVD、DV等设备

6.定制自己的Filter



DirectSshow采用了模块化结构,尽可能的处理更多的流媒体数据的格式。

Xvid是优秀的MPEG-4视频编解码开源算法

Xvid是开源的MPEG-4视频编解码CODEC,并采用标准C语言开发,部分核心函数实现了MMX/SSE/SSE2媒体汇编指令优化。Xvid工程实现了MPEG-4标准中的ASP(Advanced Simple Profile),且编解码效高,在双核Intel CPU 1.6G、1G内存配置的计算机上,Xvid能实时运行4路D1的视频编码。

Xvid以动态库和静态库的形式供应用程序使用。本书以静态库为对象,展现视频编码和解码的设计过程。通过代码分析深入掌握视频编解码的工作原理。Xvid的 MPEG-4算法的视频编码和解码在同一个工程中。视频编码使用一个函数,根据传入 的参数决定初始化、编码和销毁编码器。Xvid视频解码的函数调用类似编码器。 Xvid的MPEG-4视频编码支持ASP@L5档级,并且绝大部分的视频应用一般不超 过720×576的分辨率,尽管Xvid最高可支4096×4096分辨率的视频编码。实际上在 视频监控应用中CIF(352×288)分辨率更为常用。另外,尽管Xvid支持高档应 用,如B帧编码、1/4精度像素和全局运动补偿GMC,但是在使用如DSP硬件编码 时,上述功能通常做了删减,即实现MPEG-4的SP档级。而在PC机上开发Xvid MPEG-4算法时,上述高档应用可以考虑打开,但是大量额外的计算量与获得的编码 性能并不成比例。所以在后面的介绍中,以MPEG-4的SP档级为主要介绍对象。

总结

今天就到这,感觉没写什么,因为我就是想发发牢骚。。。最近一周宝宝心里苦啊。欢迎吐槽,指出不足之处,我会积极采纳并且改进的,我是Mr.小艾。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息