论文部分内容阅读
FFmpeg是一个应用于音频和视频领域的开源程序,由于它开源、免费和跨平台的特点,备受开发者的青睐。它支持超过90种解码器和协议,例如H.261、H.263、H.264等。FFmpeg由C实现,不仅适用于PC软件,还应用于各种嵌入式设备。它为记录、转换和流化音频、视频提供了一个完整的解决方案,包括了先进的音频、视频编解码器库libavcodec,所有这些特性保证了可移植性和编解码器质量。H.264/MPEG-4第十部分或视频压缩标准A VC (Advanced Video Coding),是目前最为常用的录制、压缩和分配高清晰度视频的标准之一。它是由国际电信联盟远程通信标准化组织(ITU-T)的视频编码专家组(VCEG)与国际标准化组织(ISO)和国际电工委员会(IEC)的运动图像专家组(MPEG)共同开发的一个面向块的基于运动补偿的编解码标准,是两个组织共同合作的产物。H.264被公认为是最好的蓝光光盘的编解码标准之一,所有蓝光光盘播放机必须能够支持H.264解码。它还被广泛的用于流媒体网络资源,如VIMEO, YouTube和iTunes Store中的视频,网络软件如Adobe Flash Player和Microsoft Silverlight, DVB和SBTVD的广播服务,直接广播卫星电视服务,有线广播服务,电视服务,实时视频会议。作为最新的视频压缩标准,在压缩和网络传输质量上H.264/AVC相比以往的标准向前迈进了一大步。本论文首先介绍了H.264视频标准的应用,解码的关键技术和不同于以往视频编码标准的新特点,然后介绍FFmpeg的编译使用和其中主要的结构体和函数,在此基础上,重点对FFmpeg解码流程和FFmpeg中H.264解码器解码流程进行分析。在对以上问题进行系统的分析以后,提出一种从FFmpeg中提取特定功能代码的方法,并利用此方法成功提取出H.264解码器,经过测试,提取出的H.264解码器与FFmpeg解码结果相同,抽取出的解码器代码量相比FFmpeg代码显著降低,总文件数由899个降至60个,代码行数由302327行降至26576行。为工程中H.264解码器的使用提供了便捷之选。