注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

面包会有的

...

 
 
 

日志

 
 

h->sps验证是否正确  

2011-10-23 04:07:13|  分类: RTP |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
事情是这样的,我把摄像头实时编码后,存成文件,用ffplay播放是完全正常的,现在要用RTP往外发送sps给vlc。所以要取到h->sps,但是我把它存成一个二进制文件,打开查看发现里面的值很少,所以想确认一下是不是取的是对的。

h-sps验证是否正确 - 加菲 - 视频会议 - 加菲
 
h-sps验证是否正确 - 加菲 - 视频会议 - 加菲
 
h-sps验证是否正确 - 加菲 - 视频会议 - 加菲
 
但是存储下来,发现里面绝大多数是00,而我打开一个正确编码的xxxx.264,却发现全是乱七八糟的(针对同一个摄像头,同一次编码),所以让我非常的不安,怎么就知道上面存下来的sps是不是对的了?一时非常担忧。

h-sps验证是否正确 - 加菲 - 视频会议 - 加菲

从头到尾都是这样子,根本没有与最开始的存下的sps类似的东西,所以很是让人担忧啊。难道我存下的sps是错的吗?



 
但是,我用如下代码来检验,对个别值,却是相符的:
CString str;
str.Format("sps->i_mb_width = %u ;sps->i_mb_height = %u ",h->sps->i_mb_width,h->sps->i_mb_height);//20,15
AfxMessageBox(str);//弹出来的是20,15,倒是和算下的值吻合(320/16 == 20  240/16 == 15)

而存储用的是如下代码,也没有错啊,上面的弹出检验和这是一个函数里的。
//写入一个文件检验是否正确
CFile file1(strFilePath, CFile::modeWrite|CFile::modeCreate);
file1.SeekToEnd();
file1.Write(h->sps,sizeof(x264_sps_t));
file1.Close();


是不是编码得到的xxx.264里,是经过某种压缩编码,所以看到的sps和自己单独存出来的sps不一样了?因为20的十六进制是14 00,15的十六进制是0F 00,这个在最上面的图里都有,而且也是挨着的。

为了测试一下,int i_sar_height;后面是int b_overscan_info_present,把b_overscan_info_present设置个值试试,如果二进制文件里发现有变化,好像会意味着某些事啊。

试了,发现不论设置0或1,都不变,哎。
h = x264_encoder_open( &param );
h->sps->vui.b_overscan_info_present = 1;


打开x264源码找了下,好像它是用 x264_sps_write( &h->out.bs, h->sps ); //序列参数集_写入
里面用了好多 bs_write_ue,说是指数哥伦布编码,我看到的乱码和自己存的二进制文件不一样好像是这个原因吧,因为我是直接存的
  评论这张
 
阅读(1024)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017