iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >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://www.lsjlt.com/news/371671.html(转载时请注明来源链接)

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

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • 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
  • 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
    划水
  • Android学习之Broadcast的简单使用
    本文实例为大家分享了Android学习之Broadcast的使用方法,供大家参考,具体内容如下实现开机启动提示网络的广播package com.example.luobo.broadcasttest;import android.conte...
    99+
    2023-05-30
    android broadcast roi
  • python爬虫之pyppeteer库简单使用
    pyppeteer 介绍Pyppeteer之前先说一下Puppeteer,Puppeteer是谷歌出品的一款基于Node.js开发的一款工具,主要是用来操纵Chrome浏览器的 AP...
    99+
    2024-04-02
  • Java基础之Thymeleaf的简单使用
    Java代码 package com.zzx.controller; import com.zzx.model.User; import org.springframework...
    99+
    2024-04-02
  • 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
  • 简单使用Linux
    目录 Linux的组成 使用桌面终端访问linux 字符命令 基础 查看网卡信息以及获取ip地址 远程连接Linux服务器 Xshell远程连接Linux 使用MobaXterm远程连接Linux ​编辑 远程操作命令 重置root密码 ...
    99+
    2023-09-13
    linux 运维 服务器
  • EnterCriticalSection简单使用
    EnterCriticalSection是C++中的一个函数,用于进入一个临界区。临界区是一段代码,同一时间只能有一个线程执行。下面...
    99+
    2023-09-21
    使用
  • RestHighLevelClient-简单使用
    一、创建连接 !ps:RestHighLevelClient是官方指定的连接API。另外一个是TransportClient,但是TransportClient这个是已经废弃不用的,所以会在ES8.0之后完全移除,也就是说8.0之后就无法使...
    99+
    2024-04-02
  • Kafka_python:简单使用
    KafkaConsumer #!/usr/bin/env python #coding:gbk #kafka的使用 consumer使用 import kafka import KafkaConsumer #消费kafka中最...
    99+
    2023-01-31
    简单 Kafka_python
  • Java新手学习之IO流的简单使用
    目录前言IO流1、基本概念 2、IO流分类 3、File3.1File基本概念3.2创建文本3.3创建目录3.4判断、读取和删除4、字节流 4.1字节流...
    99+
    2024-04-02
  • scrapy的简单使用
    使用之前的创建虚拟环境方法(pipenv) 创建虚拟环境并进入虚拟环境 mkdir douban cd douban pipenv install pipenv shell 再安装我们的scrapy pipenv install s...
    99+
    2023-01-30
    简单 scrapy
  • Python简单使用InfluxDB
    之前已经在自己的MQTT服务器上安装好了InfluxDB时序数据库,接下来写个Python程序测试下. API详情参阅这里 打开powershell,执行pip install influxdb安装模块 程序API详细参考这...
    99+
    2023-01-31
    简单 Python InfluxDB
  • Python Tkinter 简单使用
    简单的一些实例,能够实现一般的功能就够用了 Tkinter: 创建顶层窗口: # -*- coding: utf-8 -*- from Tkinter import *   root = Tk() root.title("顶层窗口") ...
    99+
    2023-01-30
    简单 Python Tkinter
  • python logging简单使用
    #coding: UTF-8'''Created on 2014年1月6日@author: mingliu'''import logging#导入mylog = logging.getLogger('mylogger')#申请一个名字oth...
    99+
    2023-01-31
    简单 python logging
  • NFS的简单使用
    在NFS服务器建一个目录,用来存共享文件,提供NFS磁盘空间[root@PROD2 ~]# mkdir -p /u01/nfs_shares[root@PROD2 ~]# ll /u01总用量 8drwxr...
    99+
    2024-04-02
  • python datetime简单使用
    import datetime #当前时间print datetime.datetime.now()2018-06-13 16:22:42.414143 #当前时间减去七天print datetime.datetime.now() - da...
    99+
    2023-01-31
    简单 python datetime
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作