ffmpeg为android1.5生成可在线播放的mp4测试

名词解释:

浏览器播放:部署在apache下的mp4模块,通过浏览器访问。

手机播放:部署在tomcat下,通过手机访问。

 

 

首先需要知道android支持mp4文件播放。

在此前提下,我们需要用ffmpeg为android生成特定格式的文件。

废话不多说,直接上命令:

 

用此命令转换后的文件可以在android下播放,但是效果不是很好,有马赛克。

于是调整影响画面的参数:比特率。

在分别使用了

-b 600

-b 800

-b 1000

等众多参数之后,效果依然没有明显改善,于是想到用非恒定码率,也许效果会比较好,见:http://blog.csdn.net/applezhengxd/archive/2009/12/17/5025703.aspx

 

分别使用了

-qscale  4

-qscale  6

但是最终的效果仍然不理想。

那么为什么要用这个命令呢,因为这是apahce给出的在apache的mp4模块下进行流传输的转换命令,我想要找到一个通用的命令,所以首先拿这个命令开刀。但是他使用的是libx264高压缩比,而且进行了两次转码,会不会是这个影响的呢?

 

带着这个疑问,我使用了一次转码的命令,并且使用压缩率较低的解码器。

ffmpeg -y -i test.avi -vcodec libxvid -s 320x240 -r 30 -b 600k -acodec libfaac -ab 128k -ar 48000 -ac 2 -f mp4 test.mp4

用这个命令生成的文件在手机上播放果然没有问题,很流畅,几乎没有马赛克。

带着喜悦,我有相继测试了其他格式的视频文件的转换,但是问题又来了。

当inputfile为flv的时候,执行命令报错了:Video encoding failed。

看来是解码器用的不对,于是换其他的,折腾一番,无功而返。

最后干脆将-vcodec libxvid参数去掉,成功了!

查看转换后的文件的属性,是mpeg4,符合要求。

于是我又用修改后的命令

ffmpeg -y -i test.avi  -s 320x240 -r 30 -b 600k -acodec libfaac -ab 128k -ar 48000 -ac 2 -f mp4 test.mp4

测试了先前测试成功的文件,都没有问题。

虽然没有找到一个通用的转换命令,但是现在做的工作都已经满足需求了。

 

测试总结:

两次转码的命令得到的文件,可以在浏览器、手机上播放,只是在后者上效果很不好。

一次转码的命令得到的文件,可以在手机上播放,效果不错,但不能在浏览器上播放,因为不符合apache下mp4模块的h264/mp4要求。

ffmpeg对文件格式的支持从avi、mov、mpg、flv、3gp转换后的效果依次降低,也就是说同样的命令,由3gp得到的文件效果最差。

不论是什么命令生成的mp4文件都需要经过MP4Box处理后才能在手机上播放,MP4Box -hint filename.mp4

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值