Android O MediaPlayer Enhancements
英文原版地址:https://developer.android.google.cn/preview/features/media-player.html,水平有限,请指正错误。
Android O 中,Mediplayer拥有的一些新的方法实现了一些新的特性,这些特性包括:
- 通过控制缓冲行为提升MediPlayer的性能。
- 画面的细粒度处理。
- 音频的数字版权保护能力
1.缓冲区:
新的MediaPlayer方法可以帮助你提升缓冲区的性能,它使用新的BufferingParams对象去指定watermarks 和缓冲模式。
控制MediaPlayer缓冲区行为的标志位有三种:inital,low和high。inital watermark 指定了在音频开始播放前需要预加载进缓冲区的数据量,这个标志只在执行prepare()方法时使用。high watermark 的数据量必须大于 low watermark,开发者可以将watermarks的单位指定为milliseconds ,kilobytes 或者二者都使用。
当MediaPlayer工作的时候它试图将缓冲区中的数据量保持在hig和low之间。如果已经缓冲过的数据量低于low watermark,MediaPlayer将停止工作即便缓冲区被重新填充,并且MediaPlayer的MediaPlayer.OnInfoListener接收到一个对onInfo()方法的调用请求,并且将该方法中的what参数设置为MEDIA_INFO_BUFFERING_END.当缓冲区中的数据接近high watermarks(或者播放中的数据流接近结束),播放会重置并且onInfoListener 接口接收到对onInfo()方法的调用,同时将该方法中的what参数设置为MEDIA_INFO_BUFFERING_END。
没一个watermark都可以被指定大小(以kilobytes为单位),或者时长(以milliseconds为单位)或者二者都使用。缓冲模式表明了哪一种模式正在被使用,缓冲模式总共有四种选择:
- BUFFERING_MODE_TIME_ONLY
- BUFFERING_MODE_SIZE_ONLY
- BUFFERING_MODE_TIME_THEN_SIZE
- BUFFERING_MODE_NONE
需要注意的是,当数据资源包含时间戳框架信息时以时间为基准缓冲方式是可用的。
开发者可以重新创建BufferingParams对象,不过推荐的步骤是使用默认的Android已经为资源分配好的BufferingParams对象,如下方式:
a.设置MediaPlayer的data source.
b.调用getDefaultBufferingParams()方法并且检查得到的返回值BufferingParams对象,查看资源中默认的watermarks和可以的缓冲模式。
c.开发者可以随意的编辑BufferingParams对象。如果开发者改变了缓冲模式,请确保使用的是初始默认值所允许的模式。例如,如果默认的模式是BUFFERING_MODE_TIME_ONLY,开发者其他可选的模式只能是 BUFFERING_MODE_NONE,BUFFERING_MODE_SIZE_ONLY模式是不允许使用的。
d.调用 setBufferingParams()方法将缓冲区的设置传递给MediaPlayer。
e.通过测试确保可以得到返回值,如果任何一个参数是非法的或者不受支持的,这种方法将会抛出IllegalArgumentException.
2.Seek modes
新方法seekTo()包含了两个参数用来指定seekMode(新增四种seekmode):
a.SEEK_PREVIOUS_SYNC:将媒体移动到同步(或关键帧),该帧和一个数据源相关联,数据源正位于或在给定的时间之前.
b.SEEK_NEXT_SYNC:将媒体移动到同步(或关键帧),该帧和一个数据源相关联,数据源正位于或在给定的时间之后.
c.SEEK_CLOSEST_SYNC:将媒体移动到同步(或关键帧),该帧和一个数据源相关联,数据源正位于或最接近给定的时间.
d.SEEK_CLOSEST:将媒体移动到同步(或关键帧),该帧和一个数据源相关联,数据源正位于或最接近给定的时间..
3.DRM support:
MediaPlayer拥有了新的支持音频的数字版权保护的api,这些api和低版本中的MediaDrm相似。不过他们可以执行更高级的保护措施,不会将资源中的信息暴露出来,并且会加密资源对象。
即便MediaPlayer的数字版权保护API没有提供全部MediaDrm的功能,它还是支持大部分常用的用例的。目前的实现可以处理下的内容类型:
a.Widevine protected local media files
b.Widevine protected remote/streaming media files