안드로이드
Android ExoPlayer
뇽꾸리
2022. 4. 8. 15:22
반응형
gradle에 두줄 추가
public class MyVideoView {
private static final String TAG = "MyVideoView";
private MainActivity mActivity;
ViewGroup videoParentView; //videoParentView
FrameLayout videoFrameView; //videoFrameView
PlayerView playerView; //PlayerView
SimpleExoPlayer player; //SimpleExoPlayer : 실제 비디오를 플레이하는 객체의 참조 변수
public MyVideoView (MainActivity activity) {
mActivity = activity;
videoParentView = mActivity.findViewById(R.id.videoParent); //겉에 비디오 프레임
videoFrameView = new FrameLayout(mActivity); //비디오프레임뷰
playerView = new PlayerView(mActivity); //플레이어뷰
setVideoView();
}
private void setVideoView(){
Log.d(TAG, " ########################### setVideoParentView ################################### ");
Uri videoUri=Uri.parse("http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4");
/*
* TODO
*/
DisplayMetrics metrics = new DisplayMetrics();
mActivity.getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
int deviceWidth = metrics.widthPixels;
int deviceHeight = metrics.heightPixels;
Log.d(TAG, "metrics = deviceWidth : [" + deviceWidth + "], deviceHeight = [" + deviceHeight + "]");
videoFrameView.setLayoutParams(new FrameLayout.LayoutParams(deviceWidth, deviceHeight));
//위치 조정때문에 이렇게 했는데 위에거만 해줘도 됨
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) videoFrameView.getLayoutParams();
params.width = 812;
params.height = 500;
params.leftMargin = 50;
params.topMargin = 50;
videoFrameView.setLayoutParams(params);
//SimpleExoPlayer객체 생성
player= ExoPlayerFactory.newSimpleInstance(mActivity, new DefaultTrackSelector());
//플레이어뷰에게 플레이어 설정
playerView.setPlayer(player);
//비디오데이터 소스를 관리하는 DataSource 객체를 만들어주는 팩토리 객체 생성
DataSource.Factory factory= new DefaultDataSourceFactory(mActivity,"Ex89VideoAndExoPlayer");
//비디오데이터를 Uri로 부터 추출해서 DataSource객체 (CD or LP판 같은 ) 생성
ProgressiveMediaSource mediaSource= new ProgressiveMediaSource.Factory(factory).createMediaSource(videoUri);
//만들어진 비디오데이터 소스객체인 mediaSource를 플레이어 객체에게 전당하여 준비하도록!![ 로딩하도록 !!]
player.prepare(mediaSource);
//로딩이 완료되어 준비가 되었을 때
player.setPlayWhenReady(true);
//비디오 프레임뷰 안에 플레이어뷰 넣기
videoFrameView.addView(playerView);
//겉에 비디오 프레임에 비디오 프레임뷰 넣기
videoParentView.addView(videoFrameView);
}
}
반응형