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

一. 背景


在Android 开发中常常会涉及到视频播放,Android本身的VideoView以及MediaPlayer使用起来总是遇到这样那样的坑,并且Api对开发者也不是很友好,更不用说支持的视频格式了。后来陆续用过腾讯的播放库百度的播放库,也研究过vitamioijkplayer,但都不是很满意,甚至有的库直接就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);

四. 效果


  • 正常

    这里写图片描述

  • 全屏

    • 横屏

    横屏

    • 竖屏

    这里写图片描述

  • 小窗

    normal_play

  • 列表

    • Listview

    play_video_in_ListView play_video_in_ListView_tiny_when_scrollOut

    • RecyclerView

    play_video_in_RecyclerView play_video_in_RecyclerView_tiny_when_scrollOut

五. 结构


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

这里写图片描述

六. 自定义UI


整理中,待续 …

七. 未来计划


  • 播放视频显示字幕

  • 多视频源切换

  • 边下边播

  • 集成弹幕

  • ……

八. 最后


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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值