您的位置:首页 > 运维架构

基于 exoplayer 的 videoview

2017-08-22 14:07 344 查看

ExoPlayerView

项目地址:JarvanMo/ExoPlayerView

简介:基于 exoplayer 的 videoview更多:作者   提 Bug   标签:videoview-exoplayer-视频-直播-ExoPlayerView is a simple video view based on ExoPlayer.中文.

 

 

 

 

 

Features
1.There are 4 modes to resize the video:
fit ,  fit_width , fit_height and none.
2.Process AudioFocus automatically.
3.Change its orientation by sensor automatically
4.simple gesture action supported.
UsageImportAdd the following to your 
build.gradle
 file
compile 'com.jarvanmo:exoplayerview:1.0.7'
ExoPlayerView can play simple video directly, such as mp4,m3u8 and so on. It's easy to use. Declare ExoVideoView in your layout files:
<com.jarvanmo.exoplayerview.ui.ExoVideoView
android:id="@+id/videoView"
android:layout_width="match_parent"
android:layout_height="300dp"
app:useController="true"
app:resizeMode="fit"
app:orientationAuto="true"
/>
Playplay a video :
videoView.play(mediaSource);
The ExoVideoView will create SimpleExoPlayer by itself if we play mediaSource. Actually, you can set a player by yourself;
videoView.setPlayer(player);
We can play from a particular position too:
videoView.play(mediaSource,where);
Note:don't forget to release ExoPlayer:
videoView.releaseSelfPlayer();
also we can give a display name:
mediaSource.setDisplayName("LuYu YouYue");
or
videoView.setDisplayName("LuYu YouYue");
Manage OrientationThe ExoVideoView can change its orientation by sensor automatically only when you set a not-null orientation listener:
videoView.setOrientationListener(new ExoVideoPlaybackControlView.OrientationListener() {
@Override
public void onOrientationChange(@ExoVideoPlaybackControlView.SensorOrientationType int orientation) {
if(orientation == SENSOR_PORTRAIT){
changeToPortrait();
}else if(orientation == SENSOR_LANDSCAPE){
changeToLandscape();
}
}
});
When the ExoVideoView change its orientation by itself,The ExoVideoView will call
activity.setRequestedOrientation()
 if the context in controller is an Activity. The fullscreen button is the same.You can change the orientation of ExoVideoView by:
videoView.toggleControllerOrientation();
Or
videoView.setPortrait(true);
Handle Back EventsIn activity :

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(event.getKeyCode() == KeyEvent.KEYCODE_BACK){

if(videoView.isPortrait()){
finish();
return false;
}else {
videoView.toggleControllerOrientation();return true;
}
}
return super.onKeyDown(keyCode, event);
}
When button in controller clicked:
videoView.setBackListener(new ExoVideoPlaybackControlView.ExoClickListener() {
@Override
public boolean onClick(View view, boolean isPortrait) {
if(isPortrait){
finish();
}
return false;
}
});
if 
onClick()
 return true,it'll interrupt controller's operation.If it return false and you set a not-null OrientationListener,The ExoVideoView will request to change its orientation automatically.If the ExoVideoView's orientation is landscape, it'll be changed to portrait and 
OrientationLister.onOrientationChange()
 will be called.OthersAlso you can add you view to the controller view when landscape:
videoView.addViewToControllerWhenLandscape(view);
the view you want to add will add into FrameLayout.NOTENever forget to release the ExoPlayer.
 videoView.releaseSelfPlayer();
or
player.release();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: