最近在用AS3寫一個Flash的播放器,發現同樣都是H264編碼的mp4文件,有的可以加載一點就開始播放,有的就必須全部加載完才能播。
用本地播放器(potplayer,暴風影音等)打開查看,發現編碼什么的也都是一樣的:


左邊這個必須是全部加載完成才能播,右邊這個是一加載就能播。
然后問了同事一下,說可能肯頭信息的數據順序有關。這里提供一個工具:mp4info.exe
附上下載地址:
鏈接:http://pan.baidu.com/s/1nvUcBZN 密碼:oys0
這個小工具可以查看mp4文件的結構信息:
要是視頻可以已加載就能播放,需要在視頻頭部插入metaData信息,也就是上面的圖中的moov->udta->meta中的數據
如果這個結構在視頻文件的末尾,或者根本沒有這些數據,那么就只能等全部加載完之后才能播放。
下面是網上的一篇帖子里介紹的方法:
http://www.gxchina.com/edu/11216.html#627677-qzone-1-98393-01316438de54fba6421e9817746b2229
讓Flash播放器支持播放MP4文件,並解決不能邊加載邊播的問題
一、讓Flash播放器支持MP4,需要將編碼轉換為h.264編碼的MP4。
二、解決邊加載邊播放的問題,將MP4中Metadata信息移至文件頭部,具體方法如下:
第1步:下載安裝ffmpeg
在windows下使用
下載地址: http://ffmpeg.zeranoe.com/builds/
點擊頁面上的Download FFmpeg git-738ebb4 64-bit Static(我是64位的),如果你是32位點擊 Download FFmpeg git-738ebb4 32-bit Static
下載下來解壓縮后我把文件夾改成了ffmpeg放在D盤下面
運行三個文件:
D:ffmpeg/bin/ffmpeg.exe
D:ffmpeg/bin/ffplay.exe
D:ffmpeg/bin/ffprobe.exe
這就成功安裝了
第2步:添加qt-faststart到ffmpeg/bin目錄
下載qt-faststart
下載地址:http://www.ckplayer.com/down/qt-faststart.rar
解壓將qt-faststart.exe放到d:ffmpeg/bin/ 里面
第3步:執行修改metadata命令
在開始->運行里輸入cmd,彈出命令窗口
按下面的命令進行操作
輸入d:按回車
輸入cd ffmpeg/bin回車,這樣就進入了ffmpeg的目錄
再運行命令:qt-faststart.exe d:/1.mp4 d:/2.mp4
說明:1.mp4為原mp4文件,2.mp4為修改后存儲的文件
最后出來的這個2.mp4就是成功的了,即可支持邊加載邊播放.
附上備份的下載地址:
鏈接:http://pan.baidu.com/s/1bp5u9ht 密碼:2sud
然后我按照這個方法轉了2個視頻,其中一個成功了,實現了一加載就播放,
另外一個轉了之后還是不行,然后我用上面的工具看了一下,發現:
雖然moov結構被提到了前面的位置,但是這里面並沒有udta,也就沒有metaData,所以這個視頻無法邊加載邊播放,需要重新編碼補充metaData信息才可以。