利用ffmpeg修改MP4文件头信息,使其支持流式加载及播放

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

posted @ 2017-06-08 15:41  记忆里的炎夏  阅读(3621)  评论(0编辑  收藏  举报