PolyvVideoView 是视频播放器的主类 View,可以控制视频播放,进度等等。若要实现视频播放功能,只需要添加布局,调用videoView.setVid(vid)即可。调用setVid(vid)方法视频会自动播放。代码示例如下:
Copy < RelativeLayout
android : id = " @+id/view_layout "
android : layout_width = " match_parent "
android : layout_height = " @dimen/top_center_player_height "
android : background = " @color/top_text_color_black " >
< com.easefun.polyvsdk.video.PolyvVideoView
android : id = " @+id/polyv_video_view "
android : layout_width = " match_parent "
android : layout_height = " match_parent " />
...
</ RelativeLayout >
Copy PolyvVideoView videoView = findViewById ( R . id . polyv_video_view );
videoView . setVid ( vid ); 此外还有更多重载的方法,可支持更多的播放设定。如:
自点播2.17.0版本开始,支持通过外部传入播放凭证的方式进行加密视频的播放,以避免非法盗版者利用漏洞创建无身份信息的播放凭证。
Token是用于解密播放保利威平台加密视频的,本地传入Token将更好地提升视频安全性。
客户在使用此功能的时候,务必要保证传入的Token在自家api传输中的安全性,如接口加密。
首先,您需要集成点播SDK在2.17.0以上版本。
其次,在播放器初始化时,调用setVideoTokenRequestListener方法设置回调监听,传入播放凭证。
播放凭证应通过您自定义的接口获取。后端开发者的接口开发,以及播放加密视频实践全流程,可参考 播放加密视频最佳实践arrow-up-right 。
在正式使用播放器之前,我们应当先对PolyvVideoView进行基本的属性配置,以便让视频播放器更适合开发者的设计与使用。部分设置如下,更多的设置可查看 API 文档arrow-up-right 。
设置是否自动播放,默认自动播放。
设置是否自动续播,默认关闭。开启后重新进入视频可从上一次播放位置继续播放。
设置是否开启广告,默认关闭。
设置是否开启字幕,默认关闭。
设置是否开启预加载,默认关闭。
设置是否开启跑马灯,默认关闭。
设置是否需要手势,默认关闭。开启后设置手势监听将有回调触发。
设置是否开启防录屏开关,默认关闭。如开启防录屏,投屏功能将不可用。
设置加载超时时间,默认关闭,最少25秒。
设置缓冲超时时间,默认关闭,最少15秒。
在 PolyvPlayerActivity 中有字段 isBackgroundPlay 控制是否允许后台播放,默认不允许。
需要注意的是我们没有额外地处理后台保活,需要开发者自行增加相关逻辑。
自 SDK2.11.0 开始,实现了进入后台播放开启 foreground service 的保活逻辑,并默认允许后台播放。
设置视频的预加载时长,提供设置视频的最大缓存字节数,以及设置最大缓存的时间两种方式实现。
设置码率,也就是设置清晰度。传入的参数为 PolyvBitRate.java 中的枚举类型。
线路切换指切换视频所访问的 CDN 服务商,保利威为加密的点播提供了多种线路切换。可以通过 getRouteCount() 知道可切换线路来源数量。route 的值大于等于1。
播放器支持倍速播放,正常播放速度为 1.0 。开发者可以通过修改该值来改变播放器的播放速度,倍速播放最好不要超过2.0 。
设置播放音量。取值范围为 [0,100]。
视频跳转到某个时间点,单位是毫秒。如从视频开始跳转到2秒 videoView.seekTo(2000)。
PolyvPlayerScreenRatio.java 中定义了屏幕比的可选模式:
3.7 音视 / 视频模式切换
控制播放器播放音频还是视频。默认是视频播放模式。可选参数为 PolyvVideoVO.MODE_VIDEO [视频模式] | PolyvVideoVO.MODE_AUDIO [音频模式]
音频播放的方式有两种:
一种是视频模式下播放源文件为 MP3 的资源,由于是视频模式,播放器会默认没有画面。demo 中在这种情况显示音频模式的UI。开发者可自行定义。
另外一种是切换到音频模式。它是对支持音视频切换的视频 ,直接通过changeMode()方法,切换为音频模式播放。生成支持音视频切换的视频需要联系管理员,开通相关功能。开通后会在后台视频设置里面可控制开关,开启后将会在对视频转码时,额外生成一份音频文件,然后播放器就可以进行音频 / 视频的切换。
3.8 设置Seek精准模式与Seek策略
播放器Seek模式 分为两种,控制了Seek时候是否准确滑动到对应时间点:
PolyvSeekType.SEEKTYPE_NORMAL:普通模式,根据关键帧Seek。播放器内部会获取视频信息,提取关键帧,Seek的位置视关键帧位置所定。
PolyvSeekType.SEEKTYPE_ACCURATE:精准模式。播放器内部会处理分析,Seek时候精确到秒,比普通模式更为精确。同时消耗资源也会有所增加。
此外自 2.12.1 开始,在 demo 增加了 Seek 策略配置控制,开发者可以参考或者直接引用实现,对Seek进度条禁止拖拽等实现。开发者只需通过控制dragSeekStrategy为所需的配置即可。默认为DRAG_SEEK_PLAYED,只允许在已播放进度区域拖动跳转播放进度。
通过start() 方法可以把播放状态改变为继续播放。注意要先调用 setVid(vid) 方法,因为start()方法没有设置视频源,直接调用 start()方法是无效的。它只是修改播放状态为继续播放。配合pause() 方法可以实现暂停继续功能。
此外,在基本设置中,开启自动续播,可以在再次进入同一个视频的时候自动跳到上一次的进度。
媒体时长的返回单位是毫秒。通过getCurrentPosition() 可以获取当前播放进度。如一个视频已经播放了2秒,则videoView.getCurrentPosition() = 2000。
通过getBufferPercentage() 可以获取当前缓冲进度的百分比。此外还可以设置最大缓存字节,默认为15M。
播放器支持识别8种手势,并把识别的手势类型与响应事件回调开放出来。开发者可以按照实际需求实现手势事件。回调的方法都在主线程中回调。具体实现可以参考 demo 的 PolyvPlayerActivity。
以下例子为设置手势左向上的时候,调高亮度:
在 com.easefun.polyvsdk.video.listener 包下,还开放了更多的回调监听,都可以设置给播放器,监听播放器状态。这里只截取部分回调展示,详情请查看API 文档arrow-up-right 。
播放器控制栏,可以方便我们控制播放器播放,切换播放器状态。如选择清晰度,控制音量等。自定义的播放器控制栏界面,需要继承自 PolyvBaseMediaController 类,原理和系统播放器一样。初始化完成后作为参数传递给 PolyvVideoView即可。以下摘以 demo 的例子作为展示:
建议有一定能力的开发者才自定义播放器控制栏界面,demo 中有完整播放器控制栏界面示例。
辅助视频可以用于播放广告,片头等。PolyvAuxiliaryVideoView 是其实现主类。其基本使用与 PolyvVideoView 类似。初始化完成后作为参数传递给 PolyvVideoView即可。注意设置需要开启广告设置才有效videoView.setOpenAd(true)。
相关的更多设置可以查看API 文档arrow-up-right com.easefun.polyvsdk.video.auxiliary 部分。具体实现可参考 demo PolyvPlayerActivity相关设置。
跑马灯可以让视频播放的时候滚动显示文本,通常用于防盗水印的作用。Polyv SDK 提供了内置的跑马灯实现。主要通过 PolyvMarqueeView 作为显示的 View,通过 PolyvMarqueeItem 设置跑马灯属性。
在 SDK 中并没有提供相关接口直接进行半屏/全屏切换,但是我们在 Demo 中实现了半屏/全屏切换的功能。其基本原理是通过设置 PolyvVideoView 和PolyvPlayerMediaController 的宽高为 match_parent,然后改变Activity 的横竖屏状态,最后设置公共的父布局的宽高适应横竖屏,以此来实现半屏/全屏切换功能。以下实例代码摘自 demo:
1、布局实现:
2、在AndroidManifest.xml中设置 Activity 的 configChanges 属性:
3、改变 parent_view 宽高属性以此实现半屏/全屏切换:
PolyvScreenUtils 是 Demo 中定义的工具类。在这里主要是设置 Activity 为横屏模式。