Android视频播放器Exoplayer自定义

一.背景

最近要用播放器播放视频,以前没怎么做过,但是听说过很多款第三方播放器,Android系统是没有播放器,以前写过一个用surfaceview写的简易播放器,但是离商用还有很远的路,所以经过一番研究,我还是决定用谷歌的Exoplayer,至于原因请看下面

1.vitamio

官网地址:https://www.vitamio.org/

据说挺好用,但是要钱的,所以商用不行,貌似还不少,所以放弃

2.ijk

github地址:https://github.com/Bilibili/ijkplayer

B站的播放器

星星有10000多,应该挺好用,但是下面的商业权限太多,不知道能不能用,原因还有就是demo没跑起来吐舌头

3.jiecao

github地址:https://github.com/lipangit/JieCaoVideoPlayer

星星快3000,简单易用,傻瓜式的,但是封装的太死,而且里面有些东西封装的不合理,貌似是基于ijk(以前)和Exoplayer(现在是)

4.exoplayer

github地址:https://github.com/google/ExoPlayer

项目中我用了这个,1.不要钱  2.里面提到了兼容性好,不用自己做 3.就是扩展性相对来说比较好,支持大部分音视频播放


二.怎么使用

(1).基本使用官网讲的很清楚,这里我就不赘述了

(2)开始讲讲自定义的过程吧,很简单的(开始我也以为很复杂,其实并不难)

这里我讲的版本是R.2.1.0

在这个自定义我做了

1.音量调节(seekbar,如何调节在我其他文章有,去看音量调节)

2.明暗度调节(用了seekbar,如何调节在我其他文章有,看我怎么做

3.加载缩略图(需要自身后台接口支持)

4.图标的一些替换

5.横竖屏自适应(类似优酷,爱奇艺,看我怎么做

6.还有一些细节的调整

SimpleExoplayerView.java

if (attrs != null) {
      TypedArray a = context.getTheme().obtainStyledAttributes(attrs,
          R.styleable.SimpleExoPlayerView, 0, 0);
      try {
        playerLayoutId = a.getResourceId(R.styleable.SimpleExoPlayerView_player_layout_id,
            playerLayoutId);
        useArtwork = a.getBoolean(R.styleable.SimpleExoPlayerView_use_artwork, useArtwork);
        useController = a.getBoolean(R.styleable.SimpleExoPlayerView_use_controller, useController);
        surfaceType = a.getInt(R.styleable.SimpleExoPlayerView_surface_type, surfaceType);
        resizeMode = a.getInt(R.styleable.SimpleExoPlayerView_resize_mode, resizeMode);
        controllerShowTimeoutMs = a.getInt(R.styleable.SimpleExoPlayerView_show_timeout,
            controllerShowTimeoutMs);
      } finally {
        a.recycle();
      }

PlayerbackControlVIew.java

 int controllerLayoutId = R.layout.exo_playback_control_view;
    rewindMs = DEFAULT_REWIND_MS;
    fastForwardMs = DEFAULT_FAST_FORWARD_MS;
    showTimeoutMs = DEFAULT_SHOW_TIMEOUT_MS;
    if (attrs != null) {
      TypedArray a = context.getTheme().obtainStyledAttributes(attrs,
          R.styleable.PlaybackControlView, 0, 0);
      try {
        rewindMs = a.getInt(R.styleable.PlaybackControlView_rewind_increment, rewindMs);
        fastForwardMs = a.getInt(R.styleable.PlaybackControlView_fastforward_increment,
            fastForwardMs);
        showTimeoutMs = a.getInt(R.styleable.PlaybackControlView_show_timeout, showTimeoutMs);
        controllerLayoutId = a.getResourceId(R.styleable.PlaybackControlView_controller_layout_id,
            controllerLayoutId);
      } finally {
        a.recycle();
      }


可以看出  这两个关键的东西,布局都是是可以直接替换的,而且里面的一些属性可以设置(个人觉得一些开源东西现在只能看源码才能知道怎么用,文档现在很少了),所以如果你要定义自己东西就直接改布局就行了,然后结合一些监听就可以了。


最后是不是觉得写得很少?

我也觉得有点少,但是我也不知道写些啥,api的用法都在源码的那个Demo里,一看就明白,改吧改吧就能用了。 PS:多看源码早成大牛大笑



  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Android上构建一个视频播放器的架构可以有多种方式。一个常见的方法是使用MediaPlayer类来处理视频的播放和控制。您可以在Activity或Fragment中创建一个MediaPlayer对象,并使用SurfaceView来显示视频内容。当锁屏时,您可以在Activity或Fragment的生命周期方法中处理MediaPlayer的暂停和恢复。例如,在onPause方法中暂停播放器,在onResume方法中恢复播放器。 另一种方法是使用ExoPlayer库,它是Google开发的一个强大的、灵活的媒体播放器框架。ExoPlayer提供了更高级的功能,如自适应流媒体、DRM保护、字幕和广告插入等。您可以在ExoPlayer官方文档中找到更多关于如何在Android上构建一个视频播放器的详细指南。 总的来说,构建一个Android视频播放器的架构需要考虑到音频和视频数据的播放、界面的展示和控制、生命周期的管理等方面。根据您的需求和技术要求,选择合适的播放器库或自定义实现来构建您的视频播放器架构。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [linux开源视频播放器_3个适用于Linux的开源音乐播放器](https://blog.csdn.net/cumj63710/article/details/107391565)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Android有关surfaceView重新创建的问题。](https://blog.csdn.net/a1010012805/article/details/46738581)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值