我的编程空间,编程开发者的网络收藏夹
学习永远不晚

AndroidX Media3之ExoPlayer简单使用(1)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

AndroidX Media3之ExoPlayer简单使用(1)

ExoPlayer是谷歌开源的一个应用级的音视频播放器。它提供了 Android 的 MediaPlayer API 的替代方案,用于在本地和通过 Internet 播放音频和视频。ExoPlayer 支持 Android 的 MediaPlayer API 目前不支持的功能,包括 DASH 和 SmoothStreaming 自适应播放。

ExoPlayer于2014年推出,而在2021年新推出了AndroidX Media3。

Media3 是 Android 媒体支持库的新家,里面包括了 ExoPlayer,目前仍处于Beta 版阶段,还未发布正式版,因此ExoPlayer 和 Media3 目前处于同步更新阶段,Media3的1.0.0-beta02版本ExoPlayer 2.18.1 版本相对应。具体更新说明:https://developer.android.google.cn/jetpack/androidx/releases/media3#version_100_2

两者的github地址,都包含有demo:Meida3ExoPlayer

依赖项

基本的Google Maven 仓库和Java 8支持就不说,新建的项目都会自动配置好。如果是网络视频链接,不要忘记了网络权限。如果是从ExoPlayer迁移到Media3,可查看Media3迁移指南
主要的依赖项是media3-exoplayer,其余的media3-ui、media3-cast、media3-exoplayer-dash等等按需添加。

    implementation 'androidx.media3:media3-exoplayer:1.0.0-beta02'    implementation 'androidx.media3:media3-ui:1.0.0-beta02'

media3-exoplayer 对应着ExoPlayer里exoplayer-core,提供着exoplayer的核心功能,必须添加。media3-ui对应着ExoPlayer里exoplayer-ui,提供着用于ExoPlayer的UI组件和资源。

创建播放器,添加至视图

使用ExoPlayer.Builder(this).build()就可以创建出一个player:

val player = ExoPlayer.Builder(this).build()

media3-ui库为媒体播放提供了一系列预构建的UI组件,其中PlayerView中包含了PlayerControlView和渲染视频的Surface,在布局文件中直接使用PlayerView:

    

然后将创建的播放器添加至视图上:

playerView.player = player

填充媒体数据,准备播放

在ExoPlayer中媒体数据由MediaItem表示,setMediaItem可以填充媒体数据,addMediaItem可以填充一系列媒体数据列表。

//填充媒体数据player.addMediaItem(MediaItem.fromUri(url3))//准备播放player.prepare()//准备完成就开始播放player.playWhenReady = true

至此,就可以使用ExoPlayer进行视频播放了。playerView中封装好了对于播放器的控制以及播放异常情况。

播放器控制

以下为常用控制播放的方法:

  • prepare 准备
  • playWhenReady 准备完成立即播放
  • play 播放
  • pause 暂停
  • seekTo 指定进度
  • repeatMode 指定播放的循环模式
  • setPlaybackSpeed 播放速度
  • hasPreviousMediaItem/hasNextMediaItem 播放列表中是否有上一个/下一个媒体数据
  • seekToPreviousMediaItem/seekToNextMediaItem 播放列表中指定进度为上一个/下一个媒体数据

播放器释放

当不再需要播放器时,记得释放资源:

player.stop()player.release()

播放事件监听

通过player.addListener添加一个Player.Listener进行播放事件的监听。Player.Listener有空的默认方法,因此按需实现所需要的方法即可。

播放状态

ExoPlayer具有四种播放状态:

  • STATE_IDLE:初始状态,此时播放器没有可以播放的资源,播放器停止播放或者播放失败后也会处于该状态
  • STATE_BUFFERING: 没有足够的数据可以加载播放,此时无法立即播放
  • STATE_READY : 播放器可以立即播放,是否播放取决于playWhenReady的值,该值表达了使用者的意愿,为true,将会开始播放,否则不播。
  • STATE_ENDED: 播放完了所有的资源后处于该状态

在Player.Listener中通过onPlaybackStateChanged方法就可以拿到播放状态。

播放异常

在Player.Listener中通过onPlayerError方法就可以监听到播放异常情况。

来源地址:https://blog.csdn.net/yuantian_shenhai/article/details/127870700

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

AndroidX Media3之ExoPlayer简单使用(1)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

AndroidX Media3之ExoPlayer简单使用(1)

ExoPlayer是谷歌开源的一个应用级的音视频播放器。它提供了 Android 的 MediaPlayer API 的替代方案,用于在本地和通过 Internet 播放音频和视频。ExoPlayer 支持 Android 的 MediaP
2023-08-16

Android学习之Broadcast的简单使用

本文实例为大家分享了Android学习之Broadcast的使用方法,供大家参考,具体内容如下实现开机启动提示网络的广播package com.example.luobo.broadcasttest;import android.conte
2023-05-30

Android学习之介绍Binder的简单使用

前言 最近因为公司项目需求,需要远程调度启动客户端输入法输入内容。这就是大致的需求流程,这篇首先讲远程与服务控制端通讯。首先控制服务端定义好一个Service,且在ServiceManager注册添加服务。 在这里我讲解远程端与服务控制端通
2022-06-06

android应用开发之spinner控件的简单使用

Android的控件有很多种,其中就有一个Spinner的控件,这个控件其实就是一个下拉显示列表。Spinner是位于 android.widget包下的,每次只显示用户选中的元素,当用户再次点击时,会弹出选择列表供用户选择,而选择列表中
2022-06-06

python之virtualenv的简单使用方法(必看篇)

什么是virtualenv? virtualenv可以创建独立Python开发环境,比如当前的全局开发环境是python3.6,现在我们有一个项目需要使用django1.3,另一个项目需要使用django1.9,这个时候就可以使用virtu
2022-06-04

Android可拖动的进度条:SeekBar之简单使用

SeekBar是Android中常见的可拖动的进度条控件,可以用于控制音量、亮度、播放进度等。在使用SeekBar之前,需要先在布局文件中声明SeekBar控件,并设置一些基本属性。## 在布局文件中声明SeekBar控件在布局文件中添加S
2023-08-22

Linux学堂之Vim编辑器的简单命令使用

  众所周知vi编辑器是Linux和Unix上最基本的文本编辑器,由于不需要图形界面所以vi是效率很高的文本编辑器,而vim作为Vi的加强版更容易使用,所以掌握Vim编辑器的使用方法是非常重要的。为此在本文中编程学习网笔者就为大家介绍Vim编辑器的基本概念和一些简单命令的使用供大家参考参考。    ◎v
Linux学堂之Vim编辑器的简单命令使用
2024-04-17

Java数据结构之位图的简单实现和使用

位图, 是一种非常常见的结构, 它使用每个二进制位来存放一个值的状态, 就类似于 Java 当中 HashSet 存储元素的功能。本文主要来介绍一下位图的简单实现和使用,需要的可以参考一下
2023-05-19

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录