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數據,當然無法播放了 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM