Android视频播放器ExoPlayer
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相关推荐
- Android视频播放器ExoPlayer全屏
Android视频播放器ExoPlayer全屏 布局添加全屏按键 1. app gradle dependencies { implementation 'com.google.android.exo ...
- Android 视频播放器 (二):使用MediaPlayer播放视频
在 Android 视频播放器 (一):使用VideoView播放视频 我们讲了一下如何使用VideoView播放视频,了解了基本的播放器的一些知识和内容.也知道VideoView内部封装的就是Med ...
- MediaPlayer+TextureView,完美切换全屏、小窗口的 Android 视频播放器
NiceVieoPlayer 项目地址:xiaoyanger0825/NiceVieoPlayer 简介:MediaPlayer+TextureView,完美切换全屏.小窗口的 Android 视频 ...
- 基于ffmpeg+opengl+opensl es的android视频播放器
最近做了一个android视频播放器,在jni中采用c/c++现了播放器的播放,暂停,快进等基本的播放器功能. 使用开源库FFMpeg来解码,得到音视频数据,FFMPEG是一个功能强大的音视频解码,编 ...
- 视频教程-FFmpeg+OpenGL ES+OpenSL ES打造Android视频播放器-Android
FFmpeg+OpenGL ES+OpenSL ES打造Android视频播放器 从事Android移动端开发多年.主导开发过直播.电商.聊天等各种类型APP和游戏SDK:熟悉Android音视频开发 ...
- android视频播放器报告,android视频播放器实训报告.doc
实训报告书 实训名称: Android视频播放器 系 (部): 专业班级: 学生姓名: 学 号: 指导教师: 完成日期: 实训课题Android视频播放器实训人姓名 同组人员实训日期 实训成绩指导教师 ...
- Android视频播放器实现小窗口和全屏状态切换
Android视频播放器实现小窗口和全屏状态切换 实在是不好意思,楼下评论的兄弟久等了,这文章一直没写第一是没时间,第二是自己准备也不充足,最近才看了好几个Android视频播放器的开源项目,才对视频 ...
- android播放器国内外现状,RockPlayer:全球最好的Android视频播放器?
RockPlayer是一款Android上的视频播放器,用来播放存储在手机本地的视频,支持几乎所有的视频格式.RockPlayer由中国北京的一家创业团队开发,他们刚刚推出了新版本应用,开始支持And ...
- android 播放视频链接,如何通过Android视频播放器中的直接链接播放MP4视频?
我正在制作一个 Android应用程序,我需要通过直接下载链接在Android默认本机视频播放器中播放mp4视频. 要打开Android视频播放器,我使用以下代码 Intent intent = ne ...
最新文章
- Oracle10g.CentOS6安装
- python信用卡违约_Python信用卡验证
- vector/list/map/set的插入、删除、遍历 - remove\erase函数
- 限时免费报名丨网易新消费CXO论坛 - 深圳站
- PYTHON的主模块
- 面试精讲之面试考点及大厂真题 - 分布式专栏 04 谈谈你对分布式的理解,为什么引入分布式?
- 北交大实验室爆炸事故后续
- 零售的本质是什么呢?
- OpenGL基础2:OpenGL简介
- Vue实战笔记(一) 引入Ant Design
- 教育教学微课题研究方案——实习调研论文
- Elasticsearch(006):es中filtered和filter的区别
- Python实现PDF合并工具(含源码)
- 【JPress】Menu
- 能和机器划拳,猜中你的表情,百度开了一家超好玩的“AI体验店”
- 计算机软硬件问题及解决方法(经验篇)
- echarts 路线图 实例 线路图 及线路图特效
- Mac彻底删除mysql,重新安装mysql,修改mysql用户权限
- java 利用工具包Geotools实现不同坐标系之间坐标转换
- 如何使用CorelDRAW 2019绘制谷歌浏览器Logo