【转】Android下录制的mp4视频以http流媒体的形式播放不了

mp4基本知识: 
  mp4的文件结构中主要包含moov 部分是视频的元数据信息和mdat部分是视频的内容信息 
  在http协议播放MP4的时候,需要moov这个atom,否则报错退出,但是在以文件形式播放的时候没有这项判断。 实际情况是播放mp4的时候必须首先获得moov的数据,否则没法解析mdat中的audio/video数据 对于http协议播放MP4的情况,是因为moov在mdat后面,也就是在文件末尾,要播放这个文件意味要先把mdat下载下来才能下载到moov,也就是说没法直接获得moov,所以不能通过http的方式在线播放这个文件 并不是以本地文件的形式就不判断moov了,而是文件形式下moov无论在文件头还是文件尾部播放器都可以instant获得moov的数据,而http的方式下不能随意的seek到文件尾部,所以也就无法立即获得moov数据,当然无法播放了 . 

关于拖动播放的问题:拖动播放首先就是要找到位置,也就是seek position.seek是定位时间,但时间定位在可以拖动的flv或者mp4文件中都在MetaData事件中传递了keyframes 给播放器,这个keyframes 就是时间和文件数据头定位的对应关系依据。下载数据已经缓冲数据的范围是开始位置off1 和下载缓冲数据量 buffer来确定, 即范围在 [off1,off1+butt]是已经缓冲的数据。还要注意的是这个定位精度是有限制的,最多到1秒精度。 
  查看mp4文件结构信息的工具,见附件 
  如果要将mp4文件的末尾的moov atom信息放在文件的起始位置,可以使用qt-faststart  见附件 
   用法:qt-faststart 源文件  转换后的新文件 
这样转换后的mp4文件的就能支持http下的流媒体形式的播放了

转载于:https://www.cnblogs.com/niuxiaohao/archive/2011/12/29/2306503.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值