videoPlayer的使用和交互视频的实现问题

写下最近使用videoPlayer的体验和问题:
1.首先遇到的第一个问题就是视频层级的问题,视频挡住了ui按钮,分享下在论坛找到的解决方法:
web:
(1)在编辑器添加插件脚本 cc.macro.ENABLE_TRANSPARENT_CANVAS = true;
(2)脚本上面使用:
var video0 = document.getElementsByClassName(‘cocosVideo’)[0];
video0.style.zIndex = 5;
video0.setAttribute(“x5-video-player-type”, “h5”);
video0.setAttribute(“webkit-playsinline”, true);
video0.setAttribute(“x-webkit-airplay”, true);
video0.setAttribute(“x5-video-orientation”, “h5”);
video0.setAttribute(“x5-video-player-fullscreen”, true);
video0.setAttribute(“preload”,“auto”);

            var gCanvas = document.getElementsByClassName('gameCanvas')[0];
            gCanvas.style.position = 'relative';
            gCanvas.style.zIndex = 10;   

Android:
(1)同上
(2)//AppActivity.java
public Cocos2dxGLSurfaceView onCreateView() {
Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);
// TestCpp should create stencil buffer
glSurfaceView.setZOrderMediaOverlay(true);
glSurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
glSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 8);

        SDKWrapper.getInstance().setGLSurfaceView(glSurfaceView, this);

        return glSurfaceView;
    }

(3)//Cocos2dxVideoView.java
public boolean onTouchEvent(MotionEvent event) {
return false;
}
(4)//Cocos2dxVideoHelper.java
//videoView.setZOrderOnTop(true);

2.解决了层级问题,构建发布安卓上播放不了视频,解决方法:
监听ready-to-play,在ready-to-play后再开始play()

3.切换视频黑屏的问题,当点击按钮播放下一个视频的时候会有黑屏闪一下,然后才播放下一个视频,这个体验很差.
想了两个方法,用图片挡一下在黑屏后再隐藏图片,这个在低端的手机上面还是会有黑屏闪过;
第二个方法就是将视频剪接成一个大的视频,调节视频开始时间切换内容,这样就没有了黑屏问题,但是这样又有了其他的问题…

4.调节开始时间currentTime,这个属性有点搞不懂,在编辑器上看这个属性的单位是秒,但是小数点后面是10进制的,因为视频需要精确到小数点后两位的秒数,如1.23秒这样子,
在pr上得到的视频时间信息小数点后是25进制或者60进制的,这样调节视频开始时间就出现了误差,简单的写了个进制转换的方法,
在web上测试可以正常调节到想要的开始时间,但是在安卓上又有误差,头都大了…

求大佬们指点下,currentTime这个问题应该怎么解决,或者有什么更好的方法解决切换视频黑屏这个问题?

2赞

currentTime 最后怎么解决的大哥

v2.4版本获取到视频的播放长度,设置currentTime为最大值(最长播放长度),他可能还是会有两秒时间再播放,进制问题?

解决视频交互的问题,最好的方案还是将视频渲染到renderTexture上。

2.x 如果要用 rendererTexture 的方案,也可以参考这个组件的实现
https://demo-edu.cocos.com/guide/CCMVideo.html

我想问下,2.x的videoplayer播放设置视频跳过,我直接获取getDuration,然后设置currenttime为最大值(该视频播放长度),但视频仍然会播放,大概会跳转到视频的最后两秒钟,这个可能是什么原因

这个插件超难参考原生一堆问题哎

视频有关键帧的概念,他会自动跳到上一个k帧,你可以搜下相关信息,所以视频seek并没有办法精确的跳转到某个时间,除非你跳的时间上刚好有关键帧。

这个是之前腾讯开心鼠团队制作的,他们自己也在商用的方案,一堆问题的话,应该不至于,如果有什么问题,你可以贴出来看看。