前言
视频的编解码是数字视频开发应用中的最主要方面,海量的视频数据为便于存储和传输、节约资源,必须进行一定程度的编码压缩。视频编解码在数字多媒体应用中占有极为重要的比重,已经形成了一个巨大的产业。从VCD、DVD到现在的MP4、IPTV、硬盘录像机、可视电话、高清电视等;从早期的闭路电视监控CCTV(Closed Circuit Television)到现在的数字视频录像DVR(Digital Video Recorder)等。编解码算法是上述系统中的核心技术,因此掌握自主产权的视频算法就极其重要。
由于视频编解码原理较复杂,涉及了许多数学知识——从数据的DCT/DWT变换,到基于图像块的运动估计和运动补偿,均匀量化和非均匀量化技术,还有可变长度熵编码如Huffman编码和算术编码等。视频编解码协议复杂,系统代码量大,功能模块多。幸运的是,大量开源视频算法为我们学习和实践视频算法提供了实用的算法工程。主流视频编解码算法中当数MPEG-4/H.264算法标准,但其协议标准仅规定了码流语义,并没有明确如何进行工程实现。Xvid是公认优秀的MPEG-4开源视频编、解码算法工程,X264是公认优秀的H.264开源视频编码算法工程。这些开源算法一方面主要采用跨平台的C语言编程,另一方面做核心模块面向常用CPU(Intel/AMD)的多媒体汇编指令做了系列优化。
基于可编程芯片(如DSP/FPGA)实时实现视频编解码算法是一件非常具有挑战性的工作,一方面需要对复杂算法本身深入理解;另一方面需要对研发平台的数据处理特点及汇编指令等有相当经验的把握。但对于一般的高年级本科生甚至研究生来说,同时熟练掌握算法和实现平台可能就不是一件容易的事情了。笔者以自己多年从事音视频编解码算法开发的切身体会出发,总结开发技术要点、凝练开发技巧、分享实战项目经验,为致力于视频编解码算法优化的研究开发人员提供指南和参考。
从目前市面上有关视频编解码的书籍来看,原理介绍性的多,工程实用性的少;技术规格翻译的多,项目实战经验共享的少。笔者几年前就想编写一本视频编解码实用性强的著作。正是基于上述各种因素的分析,终于催生了本书。笔者期待读者快速步入视频编解码开发的技术殿堂。
同时,笔者也真诚期望本书能够抛砖引玉,与相关技术人员共同探讨和学习,信息分享、共同进步。
读者对象
● 高年级本科生在毕业设计阶段,其工程能力弱,时间短任务重,迫切需要该类指南;
● 我国硕士研究生,特别是工程硕士,实际在校时间短,理论基础相对薄弱而工程能力较强,迫切需要项目实践经验参考;
● 专业/学术硕士的课题一方面有视频编解码的直接应用,另一方面又有基于视频编解码的其他应用,如目标识别或跟踪,实用工程案例可提供支持;
● 公司企业的算法优化工程师、新员工,短期内掌握并提高质量完成视频算法优化技术难度较大,而视频算法是系统核心技术,为提升员工自身价值需掌握核心算法优化技术。
本书约定
本书所使用的软件有:Windows XP(SP3)、Visual C++ 2005简体中文专业版、CCS 3.3。
致谢说明
本书由路锦正编著,同时参加编写的还有李伟、张强林、吴艳、万雷、王呼佳、赵腾伦、王斌、魏雪辉、赵会春、王晓、余松、夏慧军、陈军等老师。本书吸收了由笔者主编的《Visual C++音频/视频处理技术及工程实践》一书中的部分章节,并对多数章节做了修改、补充,同时吸收了前书的读者反馈意见,使本书更贴近实用。本书是笔者在假期完成的,故牺牲了陪家人的时间,因此,特别感谢妻子郭晶女士的无私奉献和默默支持,感谢女儿带给我的无穷快乐和对工作的无穷动力。感谢成都道然科技有限责任公司(www.dozan.cn)以及徐津平老师对著书工作的大力支持。另外,本书参考了网络上的部分公开资源,在此对其所有者一并表示感谢。
由于时间仓促,加之水平有限,书中不足之处在所难免,恳请读者批评指正。最后还需要感谢电子工业出版社辛苦工作的老师们,他们为本书的顺利出版付出了很多辛勤劳动。
路锦正
2011年8月