作者:qing的世界
今天终于可以开始学习安卓平台的视频播放知识了!相信大家早就已经等不及了。
这一章我们会如此安排
1.Android 平台视频播放API的变迁历史
2.Android 新 Media API的使用
3.一个使用新Media API播放视频的例子
1.Android 平台视频播放API的变迁历史
在很久很久以前。。。。
咳咳咳,言重了。。。。
在2012年以前,安卓平台的视频播放,一直都是非常简单的事情(对于大部分开发者来说,因为大部分开发者都不需要深入底层MediaPlayer Service),
非常简单,创建播放器对象,注入URL,播放,播放完毕之后release。。。。。
这给安卓开发者带来了非常大的便利,应用代码也非常少。可以说,在2011年之前(尤其是直播业务还没爆火之前),这款Native Player还是很好用的。
但是这款播放器的缺点也非常显而易见。
1.很多格式的容器文件不支持,也不支持自适应视频播放(Adaptive Streaming)
2.应用开发者很难debug播放器,MediaPlayer的代码很多都是Native Method。并不在Java层。
3.很难做自定义的拓展和设置,比如缓冲的大小,下载进度等等。
正是因为MediaPlayer本身的实现对开发者是完全透明的,所以它也越来越神秘,也逐渐跟不上现在的业务对播放器的需求了。
所以谷歌也意识到了这一点,在2012年的Google IO大会上,谷歌宣布了Android Jelly Bean,也就是4.3之后,安卓平台release新的Media Codec API组。这些API不再像之前傻瓜式的MediaPlayer一样,而是把API组件设计的面向视频播放的更底层概念。比如,编解码API,容器文件读取器Extractor API等等。
以上的图都是从Google IO大会的视频进行截图而来的。我们可以从结构图里看出,原来的MediaPlayer把Extractor,和Codec API全部封锁在了Framework层,应用层完全接触不到。在新的API设计里面,这些都挪到了应用层(其实虽然MediaCodec API,就是编解码API还在Framework,但是应用层可以调用他们)
2.Android Codec API的使用
在全新的Media API里面,最最最重要的就是MediaExtractor和MediaCodec这两个类,第一个可以对容器文件进行读取控制,第二个就是对数据进行编解码的API。
MediaExtractor
</