多媒体开发之h264中的sps---sps信息提取之帧率
------------------------------author:pkf
-----------------------------------------time:2015-8-20
----------------------------------------------------------qq:1327706646
1. sps 中的帧率
2. vui 结构
3 帧率计算
4 代码实现
1. sps 中的帧率
不是所有的编码器都带有帧率信息,在nalu 中的sps里,应为耗费带宽,通过解析nalu 中的数据结构可以发现里面有个标志位:
vui_parameters_present_flag 负责是否带帧率
2. vui 结构
很多
3 帧率计算
framerate = time_scale/2*num_units_in_tick.
好多网络博客说是framerate = time_scale/num_units_in_tick 这个公式,其实是错误的,只有自己动手才能丰衣足食,我用elecard streameye 看了下 实际数据套用这个公式后多了一倍帧率!
4 代码实现
还没实现,流着后面实现
//add 8-30
vui_parameters()
{
}
VUI参数语法:
vui_parameters( ) { C 描述符
aspect_ratio_info_present_flag 0 u(1)
if( aspect_ratio_info_present_flag ) {
aspect_ratio_idc 0 u(8)
if( aspect_ratio_idc = = Extended_SAR ) {
sar_width 0 u(16)
sar_height 0 u(16)
}
}
overscan_info_present_flag 0 u(1)
if( overscan_info_present_flag )
overscan_appropriate_flag 0 u(1)
video_signal_type_present_flag 0 u(1)
if( video_signal_type_present_flag ) {
video_format 0 u(3)
video_full_range_flag 0 u(1)
colour_description_present_flag 0 u(1)
if( colour_description_present_flag ) {
colour_primaries 0 u(8)
transfer_characteristics 0 u(8)
matrix_coefficients 0 u(8)
}
}
chroma_loc_info_present_flag 0 u(1)
if( chroma_loc_info_present_flag ) {
chroma_sample_loc_type_top_field 0 ue(v)
chroma_sample_loc_type_bottom_field 0 ue(v)
}
timing_info_present_flag 0 u(1)
if( timing_info_present_flag ) {
num_units_in_tick 0 u(32)
time_scale 0 u(32)
fixed_frame_rate_flag 0 u(1)
}
nal_hrd_parameters_present_flag 0 u(1)
if( nal_hrd_parameters_present_flag )
hrd_parameters( )
vcl_hrd_parameters_present_flag 0 u(1)
if( vcl_hrd_parameters_present_flag )
hrd_parameters( )
if( nal_hrd_parameters_present_flag | | vcl_hrd_parameters_present_flag )
low_delay_hrd_flag 0 u(1)
pic_struct_present_flag 0 u(1)
bitstream_restriction_flag 0 u(1)
312 ITU-T H.264建议书(03/2005)
if( bitstream_restriction_flag ) {
motion_vectors_over_pic_boundaries_flag 0 u(1)
max_bytes_per_pic_denom 0 ue(v)
max_bits_per_mb_denom 0 ue(v)
log2_max_mv_length_horizontal 0 ue(v)
log2_max_mv_length_vertical 0 ue(v)
num_reorder_frames 0 ue(v)
max_dec_frame_buffering 0 ue(v)
}
}
附录:
http://www.chinavideo.org/archiver/?tid-5256.html
http://blog.csdn.net/android_lee/article/details/6200276
http://blog.csdn.net/ljh081231/article/details/5828997 帧率解析
http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/717/t/237004 ti dm8168 中可以设置vui 帧率方法
http://www.ithao123.cn/content-4258668.html
http://blog.csdn.net/bingqingsuimeng/article/details/9980579 pts
多媒体开发之h264中的sps---sps信息提取之帧率的更多相关文章
- 多媒体开发之h264中的sps---sps信息提取之分辨率宽高提取2
-------------------author:pkf -----------------------------time:2015-8-20 -------------------------- ...
- 多媒体开发之h264的三种字节流格式---annexb 哥伦布/mp4 以及还有一种rtp传输流格式
------------------------------------author:pkf ------------------------------------------time:2015-1 ...
- Android安全开发之WebView中的地雷
Android安全开发之WebView中的地雷 0X01 About WebView 在Android开发中,经常会使用WebView来实现WEB页面的展示,在Activiry中启动自己的浏览器,或者 ...
- JavaEE开发之Spring中Bean的作用域、Init和Destroy方法以及Spring-EL表达式
上篇博客我们聊了<JavaEE开发之Spring中的依赖注入以及AOP>,本篇博客我们就来聊一下Spring框架中的Bean的作用域以及Bean的Init和Destroy方法,然后在聊一下 ...
- JavaEE开发之Spring中的多线程编程以及任务定时器详解
上篇博客我们详细的聊了Spring中的事件的发送和监听,也就是常说的广播或者通知一类的东西,详情请移步于<JavaEE开发之Spring中的事件发送与监听以及使用@Profile进行环境切换&g ...
- JavaEE开发之Spring中的条件注解组合注解与元注解
上篇博客我们详细的聊了<JavaEE开发之Spring中的多线程编程以及任务定时器详解>,本篇博客我们就来聊聊条件注解@Conditional以及组合条件.条件注解说简单点就是根据特定的条 ...
- JavaEE开发之SpringMVC中的自定义拦截器及异常处理
上篇博客我们聊了<JavaEE开发之SpringMVC中的路由配置及参数传递详解>,本篇博客我们就聊一下自定义拦截器的实现.以及使用ModelAndView对象将Controller的值加 ...
- JavaEE开发之SpringMVC中的静态资源映射及服务器推送技术
在上篇博客中,我们聊了<JavaEE开发之SpringMVC中的自定义拦截器及异常处理>.本篇博客我们继续的来聊SpringMVC的东西,下方我们将会聊到js.css这些静态文件的加载配置 ...
- JavaEE开发之SpringMVC中的自定义消息转换器与文件上传
上篇博客我们详细的聊了<JavaEE开发之SpringMVC中的静态资源映射及服务器推送技术>,本篇博客依然是JavaEE开发中的内容,我们就来聊一下SpringMVC中的自定义消息转发器 ...
随机推荐
- 每日英语:The Risks of Big Data for Companies
Big data. It's the latest IT buzzword, and it isn't hard to see why. The ability to parse more infor ...
- 【Session】Tomcat中Session持久化到文件系统或数据库
参考的优秀文章 Tomcat Session 持久化 Package org.apache.catalina.session 最近同事在做Session外置的功能,我对Session持久化.共享也不太 ...
- HA&Federation【转】
转自:http://blog.csdn.net/tutucute0000/article/details/39756123 从nameNode1.namenode2克隆出namenode3.namen ...
- export default与export的区别
1.export default 和export都可以用于导出常量,函数,文件,模块等: 2.可以在模块中通过import+(常量 | 函数 | 文件 | 模块)名的方式,将其导入,以便能够对其进行使 ...
- Mac使用pyenv安装Python出现The Python zlib extension was not compiled. Missing the zlib错误
Mac使用pyenv安装Python出现The Python zlib extension was not compiled. Missing the zlib错误 参考这里,详细如下: On Mac ...
- Windows下使用MINGW编译ffplay
之前考虑到需要快速配置编译ffplay,使用了比较暴力的方法,具体可以参考编译ffplay.exe简化版. 这里介绍下相对规范的做法. 前提:已经安装了Windows下GCC开发环境--MINGW+m ...
- LeetCode: Pow(x, n) 解题报告
Pow(x, n) Implement pow(x, n). SOLUTION 1: 使用二分法. 1. 负数的情况,使用以下的公式转化为求正数power,另外,考虑到MIN_VALUE可能会造成越界 ...
- Joint Extraction of Entities and Relations论文解析
1. 前言 实体和关系的联合抽取问题作为信息抽取的关键任务,其实现方法可以简单分为两类: 一类是串联抽取方法.传统的串联抽取就是首先进行实体抽取,然后进行关系识别.这种分开的方法比较容易实现,而且各个 ...
- mysql防止误删除的方法
为了防止在更新和删除的时候,没有写where条件而对全部数据进行操作,mysql提供了一个参数来防止此情况的发生 需要在启动mysql的时候,增加参数--i-am-a-dummy含义是我是新手,或者使 ...
- json2
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Jso ...