当前位置: 代码迷 >> 多媒体/流媒体开发 >> 怎么将H.264的流媒体文件保存为本地文件(录制)
  详细解决方案

怎么将H.264的流媒体文件保存为本地文件(录制)

热度:5605   发布时间:2013-02-26 00:00:00.0
如何将H.264的流媒体文件保存为本地文件(录制)?
各位大侠,我在将H.264的流媒体文件保存为本地文件时遇到这样一个问题:由于最初的两个I帧之间保存不对而导致了花屏。

客户端将采集以后的H.264数据采用RTP机制发送到服务器,我在服务器这边首先将收到的RTP包进行解析,获取到真正的H.264数据包。由于H.264数据包只有I帧与P帧。P帧需要2~4个socket包才能发送完成。I帧而需要10~30个socket包才能发送完毕。
在接收端,我对包进行解析并对包头判断:遇到十六进制00 00 00 67开头的包时,我开始保存(十六进制00 00 00 67开头的包后紧跟着十六进制00 00 00 68开头的包,再后面为多个十六进制00 00 00 65开头的包。三者分别代表SPS、PPS、I帧)。即我的思路为从I帧开始保存。另外,时戳则是按照帧来计算。目前发送端视频为25帧,所以在接收端按照40毫秒累加来对每一帧接收图像的时戳进行赋值。

保存以后的视频文件有花屏。我采用软件分析了一下,目前是第一个I帧和第二个I帧之间保存出错。第二个I帧以后的保存正确。请各位大侠给出宝贵意见。

如果谁有H.264流到文件转化的程序,能送给在下,在下将感激不尽!
------解决方案--------------------------------------------------------
确定看第一帧和第二帧是否有丢包,若没有丢包,花的话很正常。在确定是否丢包时,可以在客户端采集的时候进行文件保存,看是不是和客户端的效果一样
------解决方案--------------------------------------------------------
保存以后的视频文件有花屏,说明花屏珍的花瓶部分参考的前面的帧找不到了丢失了,你在保存的时候就应该判断如果丢失了就不要保存这一帧了
  相关解决方案