如何用C语言取出H.264ES文件里的nal(sps,pps)信息

abeous 发布于 2012/01/03 20:57
阅读 7K+
收藏 0

如何用C语言取出H.264ES文件里的nal(sps,pps)信息。比如width, height, profile等等

请高手指点指点。。。 

谢谢。

加载中
0
pizigou
pizigou
你需要熟悉的是 H.264ES 编码规范,然后就能透过规范用任何你熟悉的语言来解析这种规范的文件。
0
Jackarain
Jackarain

解析sps,pps的代码在ffmpeg里面就有, 抄出来就行了, 我以前也自己写过...
ffmpeg的libavcodec/h264_parser.c,
h264_ps.c
函数
ff_h264_decode_seq_parameter_set
ff_h264_decode_picture_parameter_set
自己可以看代码.

0
abeous
abeous

谢谢!

之后我也写了一个不知道对不对。

请高手指点。

https://github.com/dongriab/H.264/blob/master/H.264.c

0
Jackarain
Jackarain

我写的那个大致有1000多行代码呢, 都还有pps中的扫描矩阵部分解析没完成(主要一般h264的扫描矩阵参数都是固定的, 也就没做了), 我是参考文档和ffmpeg的源码写的, 有机会再把代码贡献出来.

你这个貌似简单了些, 肯定有很多情况可能没考虑到的, 我没仔细阅读代码了, 不过如果只是读取profile和width以及height代码也不会多, 只需要解析sps就行了, ...
粗略的指出几点, 像profile是PROFILE_HIGH的时候,需要读取chroma_format_idc,
bit_depth_luma_minus8,
bit_depth_chroma_minus8,
b_qpprime_y_zero_transform_bypass,
seq_scaling_matrix_present_flag,
再读取log2_max_frame_num_minus4, 而你这里没作判断就直接读取log2_max_frame_num_minus4字段了.有空看下ffmpeg的代码就行了.

0
abeous
abeous

高手!

有道理,有时间我看看ffmpeg代码。

谢谢了

返回顶部
顶部