-
Notifications
You must be signed in to change notification settings - Fork 437
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);
------------------------------------------------------------