上一篇写了关于在 Symbian 平台上实现 H264 编码的 RTSP 流播放的文章, 很多人给我发来了邮件,询问是否支持本地文件的播放。答案当然是可以了。
为了省事,我没有播放 H264 编码的 AVI 或者是 MP4 等格式的文件,而是直接播放的 H264 编码的裸数据。如果要播放 AVI 或者 MP4 文件,就需要对 AVI 或者 MP4 的文件格式进行解析,然后将其中的音频和视频的数据读取出来。现在比较流行的 H264 的封装都采用了 MP4 格式, 或许大家对这个不是很熟悉,但是他的兄弟 3GP 格式想必都听说过了。其实两者差不多,只是其中所谓的 BOX 有所不同,一个被阉割了而已(明朝那些事儿看多了)。
H264 的数据读取最关键的地方就是如何识别一帧,因为 ffmpeg 的 H264 解码是按照一帧一帧解码的,如果送去解码的数据不是完整的一帧可能导致解码失败或者产生马赛克的情况。
以下是我在一个文档中摘取关于帧边界识别的一段,可以方便的解决相关的问题:
帧边界识别简介
H.264 将构成一帧图像所有 nalu 的集合称为一个


发布评论