zoukankan      html  css  js  c++  java
  • http协议的MP4文件播放问题的分析

    现在手上有两个链接 
    (1) http://202.108.16.173/cctv/video/8C/35/EB/E8/8C35EBE84E7B483C8741CF9A60154993/gphone/480_320/200/0.mp4 
    (2) http://202.108.16.173/cctv/video/8C/35/EB/E8/8C35EBE84E7B483C8741CF9A60154993/iphone/480_320/200/0.mp4 
    现在的情况是这样的: 

    lusure 2009-12-30 16:57

    1.(1)在android中可以播放,(2)不能播放 
    2.在android中把视频下载下来,都可以播放。 
    3.在pc上用vlc测试两个链接,(1)播放几秒后卡住不动,(2)流畅播放。(ps:网速不是问题) 
    把两个文件都下载下来,头部分如下: 
    (1)ftypisom   isomiso2avc1mp41  遞moov  lmvhd    |%皜|%皜  ?摢   
    (2)ftypisom   isomiso2avc1mp41  free 0⑸mdat?  libfaac 1.28  B ?2 G  
    现在想要知道(2)这个链接为什么不能播放。跟踪了android的代码,发现在http协议播放MP4的时候,需要moov这个atom,否则报错退出,但是在以文件形式播放的时候没有这项判断。 
    想问下这两个链接的播放方式有什么不同,为什么在android上的播放和在vlc上的播放都出现不同的结果? 

    psusong 2009-12-31 10:18

    实际情况是播放mp4的时候必须首先获得moov的数据,否则没法解析mdat中的audio/video数据 

    对于2的情况,是因为moov在mdat后面,也就是在文件末尾,要播放这个文件意味要先把mdat下载下来才能下载到moov,也就是说没法直接获得moov,所以不能通过http的方式在线播放这个文件 

    并不是以文件的形式就不判断moov了,而是文件形式下moov无论在文件头还是文件尾部播放器都可以instant获得moov的数据,而http的方式下不能随意的seek到文件尾部,所以也就无法立即获得moov数据,当然无法播放了 
  • 相关阅读:
    java多线程学习-同步之线程通信
    java多线程学习-同步(synchronized)
    java多线程学习-开篇
    面向对象-多线程-异常机制-查漏补缺
    Sprin2.5+Hibernate3.3+Struts2.0.11集成
    Strut1.3+Sprin2.5+Hibernate3.3集成
    Sprin2.5+Hibernate3.3集成
    Spring学习笔记
    Hibernate学习笔记
    Sping
  • 原文地址:https://www.cnblogs.com/lidabo/p/7279452.html
Copyright © 2011-2022 走看看