Android视频播放器ExoPlayer

SimpleExoPlayer

1. app gradle

dependencies {

implementation 'com.google.android.exoplayer:exoplayer:2.11.1'

android {

compileOptions {targetCompatibility JavaVersion.VERSION_1_8}

2. AndroidManifest配置权限

权限

 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

屏幕允许翻转

<activity android:name=".MainActivity" android:configChanges="orientation">

3. activity布局

<com.google.android.exoplayer2.ui.PlayerViewandroid:id="@+id/exo_player"android:layout_width="match_parent"android:layout_height="match_parent" />

4. Activity代码

package com.example.mysimpleexo;import androidx.appcompat.app.AppCompatActivity;import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;import com.google.android.exoplayer2.SimpleExoPlayer;
import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.source.ProgressiveMediaSource;
import com.google.android.exoplayer2.ui.PlayerView;
import com.google.android.exoplayer2.upstream.DataSource;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
import com.google.android.exoplayer2.util.Util;public class MainActivity extends AppCompatActivity {private PlayerView playerView;private SimpleExoPlayer player;private Context context = MainActivity.this;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);playerView = findViewById(R.id.exo_player);initializePlayer();}private void initializePlayer() {player = new SimpleExoPlayer.Builder(context).build();playerView.setPlayer(player);DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(context,Util.getUserAgent(context,"myExoPlayer"));MediaSource mediaSource = new ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(Uri.parse(Environment.getExternalStorageDirectory() + "/1.mp4"));player.prepare(mediaSource);}@Overridepublic void onBackPressed() {super.onBackPressed();player.release();}
}

4. 主要代码

//播放器初始化

private void initializePlayer() {player = new SimpleExoPlayer.Builder(context).build();playerView.setPlayer(player);DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(context,Util.getUserAgent(context,"myExoPlayer"));MediaSource mediaSource = new ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(Uri.parse(Environment.getExternalStorageDirectory() + "/1.mp4"));player.prepare(mediaSource);}

//资源释放

@Overridepublic void onBackPressed() {super.onBackPressed();player.release();}

参考链接:
https://exoplayer.dev/ui-components.html
https://developer.android.google.cn/guide/topics/media/exoplayer

Android视频播放器ExoPlayer相关推荐

  1. Android视频播放器ExoPlayer全屏

    Android视频播放器ExoPlayer全屏 布局添加全屏按键 1. app gradle dependencies { implementation 'com.google.android.exo ...

  2. Android 视频播放器 (二):使用MediaPlayer播放视频

    在 Android 视频播放器 (一):使用VideoView播放视频 我们讲了一下如何使用VideoView播放视频,了解了基本的播放器的一些知识和内容.也知道VideoView内部封装的就是Med ...

  3. MediaPlayer+TextureView,完美切换全屏、小窗口的 Android 视频播放器

    NiceVieoPlayer 项目地址:xiaoyanger0825/NiceVieoPlayer  简介:MediaPlayer+TextureView,完美切换全屏.小窗口的 Android 视频 ...

  4. 基于ffmpeg+opengl+opensl es的android视频播放器

    最近做了一个android视频播放器,在jni中采用c/c++现了播放器的播放,暂停,快进等基本的播放器功能. 使用开源库FFMpeg来解码,得到音视频数据,FFMPEG是一个功能强大的音视频解码,编 ...

  5. 视频教程-FFmpeg+OpenGL ES+OpenSL ES打造Android视频播放器-Android

    FFmpeg+OpenGL ES+OpenSL ES打造Android视频播放器 从事Android移动端开发多年.主导开发过直播.电商.聊天等各种类型APP和游戏SDK:熟悉Android音视频开发 ...

  6. android视频播放器报告,android视频播放器实训报告.doc

    实训报告书 实训名称: Android视频播放器 系 (部): 专业班级: 学生姓名: 学 号: 指导教师: 完成日期: 实训课题Android视频播放器实训人姓名 同组人员实训日期 实训成绩指导教师 ...

  7. Android视频播放器实现小窗口和全屏状态切换

    Android视频播放器实现小窗口和全屏状态切换 实在是不好意思,楼下评论的兄弟久等了,这文章一直没写第一是没时间,第二是自己准备也不充足,最近才看了好几个Android视频播放器的开源项目,才对视频 ...

  8. android播放器国内外现状,RockPlayer:全球最好的Android视频播放器?

    RockPlayer是一款Android上的视频播放器,用来播放存储在手机本地的视频,支持几乎所有的视频格式.RockPlayer由中国北京的一家创业团队开发,他们刚刚推出了新版本应用,开始支持And ...

  9. android 播放视频链接,如何通过Android视频播放器中的直接链接播放MP4视频?

    我正在制作一个 Android应用程序,我需要通过直接下载链接在Android默认本机视频播放器中播放mp4视频. 要打开Android视频播放器,我使用以下代码 Intent intent = ne ...

最新文章

  1. Oracle10g.CentOS6安装
  2. python信用卡违约_Python信用卡验证
  3. vector/list/map/set的插入、删除、遍历 - remove\erase函数
  4. 限时免费报名丨网易新消费CXO论坛 - 深圳站
  5. PYTHON的主模块
  6. 面试精讲之面试考点及大厂真题 - 分布式专栏 04 谈谈你对分布式的理解,为什么引入分布式?
  7. 北交大实验室爆炸事故后续
  8. 零售的本质是什么呢?
  9. OpenGL基础2:OpenGL简介
  10. Vue实战笔记(一) 引入Ant Design
  11. 教育教学微课题研究方案——实习调研论文
  12. Elasticsearch(006):es中filtered和filter的区别
  13. Python实现PDF合并工具(含源码)
  14. 【JPress】Menu
  15. 能和机器划拳,猜中你的表情,百度开了一家超好玩的“AI体验店”
  16. 计算机软硬件问题及解决方法(经验篇)
  17. echarts 路线图 实例 线路图 及线路图特效
  18. Mac彻底删除mysql,重新安装mysql,修改mysql用户权限
  19. java 利用工具包Geotools实现不同坐标系之间坐标转换
  20. 如何使用CorelDRAW 2019绘制谷歌浏览器Logo

热门文章

  1. 成都个人公司不注销有什么后果?
  2. 微信扫码支付流程原理图
  3. 【ArchSummit】Web3.0去中心化预言机网络技术剖析
  4. python爬虫初试-下载LOL全英雄皮肤
  5. php 汉字、字母验证码 例子
  6. 3 4j不是合法的python表达式_3+4j不是合法的Python表达式。
  7. [教你传话,表白,写信]
  8. 从学生到社会人_EmbeddedLove
  9. Cisco SN查询工具
  10. Android根据输入法的状态隐藏和关闭输入法