关于CMMB的介绍,网上能找得到相关资料,我就不细说了,大家可以去放狗。
前段时间完成了Android平台上CMMB的实现,现将实现步骤简单介绍如下。分两个step来实现:
(一)、基于530频点(北京)cctv-news台清流频道(写死一个频点、一个清流频道)的调试:
1、在Android上调通cmmb driver和firmware,使其有正确的输出。
2、ffmpeg在Android上的集成。
3、CMMB Engine的实现(C/S架构)。
4、RingBuffer的实现(用来存放接收到的RTP包)。
5、调度算法(Scheduler)的实现。
6、RTP parser及包的reconstruction。
7、音视频解码的实现(包括audio打包格式的转换等等)。
8、Video render的调试。
9、Audio render的调试。
10、A/V同步的实现。
11、稳定性、健壮性、性能(CPU占用率等)等的调试。
12、UI的实现(由于CMMB重点在于展示内容,所以UI不用做得那么炫)。
以上各部分全部分割个小的模块来实现,然后集成,这样能使整个项目更易于掌控。比如:Video的render,我们就可以拿一段yuv文件来在板子上调试其Overlay输出。
(二)、其次是调试所有能扫描到的频点音视频输出(调试解密、解扰),频点、频道扫描,选台,切台等功能的实现。
难点在(一),细节非常多,某个点卡住了就有可能导致整个项目停滞好几天。把它调通了的话(二)要不了几天就能完成。
有时间的话在详细讨论一下具体实现细节吧!