fix [修复-修改视频框架]

This commit is contained in:
hch
2024-04-01 18:20:10 +08:00
parent 962a07d6d1
commit 97c692d41d
15 changed files with 316 additions and 169 deletions

View File

@@ -1 +1 @@
apply plugin: 'com.android.library'
apply plugin: 'com.android.library'

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
>
xmlns:tools="http://schemas.android.com/tools">
<!--com.kugou.fanxing.allinone.watch.liveroominone.media.FALiveRoomInOneActivity"-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
@@ -11,8 +10,8 @@
<application
android:allowBackup="true"
tools:replace="allowBackup"
android:theme="@style/AppTheme">
android:theme="@style/AppTheme"
tools:replace="allowBackup">
<activity android:name=".activity.LiveTRTCAnchorActivity" />
<activity
android:name=".activity.LiveAnchorActivity"
@@ -124,6 +123,10 @@
<activity
android:name=".activity.CompensateActivity"
android:screenOrientation="portrait" />
<activity
android:name=".activity.VideoPlayActivity"
android:screenOrientation="portrait" />
</application>
</manifest>

View File

@@ -0,0 +1,121 @@
package com.yunbao.live.activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.fragment.app.FragmentTransaction;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.DefaultLoadControl;
import com.google.android.exoplayer2.ExoPlayer;
import com.google.android.exoplayer2.MediaItem;
import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.ui.AspectRatioFrameLayout;
import com.google.android.exoplayer2.ui.PlayerView;
import com.google.android.exoplayer2.ui.StyledPlayerView;
import com.lxj.xpopup.XPopup;
import com.makeramen.roundedimageview.RoundedImageView;
import com.yunbao.common.Constants;
import com.yunbao.common.activity.AbsActivity;
import com.yunbao.common.event.GiftWallItemEvent;
import com.yunbao.common.event.LiveGiftDialogEvent;
import com.yunbao.common.fragment.AllServiceChampionFragment;
import com.yunbao.common.fragment.GiftWithoutWallFragment;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.utils.L;
import com.yunbao.common.utils.RouteUtil;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
import com.yunbao.live.R;
import com.yunbao.live.dialog.CodexDialog;
import com.yunbao.live.dialog.GiftWallItemPopup;
import com.yunbao.live.dialog.MedalAchievementPopup;
import com.yunbao.live.views.GiftAlreadyWallFragment;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.List;
public class VideoPlayActivity extends AbsActivity {
private PlayerView placeholderView;
private ExoPlayer player1;
@Override
protected int getLayoutId() {
return R.layout.activity_google_play;
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DefaultLoadControl control = new DefaultLoadControl.Builder()
.setPrioritizeTimeOverSizeThresholds(false)
.setBackBuffer(10_000, true)
.setBufferDurationsMs(500,
5_000,
150,
200)
.build();
placeholderView = findViewById(R.id.placeholderView);
player1 = new ExoPlayer.Builder(mContext).setLoadControl(control).build();
player1.setVideoScalingMode(C.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING);
placeholderView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FILL);
placeholderView.requestLayout();
placeholderView.setKeepContentOnPlayerReset(true);
placeholderView.setPlayer(player1);
placeholderView.setShowRewindButton(false);
placeholderView.setShowFastForwardButton(false);
placeholderView.setShowPreviousButton(false);
placeholderView.setShowNextButton(false);
placeholderView.setShowShuffleButton(false);
placeholderView.setShowMultiWindowTimeBar(false);
placeholderView.setControllerAutoShow(false);
placeholderView.setUseController(false);
player1.addListener(new Player.Listener() {
@Override
public void onPlaybackStateChanged(int playbackState) {
Player.Listener.super.onPlaybackStateChanged(playbackState);
switch (playbackState) {
case ExoPlayer.STATE_IDLE:
L.e("ExoPlayer.STATE_IDLE-播放器已实例化,但尚未准备就绪。");
break;
case ExoPlayer.STATE_BUFFERING:
L.e("ExoPlayer.STATE_BUFFERING-播放器无法从当前位置开始播放,因为已缓冲的数据不足。");
break;
case ExoPlayer.STATE_READY:
L.e("ExoPlayer.STATE_READY-播放器可以立即从当前位置开始播放。这意味着如果播放器的 playWhenReady 属性为 true播放器将自动开始播放媒体。如果该属性为 false播放器会暂停播放。");
break;
case ExoPlayer.STATE_ENDED:
L.e("ExoPlayer.STATE_ENDED-播放器已完成媒体播放。");
break;
}
}
});
player1.setMediaItem(createMediaItem("https://downs.yaoulive.com/userhome/2024-03-29/98918_r3a5urihjf7qmlnkhdr5ak5ir1.MP4"));
player1.prepare();
player1.play();
}
private MediaItem createMediaItem(String url) {
return MediaItem.fromUri(url);
}
@Override
protected void onDestroy() {
super.onDestroy();
Bus.getOff(this);
}
}

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background_gift_wall_shape"
android:orientation="vertical">
<com.google.android.exoplayer2.ui.PlayerView
android:id="@+id/placeholderView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>