1、删除腾讯IM、腾讯播放器jar+so文件

2、注释+删除使用了腾讯SDK的地方
This commit is contained in:
老皮
2024-09-25 15:13:50 +08:00
parent 9b4a2bd5e5
commit 80892b14e4
74 changed files with 325 additions and 3358 deletions

View File

@@ -15,9 +15,6 @@ import android.view.ViewGroup;
import android.view.animation.AccelerateInterpolator;
import android.widget.FrameLayout;
import com.tencent.ugc.TXVideoEditConstants;
import com.tencent.ugc.TXVideoEditer;
import com.tencent.ugc.TXVideoInfoReader;
import com.yunbao.common.Constants;
import com.yunbao.common.activity.AbsActivity;
import com.yunbao.common.utils.DialogUitl;
@@ -47,11 +44,8 @@ import java.util.List;
*/
public class VideoEditActivity extends AbsActivity implements
VideoProcessViewHolder.ActionListener,//预处理控件点击取消回调
TXVideoEditer.TXVideoProcessListener, //视频编辑前预处理进度回调
TXVideoEditer.TXThumbnailListener, //视频编辑前预处理中生成每一帧缩略图回调
TXVideoEditer.TXVideoPreviewListener,
TXVideoEditer.TXVideoGenerateListener {
VideoProcessViewHolder.ActionListener//预处理控件点击取消回调
{
private static final String TAG = "VideoEditActivity";
private static final int STATUS_NONE = 0;
@@ -73,7 +67,7 @@ public class VideoEditActivity extends AbsActivity implements
private View mBtnNext;
private View mBtnPlay;
private ObjectAnimator mPlayBtnAnimator;//暂停按钮的动画
private TXVideoEditer mVideoEditer;
// private TXVideoEditer mVideoEditer;
private List<Bitmap> mBitmapList;//视频每一帧的缩略图
private long mVideoDuration;//视频总长度
private String mOriginVideoPath;//原视频路径
@@ -135,12 +129,12 @@ public class VideoEditActivity extends AbsActivity implements
finish();
return;
}
mVideoEditer = new TXVideoEditer(mContext);
/* mVideoEditer = new TXVideoEditer(mContext);
mVideoEditer.setVideoPath(mOriginVideoPath);
mVideoEditer.setVideoProcessListener(this);
mVideoEditer.setThumbnailListener(this);
mVideoEditer.setTXVideoPreviewListener(this);
mVideoEditer.setVideoGenerateListener(this);
mVideoEditer.setVideoGenerateListener(this);*/
mCutStartTime = 0;
mCutEndTime = mVideoDuration;
startPreProcess();
@@ -181,25 +175,12 @@ public class VideoEditActivity extends AbsActivity implements
switch (mPLayStatus) {
case STATUS_PLAY:
mPLayStatus = STATUS_PAUSE;
if (mVideoEditer != null) {
mVideoEditer.pausePlay();
}
break;
case STATUS_PAUSE:
mPLayStatus = STATUS_PLAY;
if (mVideoEditer != null) {
mVideoEditer.resumePlay();
}
break;
case STATUS_PREVIEW_AT_TIME:
mPLayStatus = STATUS_PLAY;
if (mVideoEditer != null) {
if (mPreviewAtTime > mCutStartTime && mPreviewAtTime < mCutEndTime) {
mVideoEditer.startPlayFromTime(mPreviewAtTime, mCutEndTime);
} else {
mVideoEditer.startPlayFromTime(mCutStartTime, mCutEndTime);
}
}
break;
}
if (mPLayStatus == STATUS_PAUSE) {
@@ -217,14 +198,6 @@ public class VideoEditActivity extends AbsActivity implements
* 开启视频预览
*/
private void startVideoPreview() {
if (mVideoEditer == null) {
return;
}
FrameLayout layout = (FrameLayout) findViewById(R.id.video_container);
TXVideoEditConstants.TXPreviewParam param = new TXVideoEditConstants.TXPreviewParam();
param.videoView = layout;
param.renderMode = TXVideoEditConstants.PREVIEW_RENDER_MODE_FILL_EDGE;
mVideoEditer.initWithPreview(param);
startPlay();
}
@@ -232,75 +205,11 @@ public class VideoEditActivity extends AbsActivity implements
* 开始播放
*/
private void startPlay() {
if (mVideoEditer != null) {
mPLayStatus = STATUS_PLAY;
mVideoEditer.startPlayFromTime(mCutStartTime, mCutEndTime);
hidePlayBtn();
}
}
/**
* 预览播放回调
*/
@Override
public void onPreviewProgress(int time) {
if (mPLayStatus == STATUS_PLAY && mCutViewHolder != null) {
mCutViewHolder.onVideoProgressChanged(time);
}
}
/**
* 预览播放回调
*/
@Override
public void onPreviewFinished() {
if (mPLayStatus == STATUS_PLAY) {
startPlay();//播放结束后,重新开始播放
}
}
/**
* 生成视频进度回调
*/
@Override
public void onGenerateProgress(float progress) {
if (mVideoGenerateViewHolder != null) {
mVideoGenerateViewHolder.setProgress((int) (progress * 100));
}
}
/**
* 生成视频结束回调
*/
@Override
public void onGenerateComplete(TXVideoEditConstants.TXGenerateResult result) {
L.e(TAG, "onGenerateComplete------->");
if (result.retCode == TXVideoEditConstants.GENERATE_RESULT_OK) {
L.e(TAG, "onGenerateComplete------->生成视频成功");
ToastUtil.show(R.string.video_generate_success);
switch (mSaveType) {
case Constants.VIDEO_SAVE_SAVE://仅保存
saveGenerateVideoInfo();
break;
case Constants.VIDEO_SAVE_PUB://仅发布
VideoPublishActivity.forward(mContext, mGenerateVideoPath, mSaveType,mMusicBean != null ? mMusicBean.getId() : 0);
break;
case Constants.VIDEO_SAVE_SAVE_AND_PUB://保存并发布
saveGenerateVideoInfo();
VideoPublishActivity.forward(mContext, mGenerateVideoPath, mSaveType,mMusicBean != null ? mMusicBean.getId() : 0);
break;
}
finish();
} else {
ToastUtil.show(R.string.video_generate_failed);
if (mVideoGenerateViewHolder != null) {
mVideoGenerateViewHolder.removeFromParent();
}
if (mBtnNext != null) {
mBtnNext.setEnabled(true);
}
}
}
/**
* 把新生成的视频保存到ContentProvider,在选择上传的时候能找到
@@ -345,39 +254,6 @@ public class VideoEditActivity extends AbsActivity implements
mMusicViewHolder.setActionListener(new VideoMusicViewHolder.ActionListener() {
@Override
public void onChooseMusic(MusicBean bean) {
if (mVideoEditer != null && bean != null) {
String bgmPath = bean.getLocalPath();
if (TextUtils.isEmpty(bgmPath)) {
return;
}
long bgmDuration = 0;
if (mMetadataRetriever == null) {
mMetadataRetriever = new MediaMetadataRetriever();
}
try {
mMetadataRetriever.setDataSource(bgmPath);
String duration = mMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
bgmDuration = Long.parseLong(duration);
} catch (Exception e) {
bgmDuration = 0;
e.printStackTrace();
}
if (bgmDuration == 0) {
return;
}
bean.setDuration(bgmDuration);
mVideoEditer.setBGM(bgmPath);
mVideoEditer.setBGMVolume(0.8f);
if (mHasOriginBgm) {
mVideoEditer.setVideoVolume(0);
}
mMusicBean = bean;
if (mVolumeViewHolder != null) {
mVolumeViewHolder.setMusicBean(bean);
}
mVideoEditer.stopPlay();
startPlay();
}
}
@Override
@@ -406,34 +282,19 @@ public class VideoEditActivity extends AbsActivity implements
@Override
public void onOriginalVolumeChanged(float value) {
if (mVideoEditer != null) {
mVideoEditer.setVideoVolume(value);
}
}
@Override
public void onBgmVolumeChanged(float value) {
if (mVideoEditer != null) {
mVideoEditer.setBGMVolume(value);
}
}
@Override
public void onBgmCancelClick() {
if (mVideoEditer != null) {
mVideoEditer.setVideoVolume(0.8f);
mVideoEditer.setBGM(null);
mVideoEditer.stopPlay();
startPlay();
}
mMusicBean = null;
}
@Override
public void onBgmCutTimeChanged(long startTime, long endTime) {
if (mVideoEditer != null) {
mVideoEditer.setBGMStartTime(startTime, endTime);
}
}
});
mVolumeViewHolder.addToParent();
@@ -456,9 +317,6 @@ public class VideoEditActivity extends AbsActivity implements
@Override
public void onFilterChanged(Bitmap bitmap) {
if (mVideoEditer != null) {
mVideoEditer.setFilter(bitmap);
}
}
});
mFilterViewHolder.addToParent();
@@ -487,41 +345,20 @@ public class VideoEditActivity extends AbsActivity implements
public void onCutTimeChanged(long startTime, long endTime) {
mCutStartTime = startTime;
mCutEndTime = endTime;
if (mVideoEditer != null) {
mVideoEditer.setCutFromTime(startTime, endTime);
}
}
@Override
public void onSpecialStart(int effect, long currentTimeMs) {
if (mVideoEditer != null) {
if (mPLayStatus == STATUS_NONE || mPLayStatus == STATUS_PREVIEW_AT_TIME) {
mVideoEditer.startPlayFromTime(mPreviewAtTime, mCutEndTime);
} else if (mPLayStatus == STATUS_PAUSE) {
mVideoEditer.resumePlay();
}
mPLayStatus = STATUS_PLAY;
mVideoEditer.startEffect(effect, currentTimeMs);
}
hidePlayBtn();
}
@Override
public void onSpecialEnd(int effect, long currentTimeMs) {
if (mVideoEditer != null) {
mVideoEditer.pausePlay();
mPLayStatus = STATUS_PAUSE;
mVideoEditer.stopEffect(effect, currentTimeMs);
}
showPlayBtn();
}
@Override
public void onSpecialCancel(long currentTimeMs) {
if (mVideoEditer != null) {
mVideoEditer.deleteLastEffect();
previewAtTime(currentTimeMs);
}
}
});
mCutViewHolder.addToParent();
@@ -531,10 +368,6 @@ public class VideoEditActivity extends AbsActivity implements
private void previewAtTime(long currentTimeMs) {
if (mVideoEditer != null) {
mVideoEditer.pausePlay();
mVideoEditer.previewAtTime(currentTimeMs);
}
mPLayStatus = STATUS_PREVIEW_AT_TIME;
mPreviewAtTime = currentTimeMs;
showPlayBtn();
@@ -591,7 +424,7 @@ public class VideoEditActivity extends AbsActivity implements
*/
private void startGenerateVideo() {
L.e(TAG, "startGenerateVideo------->生成视频");
if (mVideoEditer == null) {
/* if (mVideoEditer == null) {
return;
}
mBtnNext.setEnabled(false);
@@ -607,7 +440,7 @@ public class VideoEditActivity extends AbsActivity implements
mVideoGenerateViewHolder.addToParent();
mVideoEditer.setCutFromTime(mCutStartTime, mCutEndTime);
mGenerateVideoPath = StringUtil.generateVideoOutputPath();
mVideoEditer.generateVideo(TXVideoEditConstants.VIDEO_COMPRESSED_720P, mGenerateVideoPath);
mVideoEditer.generateVideo(TXVideoEditConstants.VIDEO_COMPRESSED_720P, mGenerateVideoPath);*/
}
private void showGroup() {
@@ -678,7 +511,7 @@ public class VideoEditActivity extends AbsActivity implements
if (mCutViewHolder != null) {
mCutViewHolder.release();
}
if (mVideoEditer != null) {
/* if (mVideoEditer != null) {
mVideoEditer.deleteAllEffect();
mVideoEditer.stopPlay();
mVideoEditer.cancel();
@@ -687,7 +520,7 @@ public class VideoEditActivity extends AbsActivity implements
mVideoEditer.setTXVideoPreviewListener(null);
mVideoEditer.setVideoGenerateListener(null);
mVideoEditer.release();
}
}*/
if (mVideoProcessViewHolder != null) {
mVideoProcessViewHolder.setActionListener(null);
}
@@ -705,7 +538,7 @@ public class VideoEditActivity extends AbsActivity implements
mHandler = null;
mMetadataRetriever = null;
mFilterViewHolder = null;
mVideoEditer = null;
// mVideoEditer = null;
mMusicViewHolder = null;
mVolumeViewHolder = null;
mCutViewHolder = null;
@@ -719,19 +552,19 @@ public class VideoEditActivity extends AbsActivity implements
protected void onPause() {
super.onPause();
mPaused = true;
if (mVideoEditer != null && mPLayStatus == STATUS_PLAY) {
mVideoEditer.pausePlay();
}
// if (mVideoEditer != null && mPLayStatus == STATUS_PLAY) {
// mVideoEditer.pausePlay();
// }
}
@Override
protected void onResume() {
super.onResume();
if (mPaused) {
if (mVideoEditer != null && mPLayStatus == STATUS_PLAY) {
mVideoEditer.resumePlay();
}
}
// if (mPaused) {
// if (mVideoEditer != null && mPLayStatus == STATUS_PLAY) {
// mVideoEditer.resumePlay();
// }
// }
mPaused = false;
}
@@ -756,14 +589,14 @@ public class VideoEditActivity extends AbsActivity implements
@Override
public void run() {
try {
TXVideoEditConstants.TXVideoInfo info = TXVideoInfoReader.getInstance().getVideoFileInfo(mOriginVideoPath);
/* TXVideoEditConstants.TXVideoInfo info = TXVideoInfoReader.getInstance().getVideoFileInfo(mOriginVideoPath);
if (mHandler != null) {
if (info == null) {
mHandler.sendEmptyMessage(MyHandler.ERROR);
} else {
mHandler.sendEmptyMessage(MyHandler.SUCCESS);
}
}
}*/
} catch (Exception e) {
if (mHandler != null) {
mHandler.sendEmptyMessage(MyHandler.ERROR);
@@ -778,7 +611,7 @@ public class VideoEditActivity extends AbsActivity implements
*/
private void doPreProcess() {
try {
if (mVideoEditer != null) {
/* if (mVideoEditer != null) {
mBitmapList = new ArrayList<>();
int thumbnailCount = (int) Math.floor(mVideoDuration / 1000f);
TXVideoEditConstants.TXThumbnail thumbnail = new TXVideoEditConstants.TXThumbnail();
@@ -787,7 +620,7 @@ public class VideoEditActivity extends AbsActivity implements
thumbnail.height = 100;
mVideoEditer.setThumbnail(thumbnail);
mVideoEditer.processVideo();
}
}*/
} catch (Exception e) {
e.printStackTrace();
processFailed();
@@ -796,48 +629,6 @@ public class VideoEditActivity extends AbsActivity implements
}
/**
* 录制结束后,视频预处理进度回调
*/
@Override
public void onProcessProgress(float progress) {
int p = (int) (progress * 100);
if (p > 0 && p <= 100) {
if (mVideoProcessViewHolder != null) {
mVideoProcessViewHolder.setProgress(p);
}
}
}
/**
* 录制结束后,视频预处理的回调
*/
@Override
public void onProcessComplete(TXVideoEditConstants.TXGenerateResult result) {
if (result.retCode == TXVideoEditConstants.GENERATE_RESULT_OK) {
if (mVideoProcessViewHolder != null && mVideoProcessViewHolder.getProgress() == 0) {
if (!mSdkError) {
mSdkError = true;
sdkProgressError();
}
} else {
processCompleted();
}
} else {
L.e(TAG, "视频预处理错误------->" + result.descMsg);
processFailed();
}
}
/**
* 制结束后,获取缩略图的回调
*/
@Override
public void onThumbnail(int i, long l, Bitmap bitmap) {
if (mBitmapList != null) {
mBitmapList.add(new SoftReference<>(bitmap).get());
}
}
/**

View File

@@ -21,11 +21,6 @@ import android.widget.TextView;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.tencent.rtmp.ITXLivePlayListener;
import com.tencent.rtmp.TXLiveConstants;
import com.tencent.rtmp.TXLivePlayConfig;
import com.tencent.rtmp.TXLivePlayer;
import com.tencent.rtmp.ui.TXCloudVideoView;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.Constants;
import com.yunbao.common.activity.AbsActivity;
@@ -61,7 +56,7 @@ import top.zibin.luban.OnRenameListener;
* 视频发布
*/
public class VideoPublishActivity extends AbsActivity implements ITXLivePlayListener, View.OnClickListener {
public class VideoPublishActivity extends AbsActivity implements View.OnClickListener {
public static void forward(Context context, String videoPath, int saveType, int musicId) {
@@ -75,8 +70,8 @@ public class VideoPublishActivity extends AbsActivity implements ITXLivePlayList
private static final String TAG = "VideoPublishActivity";
private TextView mNum;
private TextView mLocation;
private TXCloudVideoView mTXCloudVideoView;
private TXLivePlayer mPlayer;
// private TXCloudVideoView mTXCloudVideoView;
// private TXLivePlayer mPlayer;
private String mVideoPath;
private boolean mPlayStarted;//播放是否开始了
private boolean mPaused;//生命周期暂停
@@ -149,7 +144,7 @@ public class VideoPublishActivity extends AbsActivity implements ITXLivePlayList
mLocation.setText(CommonAppConfig.getInstance().getCity());
mCheckBox = findViewById(R.id.checkbox);
mCheckBox.setOnClickListener(this);
mTXCloudVideoView = findViewById(R.id.video_view);
/* mTXCloudVideoView = findViewById(R.id.video_view);
mPlayer = new TXLivePlayer(mContext);
mPlayer.setConfig(new TXLivePlayConfig());
mPlayer.setPlayerView(mTXCloudVideoView);
@@ -160,75 +155,50 @@ public class VideoPublishActivity extends AbsActivity implements ITXLivePlayList
int result = mPlayer.startPlay(mVideoPath, TXLivePlayer.PLAY_TYPE_LOCAL_VIDEO);
if (result == 0) {
mPlayStarted = true;
}
}*/
}
@Override
public void onPlayEvent(int e, Bundle bundle) {
switch (e) {
case TXLiveConstants.PLAY_EVT_PLAY_END://播放结束
onReplay();
break;
case TXLiveConstants.PLAY_EVT_CHANGE_RESOLUTION:
onVideoSizeChanged(bundle.getInt("EVT_PARAM1", 0), bundle.getInt("EVT_PARAM2", 0));
break;
case TXLiveConstants.PLAY_EVT_PLAY_PROGRESS:
int progress = bundle.getInt("EVT_PLAY_PROGRESS_MS");
if (mVideoLastProgress == progress) {
onReplay();
} else {
mVideoLastProgress = progress;
}
break;
}
}
@Override
public void onNetStatus(Bundle bundle) {
}
/**
* 获取到视频宽高回调
*/
public void onVideoSizeChanged(float videoWidth, float videoHeight) {
if (mTXCloudVideoView != null && videoWidth > 0 && videoHeight > 0) {
/*if (mTXCloudVideoView != null && videoWidth > 0 && videoHeight > 0) {
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) mTXCloudVideoView.getLayoutParams();
if (videoWidth / videoHeight > 0.5625f) {//横屏 9:16=0.5625
params.height = (int) (mTXCloudVideoView.getWidth() / videoWidth * videoHeight);
params.gravity = Gravity.CENTER;
mTXCloudVideoView.requestLayout();
}
}
}*/
}
/**
* 循环播放
*/
private void onReplay() {
if (mPlayStarted && mPlayer != null) {
/*if (mPlayStarted && mPlayer != null) {
mPlayer.seek(0);
mPlayer.resume();
}
}*/
}
@Override
protected void onPause() {
super.onPause();
mPaused = true;
if (mPlayStarted && mPlayer != null) {
/* if (mPlayStarted && mPlayer != null) {
mPlayer.pause();
}
}*/
}
@Override
protected void onResume() {
super.onResume();
if (mPaused && mPlayStarted && mPlayer != null) {
/*if (mPaused && mPlayStarted && mPlayer != null) {
mPlayer.resume();
}
}*/
mPaused = false;
}
@@ -236,17 +206,17 @@ public class VideoPublishActivity extends AbsActivity implements ITXLivePlayList
CommonHttpUtil.cancel(CommonHttpConsts.GET_CONFIG);
VideoHttpUtil.cancel(VideoHttpConsts.SAVE_UPLOAD_VIDEO_INFO);
mPlayStarted = false;
if (mPlayer != null) {
/*if (mPlayer != null) {
mPlayer.stopPlay(false);
mPlayer.setPlayListener(null);
}
}*/
if (mUploadStrategy != null) {
mUploadStrategy.cancel();
}
// if (mMobShareUtil != null) {
// mMobShareUtil.release();
// }
mPlayer = null;
// mPlayer = null;
mUploadStrategy = null;
// mMobShareUtil = null;
}

View File

@@ -7,7 +7,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.tencent.ugc.TXVideoEditConstants;
//import com.tencent.ugc.TXVideoEditConstants;
import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.views.AbsViewHolder;
@@ -170,7 +170,7 @@ public class VideoEditCutViewHolder extends AbsViewHolder implements View.OnClic
int color = 0;
int effect = 0;
int i = v.getId();
if (i == R.id.btn_special_1) {
/* if (i == R.id.btn_special_1) {
color = 0xAA1FBCB6;
effect = TXVideoEditConstants.TXEffectType_ROCK_LIGHT;
@@ -186,7 +186,7 @@ public class VideoEditCutViewHolder extends AbsViewHolder implements View.OnClic
color = 0xAAEC5F9B;
effect = TXVideoEditConstants.TXEffectType_SOUL_OUT;
}
}*/
if (mColorfulProgress != null) {
mColorfulProgress.startMark(color);
}
@@ -205,7 +205,7 @@ public class VideoEditCutViewHolder extends AbsViewHolder implements View.OnClic
mSpecialStartMark = false;
int effect = 0;
int i = v.getId();
if (i == R.id.btn_special_1) {
/*if (i == R.id.btn_special_1) {
effect = TXVideoEditConstants.TXEffectType_ROCK_LIGHT;
} else if (i == R.id.btn_special_2) {
@@ -217,7 +217,7 @@ public class VideoEditCutViewHolder extends AbsViewHolder implements View.OnClic
} else if (i == R.id.btn_special_4) {
effect = TXVideoEditConstants.TXEffectType_SOUL_OUT;
}
}*/
if (mColorfulProgress != null) {
mColorfulProgress.endMark();
}

View File

@@ -22,7 +22,6 @@ import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.ui.AspectRatioFrameLayout;
import com.google.android.exoplayer2.ui.StyledPlayerView;
import com.google.android.exoplayer2.video.VideoSize;
import com.tencent.rtmp.TXLiveConstants;
import com.yunbao.common.utils.L;
import com.yunbao.common.views.AbsViewHolder;
import com.yunbao.video.R;
@@ -37,7 +36,7 @@ import com.yunbao.video.http.VideoHttpUtil;
public class VideoPlayViewHolder extends AbsViewHolder implements View.OnClickListener {
private StyledPlayerView mTXCloudVideoView;
private StyledPlayerView mPlayView;
private View mVideoCover;
private ExoPlayer mPlayer;
private boolean mPaused;//生命周期暂停
@@ -72,9 +71,9 @@ public class VideoPlayViewHolder extends AbsViewHolder implements View.OnClickLi
.build();
mCachePath = mContext.getCacheDir().getAbsolutePath();
mTXCloudVideoView = (StyledPlayerView) findViewById(R.id.placeholderView);
mTXCloudVideoView.setKeepContentOnPlayerReset(true);
mTXCloudVideoView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FIXED_WIDTH);
mPlayView = (StyledPlayerView) findViewById(R.id.placeholderView);
mPlayView.setKeepContentOnPlayerReset(true);
mPlayView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FIXED_WIDTH);
mPlayer = new ExoPlayer.Builder(mContext).setLoadControl(control).build();
mPlayer.setVideoScalingMode(C.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING);
findViewById(R.id.root).setOnClickListener(this);
@@ -98,11 +97,14 @@ public class VideoPlayViewHolder extends AbsViewHolder implements View.OnClickLi
Player.Listener.super.onPlaybackStateChanged(playbackState);
if (playbackState == Player.STATE_READY) {
mPlayer.play();
onPlayEvent(TXLiveConstants.PLAY_EVT_PLAY_BEGIN, null);
onPlayEvent(1, null);
// onPlayEvent(TXLiveConstants.PLAY_EVT_PLAY_BEGIN, null);
} else if (playbackState == Player.STATE_BUFFERING) {
onPlayEvent(TXLiveConstants.PLAY_EVT_PLAY_LOADING, null);
onPlayEvent(2, null);
// onPlayEvent(TXLiveConstants.PLAY_EVT_PLAY_LOADING, null);
} else if (playbackState == Player.STATE_ENDED) {
onPlayEvent(TXLiveConstants.PLAY_EVT_PLAY_END, null);
onPlayEvent(3, null);
// onPlayEvent(TXLiveConstants.PLAY_EVT_PLAY_END, null);
}
}
@@ -112,13 +114,15 @@ public class VideoPlayViewHolder extends AbsViewHolder implements View.OnClickLi
Bundle bundle = new Bundle();
bundle.putInt("EVT_PARAM1", videoSize.width);
bundle.putInt("EVT_PARAM2", videoSize.height);
onPlayEvent(TXLiveConstants.PLAY_EVT_CHANGE_RESOLUTION, bundle);
onPlayEvent(4, bundle);
// onPlayEvent(TXLiveConstants.PLAY_EVT_CHANGE_RESOLUTION, bundle);
}
@Override
public void onRenderedFirstFrame() {
Player.Listener.super.onRenderedFirstFrame();
onPlayEvent(TXLiveConstants.PLAY_EVT_RCV_FIRST_I_FRAME, null);
onPlayEvent(5, null);
// onPlayEvent(TXLiveConstants.PLAY_EVT_RCV_FIRST_I_FRAME, null);
}
@Override
@@ -133,7 +137,7 @@ public class VideoPlayViewHolder extends AbsViewHolder implements View.OnClickLi
LogUtils.e(error);
}
});
mTXCloudVideoView.setPlayer(mPlayer);
mPlayView.setPlayer(mPlayer);
}
/**
@@ -141,19 +145,19 @@ public class VideoPlayViewHolder extends AbsViewHolder implements View.OnClickLi
*/
public void onPlayEvent(int e, Bundle bundle) {
switch (e) {
case TXLiveConstants.PLAY_EVT_PLAY_BEGIN://加载完成,开始播放的回调
case 1://加载完成,开始播放的回调
mStartPlay = true;
if (mActionListener != null) {
mActionListener.onPlayBegin();
}
break;
case TXLiveConstants.PLAY_EVT_PLAY_LOADING: //开始加载的回调
case 2: //开始加载的回调
if (mActionListener != null) {
mActionListener.onPlayLoading();
}
break;
case TXLiveConstants.PLAY_EVT_PLAY_END://获取到视频播放完毕的回调
case 3://获取到视频播放完毕的回调
replay();
if (!mEndPlay) {
mEndPlay = true;
@@ -162,7 +166,7 @@ public class VideoPlayViewHolder extends AbsViewHolder implements View.OnClickLi
}
}
break;
case TXLiveConstants.PLAY_EVT_RCV_FIRST_I_FRAME://获取到视频首帧回调
case 5://获取到视频首帧回调
if (mActionListener != null) {
mActionListener.onFirstFrame();
}
@@ -170,7 +174,7 @@ public class VideoPlayViewHolder extends AbsViewHolder implements View.OnClickLi
mPlayer.pause();
}
break;
case TXLiveConstants.PLAY_EVT_CHANGE_RESOLUTION://获取到视频宽高回调
case 4://获取到视频宽高回调
onVideoSizeChanged(bundle.getInt("EVT_PARAM1", 0), bundle.getInt("EVT_PARAM2", 0));
break;
}
@@ -180,17 +184,17 @@ public class VideoPlayViewHolder extends AbsViewHolder implements View.OnClickLi
* 获取到视频宽高回调
*/
public void onVideoSizeChanged(float videoWidth, float videoHeight) {
if (mTXCloudVideoView != null && videoWidth > 0 && videoHeight > 0) {
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) mTXCloudVideoView.getLayoutParams();
if (mPlayView != null && videoWidth > 0 && videoHeight > 0) {
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) mPlayView.getLayoutParams();
int targetH = 0;
if (videoWidth / videoHeight > 0.5625f) {//横屏 9:16=0.5625
targetH = (int) (mTXCloudVideoView.getWidth() / videoWidth * videoHeight);
targetH = (int) (mPlayView.getWidth() / videoWidth * videoHeight);
} else {
targetH = ViewGroup.LayoutParams.MATCH_PARENT;
}
if (targetH != params.height) {
params.height = targetH;
mTXCloudVideoView.requestLayout();
mPlayView.requestLayout();
}
if (mVideoCover != null && mVideoCover.getVisibility() == View.VISIBLE) {
mVideoCover.setVisibility(View.INVISIBLE);

View File

@@ -27,7 +27,7 @@
android:background="#000"
>
<com.tencent.rtmp.ui.TXCloudVideoView
<com.google.android.exoplayer2.ui.StyledPlayerView
android:id="@+id/video_view"
android:layout_width="match_parent"
android:layout_height="match_parent"