作为一个资深的Android开辟人员,视频播放器是不可或缺的一个重要构成,今天先搞ExoPlayer
支持格式:
MP4, M4A, FMP4, WebM, MKV, MP3, Ogg, WAV, MPEG-TS, MPEG-PS, FLV and ADTS (AAC)等
详细使用方法:
(1)添加依赖
可以去官网检察最新的版本信息
- implementation 'com.google.android.exoplayer:exoplayer-core:2.15.1'
- implementation 'com.google.android.exoplayer:exoplayer-ui:2.15.1'
复制代码 (2)添加Java8的支持
- android {
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
- }
复制代码 (3)layout.xml 布局文件
- //app:resize_mode="zoom"设置居中显示,避免竖屏在小窗口展示变形
- <com.google.android.exoplayer2.ui.PlayerView
- app:resize_mode="zoom"
- android:id="@+id/video_view"
- android:layout_width="match_parent"
- android:layout_height="400dp"/>
复制代码 (4)初始化播放器
- private SimpleExoPlayer player;
- private void initExoPlayer(){
- String url = "你的url地址";
- Uri uri = null;
- uri = Uri.parse(url);
- player = new SimpleExoPlayer.Builder(mContext).build();
- DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(mContext, Util.getUserAgent(mContext,"Application"));
- MediaSource videoSource = new ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(uri);
- //循环5次
- LoopingMediaSource loopingMediaSource = new LoopingMediaSource(videoSource, 5);
- player.prepare(loopingMediaSource);
- player.setPlayWhenReady(true);//不想让其自动播放设为false
- player.addListener(new Player.Listener() {
- @Override
- public void onPlaybackStateChanged(int playbackState) {
- switch (playbackState) {
- case Player.STATE_READY:
- Log.d("PLAY_STATE", "加载就绪,可以播放");
- break;
- case Player.STATE_BUFFERING:
- Log.d("PLAY_STATE", "缓冲中...");
- break;
- case Player.STATE_ENDED:
- Log.d("PLAY_STATE", "播放结束...");
- break;
- case Player.STATE_IDLE:
- break;
- }
- }
- });
- binding.videoView.setPlayer(player);
- }
复制代码 第四步完成就已经可以播放视频了
(5)释放
- @Override
- protected void onDestroy() {
- player.release();
- super.onDestroy();
- }
复制代码 (6)全屏
直接修改布局就可以了,这个没什么可介绍的,需要注意的是,状态栏标题栏需要隐藏掉
(7)自定义控制栏
需要在xml布局文件种添加这属性
app:controller_layout_id=“@layout/layout”
需要对应的id
1)进度条
- <com.google.android.exoplayer2.ui.DefaultTimeBar
- android:id="@+id/exo_progress"
- android:layout_width="match_parent"
- android:layout_height="15dp"
- app:bar_height="2dp"
- app:unplayed_color="@color/teal_200"
- app:played_color="@color/teal_200"
- app:scrubber_color="@color/teal_200"
- app:buffered_color="@color/white"
- tools:ignore="MissingConstraints" />
复制代码 2)开始按钮
- <ImageView
- android:layout_gravity="center"
- android:src="@drawable/video_play"
- android:id="@+id/exo_play"
- android:layout_width="40dp"
- android:layout_height="40dp"/>
复制代码 3)停息按钮
- <ImageView
- android:layout_gravity="center"
- android:src="@drawable/stop"
- android:id="@+id/exo_pause"
- android:layout_width="40dp"
- android:layout_height="40dp"/>
复制代码 4)进度时间格式
- <TextView
- android:layout_marginLeft="40dp"
- android:layout_gravity="center"
- android:id="@+id/exo_position"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:contentDescription="@null"
- android:text="1"
- android:textColor="@color/white"
- android:textSize="25dp" />
- <TextView
- android:layout_gravity="center"
- android:id="@+id/splash_tv"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:contentDescription="@null"
- android:text="/"
- android:textColor="@color/white"
- android:textSize="25dp"
- tools:text="/" />
- <TextView
- android:layout_gravity="center"
- android:id="@+id/exo_duration"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:contentDescription="@null"
- android:text="1"
- android:textColor="@color/white"
- android:textSize="25dp" />
复制代码 可以在页面上添加本身的个性化按钮,直接findViewById()就能实例化
打完收工,干活儿去吧
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |