您当前的位置: 首页 >  ide

基于 exoplayer 的 videoview

发布时间:2017-08-22 14:07:01 ,浏览量:0

ExoPlayerView
项目地址: JarvanMo/ExoPlayerView
简介:基于 exoplayer 的 videoview
更多: 作者    提 Bug   
标签:
videoview- exoplayer- 视频- 直播-

ExoPlayerView is a simple video view based on ExoPlayer.

中文.

brightness controller_1 fast_forward_rewind landscape portrait volume

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.

Usage

Import

Add 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:


			

Play

play 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 Orientation

The 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 callactivity.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 Events

In 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.

Others

Also you can add you view to the controller view when landscape:

videoView.addViewToControllerWhenLandscape(view);

the view you want to add will add into FrameLayout.

NOTE

Never forget to release the ExoPlayer.

videoView.releaseSelfPlayer();

or

player.release();
关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    110950博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0836s