我正在处理一个包含H.264流的MPEG-2 TS视频,我正在通过扫描PAT、PMT、PES等来查找存储在该流中的视频属性。
我能够阅读PAT,PMT,和基本流类型和PID。在这里,我想找到决议和框架(fps)。它们是否位于PES头中,还是在其他地方?他们不是在派特或PMT。
下面,传输流数据包编辑器能够找到两种不同的信息,一个本身和另一个来自Haali媒体解码器助手编解码器。如何获得第一个:

欢迎使用伪码。
发布于 2014-08-20 09:08:05
我不确定MPEG2TS头中的高度宽度信息的可用性。因为TS文件可以有多个程序。但是,如果您只针对由H.264基本流构成的TS文件,那么您将从H.264基本流的SPS获取这些信息。
每个H.264帧以四个或三个字节序列头0x000x000x01或0x000x000x000x01开始。如果在开始标头后用下一个字节执行和操作等于0x07,则该框架是SPS帧。
例如SPS框架0x000x000x0x01 0x67操作和操作(0x67和0x1F) = 0x07
解析SPS头也不是一件容易的事情,但您可以在ffmpeg源代码中找到详细信息。
希望这能有所帮助。
发布于 2014-09-24 12:14:51
不,他们没有出现在PES头上。要从MPEG2 2-TS中的H.264视频中找到分辨率和帧速率,需要从H.264流中解析SPS(序列参数集)。
以下是解析H.264 NAL(网络适配层)单元的步骤:
这个ITU链接提供了有关h.264标准的文档。。
参见7.3.2.1.1节:序列参数集数据语法给出了在SPS中查找参数的语法。
发布于 2014-08-23 06:53:34
我假定这方面的工作代码驻留在FFMPEG项目的ff探头二进制文件中,因为它产生了所需的输出:
$ ffprobe -v quiet -show_streams output1.mp4
[STREAM]
index=0
codec_name=h264
... // A bunch of stream data
width=1280
height=1024
sample_aspect_ratio=1:1
display_aspect_ratio=5:4
....
r_frame_rate=30000/1001
avg_frame_rate=30000/1001
time_base=1/30000
...
[/STREAM]https://stackoverflow.com/questions/25398584
复制相似问题