输入数据是表示h.264帧的字节数组。帧由单个切片(不是多切片帧)组成。
因此,据我所知,我可以像处理slice一样处理这个帧。切片具有报头和切片数据宏块,每个宏块具有其自己的报头。
因此,我必须解析字节数组来提取帧号、帧类型、量化系数(因为我知道每个宏块都有自己的系数?或者我错了?)
你能告诉我,我在哪里可以得到更多关于解析h.264帧字节的详细信息。
(事实上,我已经阅读了标准,但它不是非常具体,我迷失了。)
谢谢
发布于 2011-04-04 01:32:24
264标准有点难读,所以这里有一些提示。
发布于 2011-04-04 01:35:01
标准很难读懂。你可以尝试用它的C (C99)库来分析现有的H.264视频流解码软件的源代码,比如ffmpeg。例如,有记录了here的avcodec_decode_video2函数。你可以得到完整的工作C(打开文件,获取H.264流,迭代通过帧,转储信息,获取色彩空间,将帧保存为原始的PPM图像等) here。或者还有一本很棒的"The H.264 Advanced Video Compression Standard"书,它解释了“人类语言”中的标准。另一种选择是尝试Elecard StreamEye Pro软件(有试用版),这可以给你一些额外的(视觉)视角。
发布于 2012-08-12 12:23:36
实际上,阅读H.264视频编码文档要好得多,也更容易(这只是我的观点)。ffmpeg是一个非常好的库,但是它包含了很多优化的代码。最好看看H.264编解码器的参考实现和官方文档。http://iphome.hhi.de/suehring/tml/download/ -这是到JM编解码器实现的链接。尝试分离解码过程的各个层次,比如包含NAL单元(SPS、PPS、SEI、IDR、SLICE等)的传输层。然后你需要实现VLC引擎(主要是0范围的exp-Golomb代码)。而不是称为CABAC (上下文自适应算术二进制编解码器)的非常困难和强大的编解码器。这是一项相当棘手的任务。解复用过程(在视频数据解包之后进行)也很复杂。你需要完全理解每一个这样的模块。祝好运。
https://stackoverflow.com/questions/5528712
复制相似问题