最近在用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信息才可以。
