语言收获H.264录像分辨率的方法

一方面产品结构图从文字知道上来说就便于令人困惑:产品音讯结构图、产品功用布局图不都得以简称为产品结构图嘛。

 

相较于功能结构图和音信结构图,产品结构图的定义就很凌乱和混淆了,为啥会产出那种情况吗?

    在H.264码流中,都是以0x00 0x00 0x01 也许 0x00 0x00 0x00
0x01为开端码的(在作者的应用中为后世),之后通过检查和测试早先码后第三个字节的后八人是不是为7(00111)来判定其是否为SPS。获得SPS之后,就能够分析出摄像的分辨率。SPS中有八个分子,pic_width_in_mbs_minus1和pic_height_in_map_units_minus_1,分别代表图像的宽和高,可是要专注的是它们都以以16为单位(在面积上正是以16*16的块为单位)再减1,所以实际上的宽是(pic_width_in_mbs_minus1

在一款产品的设计进度中,功用布局图是必须的,新闻结构图视产品和PM本人而定,平日大家早先分明了产品功效结构图(产品效能框架)之后才开端绘制产品消息结构图。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

您还在问产品结构图到底是音信结构图依旧职能布局图吗?那里有微信的其实例图帮忙你更好地驾驭那组时局三姊妹图类。

以下部分 转自 http://blog.csdn.net/pkueecser/article/details/7367641

支持PM梳理复杂情节的消息整合,幸免消息内容在展现进程中出现遗漏、混乱、重复;

转载http://guoyb.com/Tech/34.html

作为支付工程师建立数据库的参照根据;

   
以下内容首要参照了那篇小说:http://www.myexception.cn/internet/586390.html

小说末了:再一次表明全体转发小说仅供就学,谢谢PM_allen老师的享用,要是喜欢我们的篇章点关心**吧!比心呦!**

 

一派现有网上流传的竞品分析文书档案、产品体验文书档案、P汉兰达D文书档案有无数是由产品新人模仿前辈流传出来的文档模板来写的。但令人窘迫的是,有局部同学没有实行周全深切地询问。日常在一篇小说中,前边便是产品的功力布局图,结果图中是产品功能有,产品信息要素也有,没有通晓功能结构图的概念。而新兴的初学者又从这几个小说中去询问学习产品功用布局图、产品音讯结构图,导致恶性循环;

 

总结

 

此地介绍3个小窍门,当二个次级效率模块反复出今后分化的Tab效用模块中的时候,我们就能够考虑将其拆分出来作为主功效模块,因为那一个时候表示这么些次级功能模块在成品的业务流程中的话非常生死攸关,而且那也得以让大家的成品效果布局图尤其从简清楚。如上边“微信功能结构图(V6.5.21)”中的搜索模块就同时出现在了Tab中的微信成效模块和通信录作用模块。

动用CR-VTP传输H264的时候,必要用到sdp协议描述,当中有两项:Sequence
Parameter Sets (SPS) 和Picture
Parameter Set (PPS)须要利用,那么这两项从何地获得呢?答案是从H264码流中获取.在H264码流中,都以以”0x00
0x00 0x01″恐怕”0x00 0x00 0x00
0x01″为开头码的,找到初始码之后,使用起来码之后的首先个字节的低八位判断是不是为7(sps)也许8(pps),
及data[4] & 0x1f == 7 || data[4] & 0x1f ==
8.然后对获得的nal去掉起首码之后展开base64编码,获得的消息就能够用来sdp.sps和pps必要用逗号分隔断来.

首先主功用模块应该是成品在整机业务流程中的各种大旨功效模块,大家可透过业务流程中所涉及到的法力要求去提炼出主功效模块,提炼实现后再经过业务流程走查一遍,看是还是不是有遗漏的主作用模块。

 

语言 1

       H.264码流的流音讯都存款和储蓄在了奇特的协会中,叫做SPS(Sequence
Parameter Set)。要分析SPS就须要明白有些H.264码流的格式新闻。

2、作用

什么分析SDP中包涵的H.264的SPS和PPS串

 

http://www.pernet.tv.sixxs.org/thread-109-1-1.html

SDP中的H.264的SPS和PPS串,包蕴了初始化H.264解码器所急需的音信参数,包罗编码所用的profile,level,图像的宽和高,deblock滤波器等。
是因为SDP中的SPS和PPS都以BASE64编码格局的,不易于了然,附件有二个工具软件能够对SDP中的SPS和PPS进行辨析。
用法是在命令行中输入:
spsparser sps.txt pps.txt output.txt

例如sps.txt中的内容为:
Z0LgFNoFglE=
pps.txt中的内容为:
aM4wpIA=

说到底分析的到的结果为:

Start dumping SPS:
  profile_idc = 66
  constrained_set0_flag = 1
  constrained_set1_flag = 1
  constrained_set2_flag = 1
  constrained_set3_flag = 0
  level_idc = 20
  seq_parameter_set_id = 0
  chroma_format_idc = 1
  bit_depth_luma_minus8 = 0
  bit_depth_chroma_minus8 = 0
  seq_scaling_matrix_present_flag = 0
  log2_max_frame_num_minus4 = 0
  pic_order_cnt_type = 2
  log2_max_pic_order_cnt_lsb_minus4 = 0
  delta_pic_order_always_zero_flag = 0
  offset_for_non_ref_pic = 0
  offset_for_top_to_bottom_field = 0
  num_ref_frames_in_pic_order_cnt_cycle = 0
  num_ref_frames = 1
  gaps_in_frame_num_value_allowed_flag = 0
  pic_width_in_mbs_minus1 = 21
  pic_height_in_mbs_minus1 = 17
  frame_mbs_only_flag = 1
  mb_adaptive_frame_field_flag = 0
  direct_8x8_interence_flag = 0
  frame_cropping_flag = 0
  frame_cropping_rect_left_offset = 0
  frame_cropping_rect_right_offset = 0
  frame_cropping_rect_top_offset = 0
  frame_cropping_rect_bottom_offset = 0
  vui_parameters_present_flag = 0

Start dumping PPS:
  pic_parameter_set_id = 0
  seq_parameter_set_id = 0
  entropy_coding_mode_flag = 0
  pic_order_present_flag = 0
  num_slice_groups_minus1 = 0
  slice_group_map_type = 0
  num_ref_idx_l0_active_minus1 = 0
  num_ref_idx_l1_active_minus1 = 0
  weighted_pref_flag = 0
  weighted_bipred_idc = 0
  pic_init_qp_minus26 = 0
  pic_init_qs_minus26 = 0
  chroma_qp_index_offset = 10
  deblocking_filter_control_present_flag = 1
  constrained_intra_pred_flag = 0
  redundant_pic_cnt_present_flag = 0
  transform_8x8_mode_flag = 0
  pic_scaling_matrix_present_flag = 0
  second_chroma_qp_index_offset = 10

/////////////////////////////////////////////////////////////////////////////////////////////////
此间需求特别提一下那八个参数
pic_width_in_mbs_minus1 = 21
  pic_height_in_mbs_minus1 = 17
个别表示图像的宽和高,以宏块(16×16)为单位的值减1
据此,实际的宽为 (21+1)*16 = 352
语言 2 spsparser.rar

 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

http://krdai.info.sixxs.org/blog/mp4-sps-pps-data.html

近年来在做跟 h264 encode/decode 相關的切磋,目標是指望可以從 Android 的
MediaRecorder 當中取出 h264 的資訊。近来問題是在於 SPS 以及 PPS
到底要怎樣获得。由於 MediaRecorder 是寫入 mp5檔案中,所以没办法只可以來去分析一下 mp3 的檔案格式,發現沒有想像中的困難.
主要是參照 ISO/IEC 14496-15 這部份. 在 mp4 的檔案之中, 找到 avcC
這個字串, 之後正是接上 Amp3ecoderConfigurationRecord.
AVCDecoderConfigurationRecord 的 format 如下:

 

[cpp] view
plain
copy

 

  1. aligned(8) class AVCDecoderConfigurationRecord {  
  2.    unsigned int(8) configurationVersion = 1;  
  3.    unsigned int(8) AVCProfileIndication;  
  4.    unsigned int(8) profile_compatibility;  
  5.    unsigned int(8) AVCLevelIndication;  
  6.   
  7. bit(6) reserved = ‘111111’b;  
  8.    unsigned int(2) lengthSizeMinusOne;  
  9.   
  10. bit(3) reserved = ‘111’b;  
  11.    unsigned int(5) numOfSequenceParameterSets;  
  12.   
  13. for (i=0; i< numOfSequenceParameterSets; i++) {  
  14.       unsigned int(16) sequenceParameterSetLength ;  
  15.       bit(8*sequenceParameterSetLength) sequenceParameterSetNALUnit;  
  16.    }  
  17.    unsigned int(8) numOfPictureParameterSets;  
  18.    for (i=0; i< numOfPictureParameterSets; i++) {  
  19.       unsigned int(16) pictureParameterSetLength;  
  20.       bit(8*pictureParameterSetLength) pictureParameterSetNALUnit;  
  21.    }  
  22. }  

 

對照一下這樣就足以找到 SPS 和 PPS

+++++++++++++++++++++++++++++++++++++++++++++

 

vlc没有接过pps和sps

2010-10-08 16:16

问题 packetizer_h264 packetizer warning: waiting for SPS/PPS

是因为解码器只是在第一次执行编码的时候,才编码出 SPS、PPS、和I_Frame; 

h264 packetizer has set so, that it sends sps/pps only first keyframe,
 I'm trying to figure what breaks if that is changed so sps/pps is written in every keyframe. 
[出自| http://trac.videolan.org/vlc/ticket/1384]

解决办法:

1、编码器编码出每个关键帧都加上SPS、PPS ,据说通常情况编码器编出的 SPS、PPS是一样的,所以这种方法耗费资源。

2、在服务器接收到客户端请求时,发送第一个package 加上 SPS、PPS。

具体如下:

  • 1、在 VideoOpenFileSource 添加一个变量 isFirstFrame;

  • 2、构造时初始化 isFirstFrame = true;
  • 3、在int VideoOpenFileSource::readFromBufferChain() 修改如下:

  •    1         if(isFirstFrame == true)
       2         {
       3                 memcpy(fTo, h264_header, sizeof(h264_header)); /* h264_header = pps +sps*/
       4                 offset = sizeof(h264_header);
       5                 framesize = BufferChain_get(fInput.video_bufs, fTo + offset);
       6                 offset += framesize;
       7                 isFirstFrame = false;
       8                 printf("this is the first fime\n");
       9                 sleep(1);
      10         }
      11         else
      12         {
      13                 framesize = BufferChain_get(fInput.video_bufs, fTo + offset);
      14                 offset += framesize;
      15         }
      1
[http://topic.csdn.net/u/20100801/17/ef35e664-92ff-4144-a35f-3984dcf11da3.html| 参考] 


========================================================================
sdp 关于pps和sps的疑问:
packetization-mode 主要是定义包的模式,单一 NALU单元模式(0);非交错(non-interleaved)封包模式(1);交错(interleaved)封包模式(2)
sprop-parameter-sets 等于H.264 的序列参数集和图像参数 NAL单元,base64转换;(即= sps+pps)
profile-level-id 这个参数用于指示 H.264 流的 profile 类型和级别。这知道这个是啥东东

参考 黑暗长老 www.cppblog.com/czanyou/
ffmpeg decode 关于pps sps问题:
stackoverflow.com/questions/3493742/problem-to-decode-h264-video-over-rtp-with-ffmpeg-libavcodec/3500432#3500432

 

 

 

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

请大师辅导指导。。。 http://www.oschina.net/question/225813_35707

分析sps,pps的代码在ffmpeg里面就有, 抄出来就行了, 我原先也本身写过…
ffmpeg的libavcodec/h264_parser.c,
h264_ps.c
函数
ff_h264_decode_seq_parameter_set
ff_h264_decode_picture_parameter_set
投机能够看代码.

 

H264参数语法文书档案:
SPS、PPS、ID帕杰罗 http://blog.csdn.net/heanyu/article/details/6205390

H.264码流第二个 NALU 是 SPS(系列参数集Sequence Parameter Set)
对应H264专业文书档案 7.3.2.1 体系参数集的语法举办分析

 

在此地,笔者更承认第一种观念:

    以下是分析宽高的代码:

出品布局图就是因此新闻架构划设想计,将效率和新闻以一种客观自然的逻辑,把职能结构图和音讯结构图中的内容放入产品中的每3个页面包车型客车结果。而现行反革命广大PCR-VD、竞品分析中提到的音信结构图、功用结构图其实多数都是同时富含功效和音讯元素的简化版产品布局图。如下图所示:

在利用ffmpeg解码播放TS流的时候(例如此前写过的UDP组播流),在延续时多次须求成本大量时日。经过debug发现是av_find_stream_info(已放弃,现在选用的是avformat_find_stream_info)这几个主意12分耗费时间,而且是阻塞的。av_find_stream_info方法主假诺收获对应的流新闻,当中对自身的使用最管用的就是录制的分辨率。在av_find_stream_info中是要不停的读取数据包,解码获得相应的音信,而里边除了分辨率音讯以外的东西对本人的使用中是无用的。所以,考虑本身手动从H.264码流中剖析出摄像的分辨率新闻。

其实也不是,一款不管多复杂的应用其主作用模块的撤销合并数量都不能够太多(5-7个为佳),一般情状下当对成品功能布局进行分析后,大家依然会利用Tab功效模块作为主成效模块然后对其下属的作用模块举行整治。唯有当大家以为有个别次级作用模块在业务上太过根本且产品价值较高时,我们才能够将其分割出来作为三个单独的主效能模块。

      欢迎转发,转载请注明出处:http://guoyb.com/Tech/34.html

文章初叶:本文是PM_allen老师公布在产品壹佰的篇章(http://www.chanpin100.com/article/105716)转发文章仅供大家习,不作任何商业用途。

  • 1)*16,高为(pic_height_in_map_units_minus_1+1)*16。

在此处我希望转告2个定义,结构图中的主作用模块不必然正是Tab中的标签功效模块,许多时候产品受限于移动端的空间限制,不得不把效益分为3到伍个Tab中,那是一种务实的折衷。当然正常情况下以Tab标签名作为主功效模块的做法没有错,只是当产品效果复杂时,产品效果结构图使用那种划分有点粗糙。而绘制已规定产品的效益结构图能够帮忙大家去发掘那一个产品的主干功能模块,梳理产品的法力架构。大家提议作图人能够尝尝脱离Tab标签用本身的言语去发掘并讲述主成效模块。

梳理须要,以鸟瞰的点子对全体产品页面中的成效结构形成多少个直观的认识,幸免在成品须要转向为意义须要的长河中出现作用模块和机能点缺点和失误的景观。

专门注明:由于篇幅和其它因素限制,本体系中负有的实例图在完整性上有省略和简化,仅作为举例讲解用,请读者不要纠结图表是不是描述完整、是不是有缺点和失误模块,首假使给读者来对待3类图表的牵连与不一致。

语言 3

少部分产品人认为:出品结构图正是产品音信框架结构图。

我们用微信的个人音信模块举例,如下图所示:

有个别产品人认为:产品结构图是汇总显示产品新闻和效益逻辑的图形;

1、定义:指脱离产品的实际上页面,将成品的数据抽象出来,组合分类的图形。

微信结构图(V6.5.21)

在界别效能结构、音信结构图、结构图前,有3个最主要的前提须求大家达到共同的认识:软件出品笔者正是传递消息和提供功用的载体,完全相对的音信类或效益类产品是不容许存的在,消息往往伴随着功能,我们很难划一条界限将多头根本分手。从某种意义上,新闻传送甚至正是软件出品最重庆大学的主干职能。鉴于此,平凡我们暗中认可地把音讯显示效果独立了出来,作为音讯架构的一片段去斟酌,在产品作用结构时不考虑音信展示效果。

在产品设计流程中,产品效果布局图是产品概念化阶段的初期输出,产品布局图是成品概念化的尾期阶段输出物,当产品结构图成功后,大家对成品的宗旨模样在思想就有了三个概况。同时以产品结构图作为绘制原型的基于,可防止止大家在产品设计中边画边改,跳进死掐细节,不见泰山的陷阱。

1)在成品的设计阶段,如何发掘并分明作用结构图中的主作用模块呢?

在实质上运用时,产品功能结构图平日在偏下2种情状下绘制:

此间作者简单绘制了瞬间微信的音讯结构图作为参考

最后怎么规定功效结构图中的颗粒度呢?

如此这般说来我们就足以肆意将标签功用模块中的次级功用模块划分出来作为主作用模块吗?

对一款已规定产品绘制作用结构图,最便捷的措施正是参考产品的Tab效率模块找出产品主功用模块,然后依照层级归属关系详叙该作用模块提供的下一级作用模块或效益,如有须要,其颗粒度可一向细化到功用操作的描述程度。

于是大家简单掌握许多作用布局图中出现了消息结构的要素,但鉴于效果结构图的选择指标(即上文中的效应)须求我们注意于产品成效这一个维度,在效率布局图中大家最佳尽量缩小消息结构要素出现的或许。

到此处,你是不是还对效益布局图、信息结构图、结构图傻傻分不清呢?

对已做到的某部版本的产品绘制,用于分析并传递该产品的效果布局;

在那边介绍2个小窍门,形容二个作用点时提出多选择“动词+名词”的言语叙述格局,那种措施不但音信传达越发纯粹而且可以免止读者不供给的迷惑。如上边的事例中大家就足以把“名字”改为“设置名字”或“查看并安装名字”来描述功效点。

语言 4

举个例证,固然我们加入了微信的最初功效设计,其制品最初定位是一款移动社交软件,那么其对应的宗旨业务可以简化为

四 、怎么着绘制功效结构图

1、定义

那上海教室“微信成效结构图(V6.5.21)”的主功用模块为啥不是“微信”、“通信录”、“发现”、“作者”那四大标签功用模块?

叁 、注意事项

语言 5

语言 6

微信新闻结构图(V6.5.21)

重组上边现有版本的微信功用结构图相比一下,经过重重次迭代,其主功能结构差不离没有产生变化,大家只可以钦佩其功用布局的拓展性;

个人音信

2)对于已规定产品来说怎么样绘制功效结构图呢?

就用地方作用与音讯纠缠的例子来说,在其功能布局图中许多爱人会直接用“名字”来代表其功效点,画图人或然笔者清楚,但看图人就会发生怀疑:那个“名字”到底是指提供可查阅名字的成效依旧可查阅并修改名字的作用。

效益结构图正是遵从效益的专属关系画成的图纸,在该图形中的每二个框都称为一个功效模块。功效模块能够根据具体意况分得大学一年级些或小一些,分解得最小效用模块可以是一个先后中的种种处理进度,而较大的成效模块则大概是完成某2个职分的一组先后。(百度概念)用浓密浅出的话来说,功能布局图正是以功效模块为项目,介绍模块下其各职能整合的图纸。

微信作用结构图

微信模块(音信连接)

微信作用布局图(V6.5.21)

终极索要强调的是:消息结构图根本适用于产品音讯整合比较复杂供给考虑优化的状态,如内容型产品(博客、web门户网站等),产品的音讯结构对于用户体验就十一分关键,要求用音信结构图作为工具实行辨析盘算。

新闻结构图的绘图平日晚于效能布局图,往往是在产品设计阶段的架空进程中,在成品功用框架已规定、功效结构已圆满好的意况下才对成品信息结构举办解析规划。

绝超越四分之二产品人认为:产品结构图即产品作用结构图的简称,恐怕在产品没有强调音讯结构的定义时,有部分PM初始简称产品成效结构图为产品结构图,之后便暗中认可了那种称为,当出现产品新闻结构图后,概念就生出了模糊;

对未成功的制品在设计阶段绘制,明确产品功能结构;

那边举多个音信与效能纠缠的事例更好了解,如微信的个人音讯模块(如下图),“名字”字段在此间既是音信又提供着修改设置的效应。

出品结构图是综合显示产品信息和功能逻辑的图样,简单说产品结构图正是产品原型的简化表明。它可以在初期的须要评定审查中或其余类似情状中作为产品原型的代表,因为产品结构图相较于产品原型,其完成费用低,能够急迅对产品功能结构实行增、删、改操作,收缩PM在这些进程中的完毕基金。

在写P汉兰达D、竞品分析文书档案中,大家日常会看出产品结构图、产品效果结构图可能产品新闻结构图的身影,但要求讲领会他们的定义和法力也真没看上去那么粗略,那里小编尝试分享一下和好的观点。

效益结构图中的颗粒程度须求依照实际行使场景来定,由画图人依据必要活动把控即可。比如说在产品设计的进度中,作用结构的树立是设计者的规划思想由散落趋向于收敛的历程,刚起初的颗粒度一般相比较大,大概仅涉及到有个别效用模块,随着安插的缕缕推进,功用结构图的颗粒度会持续细化,最后可以拆分至有些具体的效应操作。那里小编将“微信模块-个人对话”功效模块作了细化,仅供参考:

三、结构图

语言 7

那般大家就很简单得出产品设计阶段微信的主成效模块,如下:

出品概念设计的选取工具之一,能够对不完全明确的布置性难点或一定模糊的安排供给,以一种比较简单和显明的措施表示。在绘制的历程中,能够扶助PM思考并清晰产品的功效模块及其效用结合;

① 、成效结构图

最重点的来由是:对于产品结构图,产品从业职员那个群众体育自个儿都还一直不完毕共同的认识呦。小编在网上搜了搜相关小说,对于产品结构图大家的首要精晓有3种:

语言 8

其结构音信图在那有个其余绘图就要求脱离产品的实际页面,如下:

当通过业务流程将主功用模块显明下来后,再依照作业须求对其展开职能的详细安插即可,在此就不再实行了。

② 、音讯结构图

语言 9

2、作用:

在此处,大家须要强调的是脱离实际页面那些定义,在一些成品有关小说中,大家相会到作者将消息结构图完全遵照页面包车型客车逻辑顺序来展开分拣整合,严苛意义上的话,那种图表不是一份合格的音讯结构图。

语言 10

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图