返回顶部
首页 > 资讯 > 精选 >AndroidX Media3之ExoPlayer简单使用(1)
  • 350
分享到

AndroidX Media3之ExoPlayer简单使用(1)

android音视频androidx 2023-08-16 16:08:19 350人浏览 八月长安
摘要

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

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

--结束END--

本文标题: AndroidX Media3之ExoPlayer简单使用(1)

本文链接: https://lsjlt.com/news/371671.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • AndroidX Media3之ExoPlayer简单使用(1)
    ExoPlayer是谷歌开源的一个应用级的音视频播放器。它提供了 Android 的 MediaPlayer API 的替代方案,用于在本地和通过 Internet 播放音频和视频。ExoPlayer 支持 Android 的 MediaP...
    99+
    2023-08-16
    android 音视频 androidx
  • Python之Gradio简单使用
    目录 安装Gradio示例用法应用界面1. gr.Interface2. gr.Blocks Gradio的输入和输出组件输入组件(Inputs)输出组件(Outputs) 其...
    99+
    2023-08-31
    python Gradio
  • mysql 安装 和简单使用技巧1
    # mysql_install_db  --user=mysql -datadir=/var/lib/mysql   初始化数据vncviewer  172.40.50.117...
    99+
    2024-04-02
  • Android 之 ViewPager 的简单使用
    本节引言: 本节带来的是Android 3.0后引入的一个UI控件——ViewPager(视图滑动切换工具),实在想不到 如何来称呼这个控件,他的大概功能:通过手势滑动可以完成View的切换,一般是用来做APP 的引导页或者实现图片轮播...
    99+
    2023-09-13
    android 动画
  • Python [::-1]的简单理解与用法
    从结果上来看,[::-1]的作用是对列表进行翻转,比方说: a = [1, 2, 3, 4, 5]print(a[::-1])b = "12345"print(b[::-1]) 输出: [5, 4, ...
    99+
    2023-09-02
    划水
  • Java基础之Thymeleaf的简单使用
    Java代码 package com.zzx.controller; import com.zzx.model.User; import org.springframework...
    99+
    2024-04-02
  • python爬虫之pyppeteer库简单使用
    pyppeteer 介绍Pyppeteer之前先说一下Puppeteer,Puppeteer是谷歌出品的一款基于Node.js开发的一款工具,主要是用来操纵Chrome浏览器的 AP...
    99+
    2024-04-02
  • Android学习之Broadcast的简单使用
    本文实例为大家分享了Android学习之Broadcast的使用方法,供大家参考,具体内容如下实现开机启动提示网络的广播package com.example.luobo.broadcasttest;import android.conte...
    99+
    2023-05-30
    android broadcast roi
  • vue之bus总线简单使用讲解
    vue之bus总线的简单使用 场景描述: A组件中包括B,C组件,而B组件中包括D组件,这时如果D组件想要在A组件中触发C组件的方法怎么办呢? 当然方案是有的,用状态管理vuex可以...
    99+
    2024-04-02
  • 简简单单使用Docker部署Confluence
    一、环境要求 1、已安装docker17及以上版本 二、容器运行 docker run -d --name confluence -p 8090:8090 --user root:...
    99+
    2024-04-02
  • Android学习之介绍Binder的简单使用
    前言 最近因为公司项目需求,需要远程调度启动客户端输入法输入内容。 这就是大致的需求流程,这篇首先讲远程与服务控制端通讯。首先控制服务端定义好一个Service,且在Ser...
    99+
    2022-06-06
    android学习 binder Android
  • nosql之mongodb简单安装与命令使用
    nosql:非关系型,分布式,不提供ACID    简单数据模型    元数据和应用数据分离   ...
    99+
    2024-04-02
  • mycat简单使用
    MyCat MyCAT是使用JAVA语言进行编写开发,使用前需要先安装JAVA运行环境(JRE),由于MyCAT中使用了JDK7中的一些特性,所以 要求必须在JDK7以上的版本上运行。 mysql mysql主从复制 首先安装m...
    99+
    2021-02-12
    mycat简单使用
  • sqlalchemy 简单使用
    一, sqlalchemy 与数据库连接安装:        pip install sqlalchemysqlalchemy...
    99+
    2024-04-02
  • RestHighLevelClient-简单使用
    一、创建连接 !ps:RestHighLevelClient是官方指定的连接API。另外一个是TransportClient,但是TransportClient这个是已经废弃不用的,所以会在ES8.0之后完全移除,也就是说8.0之后就无法使...
    99+
    2024-04-02
  • EnterCriticalSection简单使用
    EnterCriticalSection是C++中的一个函数,用于进入一个临界区。临界区是一段代码,同一时间只能有一个线程执行。下面...
    99+
    2023-09-21
    使用
  • 简单使用Linux
    目录 Linux的组成 使用桌面终端访问linux 字符命令 基础 查看网卡信息以及获取ip地址 远程连接Linux服务器 Xshell远程连接Linux 使用MobaXterm远程连接Linux ​编辑 远程操作命令 重置root密码 ...
    99+
    2023-09-13
    linux 运维 服务器
  • Kafka_python:简单使用
    KafkaConsumer #!/usr/bin/env python #coding:gbk #kafka的使用 consumer使用 import kafka import KafkaConsumer #消费kafka中最...
    99+
    2023-01-31
    简单 Kafka_python
  • android应用开发之spinner控件的简单使用
     Android的控件有很多种,其中就有一个Spinner的控件,这个控件其实就是一个下拉显示列表。Spinner是位于 android.widget包下的,每次只显...
    99+
    2022-06-06
    spinner Android
  • python之virtualenv的简单使用方法(必看篇)
    什么是virtualenv? virtualenv可以创建独立Python开发环境,比如当前的全局开发环境是python3.6,现在我们有一个项目需要使用django1.3,另一个项目需要使用django1...
    99+
    2022-06-04
    必看 使用方法 简单
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作