首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在H.264 MPEG-2 TS中找到分辨率和帧值?

如何在H.264 MPEG-2 TS中找到分辨率和帧值?
EN

Stack Overflow用户
提问于 2014-08-20 06:59:55
回答 4查看 14.4K关注 0票数 2

我正在处理一个包含H.264流的MPEG-2 TS视频,我正在通过扫描PAT、PMT、PES等来查找存储在该流中的视频属性。

我能够阅读PAT,PMT,和基本流类型和PID。在这里,我想找到决议和框架(fps)。它们是否位于PES头中,还是在其他地方?他们不是在派特或PMT。

下面,传输流数据包编辑器能够找到两种不同的信息,一个本身和另一个来自Haali媒体解码器助手编解码器。如何获得第一个:

欢迎使用伪码。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-08-20 09:08:05

我不确定MPEG2TS头中的高度宽度信息的可用性。因为TS文件可以有多个程序。但是,如果您只针对由H.264基本流构成的TS文件,那么您将从H.264基本流的SPS获取这些信息。

每个H.264帧以四个或三个字节序列头0x000x000x010x000x000x000x01开始。如果在开始标头后用下一个字节执行和操作等于0x07,则该框架是SPS帧。

例如SPS框架0x000x000x0x01 0x67操作和操作(0x67和0x1F) = 0x07

解析SPS头也不是一件容易的事情,但您可以在ffmpeg源代码中找到详细信息。

希望这能有所帮助。

票数 5
EN

Stack Overflow用户

发布于 2014-09-24 12:14:51

不,他们没有出现在PES头上。要从MPEG2 2-TS中的H.264视频中找到分辨率和帧速率,需要从H.264流中解析SPS(序列参数集)。

以下是解析H.264 NAL(网络适配层)单元的步骤:

  1. 解析NAL单元前缀(NAL单元前缀为3(0x00,0x00,0x01)或4(0x00,0x00,0x00,0x01)字节代码)然后标头(前缀后面的下一个字节)
  2. 从头字节检查NAL单元的类型(最后5位)。
  3. 如果NAL单元为7类型,则此NAL单元为SPS NAL单元,然后解析代码。

这个ITU链接提供了有关h.264标准的文档。

参见7.3.2.1.1节:序列参数集数据语法给出了在SPS中查找参数的语法。

票数 5
EN

Stack Overflow用户

发布于 2014-08-23 06:53:34

我假定这方面的工作代码驻留在FFMPEG项目的ff探头二进制文件中,因为它产生了所需的输出:

代码语言:javascript
复制
$ 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]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25398584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档