|
@@ -3,9 +3,10 @@ package com.cooleshow.musicmerge.widget.cover;
|
|
|
import android.content.Context;
|
|
|
import android.graphics.Bitmap;
|
|
|
import android.util.AttributeSet;
|
|
|
-import android.util.Log;
|
|
|
import android.view.Gravity;
|
|
|
+import android.view.LayoutInflater;
|
|
|
import android.view.TextureView;
|
|
|
+import android.view.View;
|
|
|
import android.widget.FrameLayout;
|
|
|
import android.widget.ImageView;
|
|
|
import android.widget.RelativeLayout;
|
|
@@ -17,6 +18,7 @@ import com.cooleshow.musicmerge.R;
|
|
|
import com.cooleshow.musicmerge.bean.VideoInfo;
|
|
|
import com.cooleshow.musicmerge.manager.CoverSelectorManager;
|
|
|
import com.cooleshow.musicmerge.manager.ICoverSelector;
|
|
|
+import com.google.android.exoplayer2.ui.PlayerView;
|
|
|
|
|
|
|
|
|
public class ShortVideoSelectCover extends RelativeLayout {
|
|
@@ -25,8 +27,8 @@ public class ShortVideoSelectCover extends RelativeLayout {
|
|
|
private ImageView mImgCover;
|
|
|
private String mVideoPath = "";
|
|
|
private long mStartTime;
|
|
|
- private VideoPlayer videoPlayer;
|
|
|
- private TextureView textureView;
|
|
|
+ private MyExoPlayer videoPlayer;
|
|
|
+ private PlayerView textureView;
|
|
|
private FrameLayout flVideo;
|
|
|
private VideoInfo mVideoInfo;
|
|
|
private CoverSelectorManager mCoverSelectorManager;
|
|
@@ -49,9 +51,9 @@ public class ShortVideoSelectCover extends RelativeLayout {
|
|
|
private void initViews() {
|
|
|
inflate(getContext(), R.layout.video_selector_layout, this);
|
|
|
mCoverSelectorManager = new CoverSelectorManager();
|
|
|
- videoPlayer = new VideoPlayer();
|
|
|
- textureView = new TextureView(getContext());
|
|
|
- videoPlayer.setTextureView(textureView);
|
|
|
+ videoPlayer = new MyExoPlayer();
|
|
|
+ textureView = (PlayerView) LayoutInflater.from(getContext()).inflate(R.layout.video_default_playerveiew, null);
|
|
|
+ videoPlayer.setPlayerView(textureView);
|
|
|
flVideo = findViewById(R.id.flVideo);
|
|
|
flVideo.addView(textureView);
|
|
|
mVideoCutLayout = findViewById(R.id.video_cut_layout);
|
|
@@ -64,7 +66,7 @@ public class ShortVideoSelectCover extends RelativeLayout {
|
|
|
mVideoInfo.videoPath = mVideoPath;
|
|
|
playVideo(mVideoPath);
|
|
|
mVideoCutLayout.getRangeSlider().playVideo(mVideoPath);
|
|
|
- Log.i("pq", "mVideoPath:" + mVideoPath);
|
|
|
+ LOG.i("pq", "mVideoPath:" + mVideoPath);
|
|
|
}
|
|
|
|
|
|
private void loadVideoInfo(VideoInfo videoInfo) {
|
|
@@ -74,16 +76,18 @@ public class ShortVideoSelectCover extends RelativeLayout {
|
|
|
mVideoCutLayout.setSliderMoveListener(new ICoverSelector.OnSliderMoveListener() {
|
|
|
|
|
|
@Override
|
|
|
- public void onSliderMove(long startTime, int type, int moveX) {
|
|
|
- LOG.i("onSliderMove type:" + type + " moveX:" + moveX);
|
|
|
+ public void onSliderMove(long startTime, float type, int moveX) {
|
|
|
+ LOG.i("onSliderMove startTime" + startTime + " type:" + type + " moveX:" + moveX);
|
|
|
mStartTime = startTime;
|
|
|
- videoPlayer.seekTo(startTime);
|
|
|
- mVideoCutLayout.getRangeSlider().seekTo(startTime);
|
|
|
- mImgCover.setVisibility(GONE);
|
|
|
- if (type > 80 && moveX > 0) {
|
|
|
- mVideoCutLayout.startScrollBy(SizeUtils.dp2px(150));
|
|
|
- } else if (type < 20 && moveX < 0) {
|
|
|
- mVideoCutLayout.startScrollBy(-SizeUtils.dp2px(150));
|
|
|
+ if (!videoPlayer.isSeeking() && !mVideoCutLayout.getRangeSlider().isSeeking()) {
|
|
|
+ videoPlayer.seekTo(startTime);
|
|
|
+ mVideoCutLayout.getRangeSlider().seekTo(startTime);
|
|
|
+ mImgCover.setVisibility(GONE);
|
|
|
+ if (type > 80 && moveX > 0) {
|
|
|
+ mVideoCutLayout.startScrollBy(SizeUtils.dp2px(150));
|
|
|
+ } else if (type < 20 && moveX < 0) {
|
|
|
+ mVideoCutLayout.startScrollBy(-SizeUtils.dp2px(150));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
});
|
|
@@ -153,25 +157,35 @@ public class ShortVideoSelectCover extends RelativeLayout {
|
|
|
if (onGetSampleImageListener != null) {
|
|
|
onGetSampleImageListener.start();
|
|
|
}
|
|
|
- mCoverSelectorManager.setOnFrameAtTimeListener(new ICoverSelector.OnFrameAtTimeListener() {
|
|
|
- @Override
|
|
|
- public void onFrameAtTime(Bitmap bitmap) {
|
|
|
- if (onGetSampleImageListener != null) {
|
|
|
+ if (textureView != null) {
|
|
|
+ if (onGetSampleImageListener != null) {
|
|
|
+ View videoSurfaceView = textureView.getVideoSurfaceView();
|
|
|
+ TextureView textureView1 = (TextureView) videoSurfaceView;
|
|
|
+ if (textureView1 != null) {
|
|
|
+ Bitmap bitmap = textureView1.getBitmap();
|
|
|
onGetSampleImageListener.complete(bitmap);
|
|
|
}
|
|
|
}
|
|
|
- });
|
|
|
- mCoverSelectorManager.getFrameAtTime2(mStartTime);
|
|
|
+ }
|
|
|
+// mCoverSelectorManager.setOnFrameAtTimeListener(new ICoverSelector.OnFrameAtTimeListener() {
|
|
|
+// @Override
|
|
|
+// public void onFrameAtTime(Bitmap bitmap) {
|
|
|
+// if (onGetSampleImageListener != null) {
|
|
|
+// onGetSampleImageListener.complete(bitmap);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// });
|
|
|
+// mCoverSelectorManager.getFrameAtTime2(mStartTime);
|
|
|
}
|
|
|
|
|
|
private void playVideo(final String videoUrl) {
|
|
|
videoPlayer.reset();
|
|
|
- videoPlayer.setOnStateChangeListener(new VideoPlayer.OnStateChangeListener() {
|
|
|
+ videoPlayer.setOnStateChangeListener(new MyExoPlayer.OnStateChangeListener() {
|
|
|
@Override
|
|
|
public void onPrepared() {
|
|
|
mComplete = false;
|
|
|
videoPlayer.seekTo(0);
|
|
|
- int duration = videoPlayer.getDuration();
|
|
|
+ long duration = videoPlayer.getDuration();
|
|
|
LOG.i("duration :" + duration);
|
|
|
mVideoInfo.duration = duration;
|
|
|
mVideoInfo.setVideoWidth(videoPlayer.getVideoWidth());
|
|
@@ -223,6 +237,9 @@ public class ShortVideoSelectCover extends RelativeLayout {
|
|
|
if (mCoverSelectorManager != null) {
|
|
|
mCoverSelectorManager.release();
|
|
|
}
|
|
|
+ if (mVideoCutLayout != null) {
|
|
|
+ mVideoCutLayout.release();
|
|
|
+ }
|
|
|
if (videoPlayer != null) {
|
|
|
videoPlayer.release();
|
|
|
}
|