最近给客户上传mp4的视频,发现不下载完成,不会播放,查了下,视频要等加载完才能播放,而不是边加载边播放这是因为视频的元数据信息不在第一帧所致。元数据是指保存视频属性的一组参数,比如视频的宽度,高度,时间长,总字节,关键帧等信息。因为网页上的视频播放器播放视频是以流的形式加载(即没办法直接加载视频结尾的数据,只能从前向后加载),所以播放器必需要读取到元数据信息才可以进行播放。
具体的解析办法可参考:
作者测试是在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
这就成功安装了
下面举二个简单的例子
首先,搞一个视频文件放在D盘根目录下,主要为了省事,比如我放的是:D:/1.flv
在开始->运行里输入cmd,弹出命令窗口
按下面的命令进行操作
输入 d:按回车
输入 cd ffmpeg/bin回车
这样就进入了ffmpeg的目录了,
1、测试视频截图的功能
复制如下命令,在命令行里点击鼠标右键选择粘贴
ffmpeg -i d:/1.flv -y -f image2 -t 0.001 -s 720x576 d:/1.jpg
看看D盘下是不是生成了一个1.jpg的图片,是的话就成功了,不是你就认真检查下吧,看看路径是不是正确
2、测试d:/1.flv转成d:/1.mp4
同样,复制下面的命令,在命令窗口里点击鼠标右键选择粘贴
ffmpeg.exe -i "d:1.flv" -y -metadata title="这是视频标题" -metadata comment="这是视频信息!" -c:v libx264 -preset superfast -x264opts keyint=25 -r 15 -b:v 500k -c:a aac -strict experimental -ar 44100 -ac 2 -b:a 64k -vf "movie=a.png[watermark];scale=1364x768[scale];[scale][watermark] overlay=30:30[out]" -f mp4 "d:2.mp4"
等命令执行完成后看看D盘下是不是有个mp4了,有了就说明成功了。
参数说明:
movie=是水印
-b:v 后的500k是码率
scale=后是分辩率
keyint=25 是关键帧 表示每25帧会有一个关键帧
如果你的视频只是元数据信息不在第一帧,下面介绍另一种mp4把元数据信息转到视频第一帧
首先需要下载一个qt-faststart
下载地址:http://www.ckplayer.com/down/qt-faststart.rar
下载下来解压得到qt-faststart.exe放到d:ffmpeg/bin/下面
运行命令(对了,需要在cmd下进入d:ffmpeg/bin/,才用一下命令):
qt-faststart.exe d:/1.mp4 d:/2.mp4
最后出来的这个2.mp4就是成功的了。可以边下载边播放
关于详细的参数设置,请自行网上搜索了解或者看使用说明