美文网首页
Android动态小视频设计

Android动态小视频设计

作者: XBian | 来源:发表于2016-11-28 17:05 被阅读175次

一.动态流中的视频播放

1.列表中视频播放的控件实现

Android原生提供的视频播放空间VideoView ,继承自SurfaceView,SurfaceView会单独一个窗口用来绘制,它不在View hierachy中,显示也不受View的属性控制,不能进行平移,缩放等变换。因此在ListView 或者RecyclerView中不适合用SurfaceView来视频播。
由于SurfaceView的不足,需要引入Android在4.0中加入的TextureView,它并没有创建一个单独的窗口用来绘制,这使得它可以像一般的View一样执行一些变换操作,设置透明度等,也很方便的放在其它ViewGroup中。
所以要在ListView或者RecyclerView中播放视频,我们就需要实现基于TextureView的VideoView

二.列表中播放交互

timeline中的视频播放必须支持以下一些特性:

1.自动播放及停止

通过Listview或者RecyclerView中滑动来判断video item是否在windows中来判定自动播放及暂停,要点如下:

  • 判断滑动方向
  • item可见高度比(60% ~ 90%)
  • fling时忽略计算直到state -> idle

2.无声播放

MediaPlayer来 setVolume(0,0)? 视频云sdk支持

3.重新播放

设计缓存来支持

三.列表小视频播放性能

1.播放控制线程设计

MediaPlayer的状态图如下:

mediaplayer_state_diagram.gif

MediaPlayer的prepare()、reset()、release()等操作都是耗时操作,不应该在UI线程中处理,解决办法是单开PlayerHandler来处理所有操作,然后再将事件通知post到主线程中。

2.缓存设计

目前app里MV播放没有缓存系统支持,导致每次重新播放都要重新加载,动态小视频中必然需要引入一套缓存,这里可参考mp3播放缓存(分段缓存)来实现小视频的缓存,提高用户体验,不需要内存缓存只需要文件缓存。

四.视频云SDK接入

1.系统自带的MediaPlayer来播放

缺点:

  • 支持格式少
  • 经常有用户反馈黑屏、无声音等问题
  • 厂商修改导致不稳定

优点:

  • 沿用当前MV播放方案,实现速度上会相对快一点

2.网易视频云提供的播放SDK

  • 整合自解码播放、直播等so
  • 稳定性测试

参考

VideoPlayerManage

相关文章

网友评论

      本文标题:Android动态小视频设计

      本文链接:https://www.haomeiwen.com/subject/hempettx.html