参考资料
|-在Google Android官方的开发文档中有一文 Android Supported Media Formats详细的介绍了Android终端支持的音频视频格式
|-连接 http://developer.android.com/guide/appendix/media-formats.html
|-当然,农民伯伯博客中也有译文--http://www.cnblogs.com/over140/archive/2011/05/20/2051720.html
先把译文看完你就会明白了为什么Android不是所有以MP4为后缀名的视频文件都能播放.
而且有的MP4可以在手机以及平板上播放,有的在模拟器又不可播放.
了解一个定义-什么是 "流媒体"
具体含义是什么,我也说不上来,按照我查的资料以及自己的理解,以在线流的形式传输的音视频,就叫做流媒体了
如何在Android上播放流媒体?
首先让视频源支持Android本地播放.最好是能让模拟器能播放
|-首先我们明白Android支持的视频编码有三种,H.263,H.264 AVC,MPEG-4 SP
如果我们不选择将视频源转换成Android支持的格式,那就需要移植解码库,类似于做万能播放器
由上面的信息确定,我们第一个想法就是找一款视频转换工具,按照Android支持的协议转换一个视频.那什么样的工具可以提供这样的行为.
|-说一下我用过的工具,在window下有QuickTime,MeGUI || Linux下则Make FFmpeg,这两个都必须用H.264编码来转换
|-MeGUI,插件比较多,安装以及设置麻烦.但是转出来的视频又小又清晰,转视频是一件很考验耐心的事情...
参数要微调才能得出好的效果,--profile baseline --level 2.1 这是主要参数<参照乐视视频源>,MeGUI转出来的视频
可以直接在android的模拟器上播放,转好的视频可以支持网络播放,相关
MeGUI安装配置文档下载 http://download.csdn.net/detail/forever_crying/3671174
|-FFmpeg,插件也很多,可以选择性安装,但主要函数也-profile baseline -level 2.1 其他插件参数另外参考
但是用FFmpeg转换后必须得把视频索引前置才能支持HTTP渐进式,不然就会一直黑屏,不播放,
用到的工具是qt-faststart,一般在ffmpeg中的tools目录下,make即可使用
这个的最好到官网下,然后看帮助文档.更多相关要发挥搜索精神
|-QuickTime打开视频源,右键导出调好参数就是了,这个视频转换质量损失太严重,不推荐
转换好的视频可以放到Tomcat上,用VideoView测试播放.
转换后的视频质量如何决定呢?其实视频是为了Android的终端能够播放,而片子的码率越高,对宽带的要求也就越高,这个可以参考开发文档给出的参数
也可以自己多测试....
应该用哪种方案来解决Android的在线播放?
以上这篇文章详细的综述了HTTP,RTSP,以及3.0以上支持的苹果提供的HTTP Live Streaming
这里做一下简要的总结
|-HTTP渐进式下载(Progressive Download),顺序下载,在Android客户端可以做到边下边播,但是播放控制只能操作已下载的部分.
所以当视频文件比较大的时候,用这个方案,是比较郁闷的....我不能从后半截开始看,一定要从头?
|-RTSP/RTP,实时流媒体,可以随点随播, 协议类似于HTTP,我没有深入.
RTSP协议不是每一个流媒体服务器都一样,所以如果使用这个的话,就会增加Android客户端编码难度
其实在Android下支持的协议是RTP,但是在android下RTP不能脱离RTSP来单独工作
|-HTTP Live Streaming,苹果的东西,详细还是参照上面的PDF吧
非常期望能得到大家的意见和更多关于Android流媒体的帮助