安卓开发 第十四篇 视频播放

一. 背景


在Android 开发中常常会涉及到视频播放,Android本身的VideoView以及MediaPlayer使用起来总是遇到这样那样的坑,并且Api对开发者也不是很友好,更不用说支持的视频格式了。后来陆续用过腾讯的播放库,百度的播放库,也研究过vitamio,ijkplayer,但都不是很满意,甚至有的库直接就4m以上。后来谷歌开源了新的播放器Exoplayer,这个播放器十分强大,但是用起来还是感觉好麻烦。最近又碰上视频播放了,本着拿来主义精神,到github搜了一圈发现了 JieCaoVideoPlayer,研究了一番决定就用它了,于是集成,按需求进行UI定制。等我都开发完了,有个小伙伴说试试播放本地视频,嗯,我随便找了个mp4的视频放到手机根目录,然后以 “file://”+视频路径 进行播放,尼玛,居然不能播放,瞬间心都凉了。一怒之下,自己动手,丰衣足食,于是 NaivorPlayer 就这样诞生了。

二. 简介


NaivorPlayer 是一个Android平台上面的视频播放库,基于Exoplayer进行封装,提供美观的操作界面和简单易用调用接口,其界面参考 JieCaoVideoPlayer,设计时方法和属性多采用protect,便于扩展,支持多种视频播放格式( MP4, M4A, FMP4, WebM, MKV, MP3, Ogg, WAV, MPEG-TS, MPEG-PS, FLV 和 ADTS (AAC),以及DASH,HLS)。

三. 使用


  1. 将 NaivorPlayer 加入项目

    compile 'com.naivor:player:最新版本号'
  2. 添加view (宽高按需要)

    <com.naivor.player.VideoPlayer
           android:id="@+id/videoPlayer"
           android:layout_width="match_parent"
           android:layout_height="240dp" />
  3. 设置播放的url

      //设置播放源
      videoPlayer.setUp(url,"视频名字");
  4. 播放

    videoPlayer.start(); //调用后立即播放,也可以不用这步,点击播放按钮
  5. 其他

    • 设置数据源后马上缓冲

      videoPlayer.setAutoPrepare(true);
    • 视频封面

      //一般来说开启自动缓冲,就会把视频的第一帧作为封面,亦可以自己设置封面,有下面两种方式
      1.videoPlayer.getPreviewView() //能拿到显示封面的ImageView,给它加载图片就是了
      2.videoPlayer.setPreviewImage(bitmap); //将封面的Bitmap传入
    • 开启小窗播放

      videoPlayer.startWindowTiny();  //退出小窗调用 videoPlayer.backOriginWindow();
    • 在List中播放

      // 在onCreate 方法中 设置:
      1. VideoPlayer.playVideoInList(listview,false); //这里的listview既可是ListView,也可以是RecyclerView(用LinearLayoutManager)
      
      2. VideoPlayer.playVideoInList(listview,true); // 正在播放的视频滑出屏幕时自动开启小窗继续播放
      
      ....
      
      //在onDestroy方法中
      VideoPlayer.releaseAll();
    • 可自定义小窗大小

      VideoPlayer.setTinyWidth(tinyWidth);
      VideoPlayer.setTinyHeight(tinyHeight);
    • 播放视频监听

      videoPlayer.setPlayEventListener(playEventListener);

四. 效果


  • 正常

  • 全屏

    • 横屏

    • 竖屏

  • 小窗

  • 列表

    • Listview

    • RecyclerView

五. 结构


来一张截图吧,就不放UML了,大家有兴趣就自己看源码吧

安卓开发 第十四篇 视频播放_第1张图片

六. 自定义UI


整理中,待续 …

七. 未来计划


  • 播放视频显示字幕

  • 多视频源切换

  • 边下边播

  • 集成弹幕

  • ……

八. 最后


开发这个库的初衷是感觉Android缺乏一个美观,易用,支持格式多的视频播放库,如果大家对此项目感兴趣,欢迎贡献代码和意见

Github 地址:https://github.com/naivor/NaivorPlayer

你可能感兴趣的:(安卓开发)