H264裸流分析中,能获取哪些信息?

从H264的裸流中,PPS,SPS中,一定可以获取到的,有图像的宽,高信息。

这部分信息的提取,用Stream eye 分析:

这里需要特别提一下这两个参数:
  pic_width_in_mbs_minus1 = 119(1920)
  pic_height_in_map_units_minus1 = 67(1088)
分别表示图像的宽和高,以宏块(16x16)为单位的值减1
因此,实际的宽为 (119+1)*16 = 352,高:(67+1)*16=1088

开始的时候,我还以为是哪里不对,1080咋是1088?后面才知道,1080是因为简称,实际是1088,因为要16的倍数。

===================================

给一段264的码流,可以得出帧率信息吗?(来自:http://bbs.chinavideo.org/forum.php?mod=viewthread&tid=17285&highlight=%D6%A1%C2%CA)
下面是网上找到的:
H.264码流中一般没有帧率,比特率信息到使可以得到,你参考码流语法,但是有的吗流有VUI信息,他里面有个标志 timing_info_present_flag 若等于1,则码流中有num_units_in_tick 和 time_scale。
framerate = time_scale/num_units_in_tick.

下面是264标准中给出:

timing_info_present_flag equal to 1 specifies that num_units_in_tick, time_scale and fixed_frame_rate_flag are present in the bitstream. timing_info_present_flag equal to 0 specifies that num_units_in_tick, time_scale and
fixed_frame_rate_flag are not present in the bitstream.

num_units_in_tick is the number of time units of a clock operating at the frequency time_scale Hz that corresponds to one increment (called a clock tick) of a clock tick counter. num_units_in_tick shall be greater than 0. A clock tick is the minimum interval of time that can be represented in the coded data. For example, when the frame rate of a video signal is 30 000 ÷ 1001 Hz, time_scale may be equal to 60 000 and num_units_in_tick may be equal to 1001. See Equation C-1.

time_scale is the number of time units that pass in one second. For example, a time coordinate system that measures time using a 27 MHz clock has a time_scale of 27 000 000. time_scale shall be greater than 0.

从上面红色标注的例子看,应该是framerate=(time_scale/num_unit_in_tick)/2;

PS:后面我专门查看了H264的标准,在VUI里面,确实看到了这段话,所以从上面可以知道,我分析的那段码率的帧率为:framerate=50/1/2=25fps;这确实是我编码的时候设置的帧率。

这是timing_info_present_flag =1才可以知道。如果在timing_info_present_flag =0的时候,那怎么获取呢?

帖子里有人回答了:

但不是每一段264码流都包含了VUI,这部分可有可无,264只是一种压缩标准,但是到实际应用的时候,一般都需要封装到某种容器里,你所需要的帧率是在容器中指定的。

时间: 2024-10-05 23:58:25

H264裸流分析中,能获取哪些信息?的相关文章

转:ffmpeg学习(二) 通过rtsp获取H264裸流并保存到mp4文件

本篇将使用上节http://www.cnblogs.com/wenjingu/p/3977015.html中编译好的库文件通过rtsp获取网络上的h464裸流并保存到mp4文件中. 1.VS2010建立VC++  win32控制台项目 2.在工程目录下建立lib目录和include目录,将已编译好的lib拷打lib下,include拷到include下,dll拷到Debug目录下 3.工程属性--配置属性--VC++目录--包含目录,添加ffmpeg头文件目录及其他第三方头文件目录 链接器--常

通过GeoIP2分析访问者IP获取地理位置信息

原文链接:http://blog.csdn.net/johnnycode/article/details/42028841 MaxMind GeoIP2 服务能识别互联网用户的地点位置与其他特征,应用广泛,包括个性化定制内容.诈欺检测.广告定向.网站流量分析.执行规定.地理目标定位.地理围栏定位 (geo-fencing)以及数字版权管理.目前使用 GeoIP 更多是配合Nginx或Apache服务器进行日志分析获取网站访问量地域分布状况. GeoIP 分为商业版和免费版,免费版比商业版精度差了

SpringBoot项目中,获取配置文件信息

1.在配置文件中设置信息,格式如下 wechat: mpAppId: wxdf2b09f280e6e6e2 mpAppSecret: f924b2e9f140ac98f9cb5317a8951c71 如果是多级目录,则 project: url: sell: http://localhost:8080 2.获取配置文件信息(三种方法) [email protected] package com.xiong.sell.config; import lombok.Data; import org.s

h264码流分析工具

1.codecvisa: http://www.codecian.com/downloads.html 2.Three ways comes to mind (if you are looking for something free, else google "h264 analysis"):    a)  Download h.264 parser from:    http://www.w6rz.net/h264_parse.zip (from this thread @ doo

Android多媒体分析-通过MediaStore获取Audio信息

[java] view plaincopy public void getAlldata() { ContentResolver cr = getApplication().getContentResolver(); if (cr == null) { return; } // 获取所有歌曲 Cursor cursor = cr.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Audi

C#实现多文件上传,写到文件夹中,获取文件信息以及下载文件和删除文件

前台:.js //上传附件 function uploadAttachment() { if ($("#Tipbind").attr('checked')) { var ip = $("#TunBandIP").val(); if ($.trim(ip) == 0) { return $.messager.show({ title: '提示', msg: '请先选择IP' }); } $('#ImprotDlg').dialog('open'); uploadFy(

Android中的获取内存信息的相关命令

相关命令: adb shell dumpsys meminfo > dumpsys_meminfo.txt adb shell cat /sys/kernel/debug/ion/ion_mm_heap > ion_mm_heap.txt adb shell cat /proc/mali/memory_usage > gpu_mali_memory_usage.txt adb shell ps > ps.txt adb shell cat /proc/vmallocinfo >

全志Tina_dolphin播放音视频裸流(h264,pcm)验证

最近在验证tina对裸流音视频的支持,主要指h264视频裸流及pcm音频裸流. 在原始sdk中有针对很多video和audio类型的parser,但就是没有找到pcm和h264的parser,所以需要自己搞个parser,同时找到audio播放的的接口写个demo来验证. 所有支持解析类型的parser方法都在目录:/Homlet-Tina-H2_H3/package/allwinner/tina_multimedia/libcedarx/libcore/parser下 aac Android.

Lua 与C/C++ 交互系列:动态注册枚举enum到Lua Code中,在运行时在Lua Code中获取内省信息

在Lua 5.1 Reference Manual  对于Lua 值和类型的介绍.Lua是一个动态语言,在Lua中变量仅仅有值而没有类型.所以在Lua中的变量不需要声明.所以的值本身包含类型. 其实Lua 包含一种运行时类型识别,通过type()函数,可以在运行时获取值的类型. 信息来自: Lua 5.1 Reference Manual  Values and Types Lua is a dynamically typed language. This means that variable