Android 使用ExoPlayer视频播放 (一)

一、前言

ExoPlayer是google开源的应用级媒体播放器项目,目前已有1W+的start,并一直在维护。该开源项目包含ExoPlayer库和演示
demo,github地址:https://github.com/google/ExoPlayer

二、优缺点比较

与Android内置的MediaPlayer相比,ExoPlayer具有许多优点:
*支持通过HTTP(DASH)和SmoothStreaming进行动态自适应流,这两种都不受MediaPlayer的支持。还支持许多其他格式
*能够自定义和扩展播放器,以适应各种不同需求。 ExoPlayer专门设计了这一点,大部分组件都可以自己替换
*官网说了很多,其实说到底最主要的就是各个组件可以自定义,还可以接入ffmpeg组件,基本能满足99.9%的需求
与IJKPlayer和Vitamio相比,ExoPlayer具有的优点:
*导入项目之后APK体积增加小
缺点:
*最低支持版本4.4
*实现比较复杂

三、概述

ExoPlayer库的核心是Exoplayer接口,Exoplayer公开了传统的高级媒体播放器功能,例如缓冲媒体、播放、
暂停和seek等功能,ExoPlayer通过组件实现替他高级功能。ExoPlayer公同的组件有:
*MediaSource:定义多媒体数据源,从Uri中读取数据,传入ExoPlayer。
*TrackSelector:轨道提取器,从MediaSource中提取各个轨道的二进制数据,交给Render渲染。
*LoadControl:可以控制MediaSource,比如什么时候开始缓冲,缓冲多少之后暂停缓冲

四、入门

1、添加依赖

项目根目录中的build.gradle文件中包含jcenter仓库:

repositories {
    jcenter()
}

用app模块的build.gradle文件中添加ExoPlayer库的依赖:

compile 'com.google.android.exoplayer:exoplayer:r2.X.X'
2、创建播放器
// 创建带宽
BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
// 创建轨道选择工厂
TrackSelection.Factory videoTrackSelectionFactory = new A
// 创建轨道选择实例
TrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);
// 创建播放器实例
SimpleExoPlayer player = ExoPlayerFactory.newSimpleInstance(this, trackSelector);
3、添加SimpleExoPlayerView,绑定SimpleExoPlayer

在XML文件中添加SimpleExoPlayerView控件,此控件实现了视频播放的基本界面,内部包含了PlaybackControlView,实现了对视频播放的基本控制。添加SimpleExoPlayerView之后绑定SimpleExoPlayer

 simpleExoPlayerView.setPlayer(player);
4、准备并开始播放器
// 创建加载数据的工厂
dataSourceFactory = new DefaultDataSourceFactory(this,Util.getUserAgent(this,"MyApplication"),null);
Uri uri = Uri.parse(url);
// 创建资源
ExtractorMediaSource mediaSource = new ExtractorMediaSource.Factory(dataSourceFactory).createMediaSource(uri);
// 准备播放
player.prepare(mediaSource);
// 开始播放
player.setPlayWhenReady(true);
5、退出时释放播放器
 @Override
    protected void onDestroy() {
        super.onDestroy();
        if (player != null) {
            player.release();
        }
    }
6、离开界面时暂停播放
@Override
    protected void onPause() {
        super.onPause();
        if (player != null) {
            player.setPlayWhenReady(false);
        }
    }
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
ExoPlayer是一个开源的Android视频播放器,由Google开发和维护。它支持多种音视频格式、网络协议和多种数据源,可以满足各种应用场景的需求。下面是使用ExoPlayer进行音视频播放的基本步骤: 1. 添加ExoPlayer库依赖 在项目的build.gradle中添加以下依赖库: ``` implementation 'com.google.android.exoplayer:exoplayer-core:2.14.0' implementation 'com.google.android.exoplayer:exoplayer-dash:2.14.0' // 适用于DASH格式视频 implementation 'com.google.android.exoplayer:exoplayer-ui:2.14.0' // 可选依赖,提供了默认的播放器UI组件 ``` 2. 创建ExoPlayer实例 在需要播放视频的Activity或Fragment中创建ExoPlayer实例: ``` SimpleExoPlayer player = new SimpleExoPlayer.Builder(context).build(); ``` 3. 准备媒体资源 准备需要播放的媒体资源,可以是本地文件或网络地址。如果是网络资源,需要使用ExtractorMediaSource或DashMediaSource进行数据源的构建: ``` MediaItem mediaItem = MediaItem.fromUri(uri); // uri为需要播放的资源地址 player.setMediaItem(mediaItem); player.prepare(); ``` 4. 开始播放 调用ExoPlayer的start方法即可开始播放: ``` player.play(); ``` 5. 暂播放 可以通过pause和stop方法实现暂播放: ``` player.pause(); player.stop(); ``` 6. 释放资源 在Activity或Fragment的生命周期中,需要在onDestroy或onDestroyView方法中释放ExoPlayer资源: ``` player.release(); ``` 以上就是使用ExoPlayer进行音视频播放的基本步骤。需要注意的是,ExoPlayer播放过程中可能会抛出各种异常,需要在代码中进行处理。同时,ExoPlayer还提供了丰富的参数配置和事件监听接口,可以根据具体需求进行配置和使用
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值