Skip to content

BaseVideoView

贾俊辉 edited this page Jun 9, 2018 · 7 revisions

使用步骤示例

  • 初始化BaseVideoView

BaseVideoView可以写到布局中

<com.kk.taurus.playerbase.widget.BaseVideoView
        android:id="@+id/videoView"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:layout_margin="2dp"
        android:background="#000000"
        />

当然,也可以通过Java代码创建

BaseVideoView videoView = new BaseVideoView(context);
  • 为BaseVideoView设置一个ReceiverGroup(如果您只需要播放并不需要视图组件,可忽略此步骤)
ReceiverGroup receiverGroup = new ReceiverGroup(groupValue);
receiverGroup.addReceiver(KEY_LOADING_COVER, new LoadingCover(context));
receiverGroup.addReceiver(KEY_CONTROLLER_COVER, new ControllerCover(context));
receiverGroup.addReceiver(KEY_GESTURE_COVER, new GestureCover(context));
receiverGroup.addReceiver(KEY_COMPLETE_COVER, new CompleteCover(context));
receiverGroup.addReceiver(KEY_ERROR_COVER, new ErrorCover(context));
videoView.setReceiverGroup(receiverGroup);
  • 设置事件监听器、事件处理器(非必须,如果需要就设置)
videoView.setOnPlayerEventListener(new OnPlayerEventListener() {
    @Override
    public void onPlayerEvent(int eventCode, Bundle bundle) {
        //...
    }
});
videoView.setOnReceiverEventListener(new OnReceiverEventListener() {
    @Override
    public void onReceiverEvent(int eventCode, Bundle bundle) {
        //...
    }
});
videoView.setOnErrorEventListener(new OnErrorEventListener() {
    @Override
    public void onErrorEvent(int eventCode, Bundle bundle) {
        //...
    }
});
videoView.setEventHandler(new OnVideoViewEventHandler(){
    @Override
    public void onAssistHandle(BaseVideoView assist, int eventCode, Bundle bundle) {
        super.onAssistHandle(assist, eventCode, bundle);
        //...
    }
});
  • 设置数据提供者(非必须,如果需要就设置)

关于DataProvider,请参阅wiki中的DataProvider讲解。

MonitorDataProvider dataProvider = new MonitorDataProvider();
videoView.setDataProvider(dataProvider);
  • 设置数据启动播放
videoView.setDataSource(new DataSource("http://url..."));
videoView.start();
//如果需要定点播放,请调用下面的方法并传入时间点(毫秒值)
//如下,从15秒处起播
videoView.start(15000);
  • 暂停与恢复播放
//暂停
videoView.pause();
//恢复
videoView.resume();
  • 销毁播放器
videoView.stopPlayback();

方法释义

------------------------------------------------------------

//获取到SuperContainer对象,对SuperContainer进行一些设置,关于SuperContainer见wiki中对其专门的讲解。
SuperContainer getSuperContainer();

------------------------------------------------------------

//拓展预留方法,可通过此方法向解码器传递参数和值,方法调用最终会传递到解码器中对应的方法。
void option(int code, Bundle bundle);

------------------------------------------------------------

//切换解码器,内部实际调用的是AVPlayer的switchDecoder方法,请参阅AVPlayer中switchDecoder的释义。
boolean switchDecoder(int decoderPlanId);

------------------------------------------------------------

//设置数据提供者(如果需要就设置,必须设置在启动播放前)
void setDataProvider(IDataProvider dataProvider);

------------------------------------------------------------

//设置Receiver的集合管理类
void setReceiverGroup(ReceiverGroup receiverGroup);

------------------------------------------------------------

//为视图设置一个事件处理器,如果没有设置视图无需关心此方法。
void setEventHandler(OnVideoViewEventHandler eventHandler);

------------------------------------------------------------

//重播,调用的前提是您已经设置过数据了。参数是起播事件点,单位毫秒。
void rePlay(int msc);

------------------------------------------------------------

//设置画面显示类型,默认设置为AspectRatio_FIT_PARENT,可选的类型如下:
//AspectRatio_16_9  以16:9显示(可能变形)
//AspectRatio_4_3   以4:3显示(可能变形)
//AspectRatio_MATCH_PARENT   完全填充(可能变形)
//AspectRatio_FILL_PARENT    同MATCH_PARENT(可能变形)
//AspectRatio_FIT_PARENT     按比例缩放填充(原比例显示。当视频源宽高比与视图宽高比不一致时横向或竖向有黑边)
//AspectRatio_ORIGIN         原画显示(原比例显示。原画尺寸小于视图尺寸时,边缘会有黑边)
void setAspectRatio(AspectRatio aspectRatio);

------------------------------------------------------------

//设置音量
void setVolume(float left, float right);

------------------------------------------------------------

//设置播放速度
void setSpeed(float speed);

------------------------------------------------------------

//设置渲染视图类型,默认为RenderTextureView,可选类型还有RenderSurfaceView
//关于二者差别,详见Render的讲解。
void setRenderType(int renderType);

------------------------------------------------------------

//以下为一些样式的设置

//设置为圆角,参数为圆角半径
void setRoundRectShape(float radius);
void setRoundRectShape(Rect rect, float radius);

//设置为原型
void setOvalRectShape();
void setOvalRectShape(Rect rect);

//清楚样式
void clearShapeStyle();

//设置边缘阴影
//设置阴影时View必须有backgroundColor,您可以指定,默认设置的是Color.BLACK
void setElevationShadow(float elevation);
void setElevationShadow(int backgroundColor, float elevation);

------------------------------------------------------------