当前位置: 代码迷 >> 多媒体/流媒体开发 >> 到底怎么才能播放H264流录成的MP4文件
  详细解决方案

到底怎么才能播放H264流录成的MP4文件

热度:1624   发布时间:2013-02-26 00:00:00.0
到底如何才能播放H264流录成的MP4文件?
我用live555通过RTSP接收H264流,用其中的QuickTimeFileSink写成MP4文件,用VLC可以播放,但用其它软件无法播放!

  其实就是openRTSP例子,真是太郁闷了,详细如下:

  使用AVIFileSink录H264流成AVI一切正常,
  使用QuickTimeFileSink录H264流成MP4就只能用VLC播放,其它的都无法播放.
  为什么同样的数据流,,录成MP4就放不了?

  我又试了,使用QuickTimeFileSink录MP4V-ES流成MP4文件,一切都正常.说明这个类的问题不大,

  接收到H264流是FU-A分片的,每帧数据如下:
  000000016764........数据.......00000001.....数据.........
 
  每帧数据有两个左右NAL,解码时提示:
  "AVC: Consumed only 1 bytes instead of 143955"
  "AVC: Unknown NAL code: 0 (0 bits)
   
  于是,我在录制时每个帧去掉开头的开始码00000001,结果播放时花屏非常严重,有时还是播放不了,解码提示为:
  "AVC:Consumed only 120bytes instead of 145664"
  "AVC:Consumed only 35760 bytes instead of 38959"

  还是这个NAL开始码引起的, 解码时遇到00000001认为是结束了,因为每帧中间还有NAL,为什么会这样?录AVI时每帧也是这数据啊,为什么就可以正常解码?录的祼码流也是这样的一帧,也可以解码,放在这个MP4容器里面就不行?难道解码时送给解码器的每个帧时只能含有一个NAL?

  期待大牛指点。

 

------解决方案--------------------------------------------------------
会不会是RTP网络包头没有拆干净, 录到MP4文件中的不止264数据还有RTP头造成解码不识别?
------解决方案--------------------------------------------------------
把你录制的H264 MP4文件用VLC串流为H264 MP4文件,若其他播放器能播放串流
后的文件,比较串流前后的MP4文件有何区别。
------解决方案--------------------------------------------------------
说明这个MP4文件不符合标准,里面有VLC自己能识别的字段,而替他PLAYER无法识别