VideoPlayer播放的问题,十万火急

目前项目中使用到VideoPlayer来播放视频,是Android平台的,目前使用VideoPlayer播放视频时遇到两个问题,第一个问题是:进入播放界面时,不会自动播放,一定要点一下返回键才能播放;第二个问题是:在播放视频时,如果点击Home键返回主界面,等一会再切回前台,视频不会接着播放,而是一片黑屏。目前就存在这两个问题,本人现在还没找到解决方法,希望各位朋友有见解的,教下小弟呗,谢谢了。

看一下你的代码啊

第一个问题是初始videoPlayer界面大小的长宽都是0,也就是说相当于没有初始化,在UIVideoPlayer-android.cpp中找个地方执行下setVideoRectJNI这个函数,我放到setFileName里面了。看下图

大哥,没有看到你发的图啊,能不能再发一次?

这个问题要改源码:
frameworks\cocos2d-x\cocos\ui路径下的UIVideoPlayer-android.cpp

void VideoPlayer::setFileName(const std::string& fileName)
{
_videoURL = fileName;
_videoSource = VideoPlayer::Source::FILENAME;
log(“setFileName”);
auto directorInstance = Director::getInstance();
auto glView = directorInstance->getOpenGLView();
auto frameSize = glView->getFrameSize();

auto winSize = directorInstance->getWinSize();


auto leftBottom = convertToWorldSpace(Point::ZERO);
auto rightTop = convertToWorldSpace(Point(_contentSize.width,_contentSize.height));


auto uiLeft = frameSize.width / 2 + (leftBottom.x - winSize.width / 2 ) * glView->getScaleX();
auto uiTop = frameSize.height /2 - (rightTop.y - winSize.height / 2) * glView->getScaleY();


setVideoRectJNI(_videoPlayerIndex,uiLeft,uiTop,
    (rightTop.x - leftBottom.x) * glView->getScaleX(),
    (rightTop.y - leftBottom.y) * glView->getScaleY());
setVideoURLJNI(_videoPlayerIndex, (int)Source::FILENAME,_videoURL);

}

void VideoPlayer::setURL(const std::string& videoUrl)
{
_videoURL = videoUrl;
_videoSource = VideoPlayer::Source::URL;
auto directorInstance = Director::getInstance();
auto glView = directorInstance->getOpenGLView();
auto frameSize = glView->getFrameSize();

auto winSize = directorInstance->getWinSize();


auto leftBottom = convertToWorldSpace(Point::ZERO);
auto rightTop = convertToWorldSpace(Point(_contentSize.width,_contentSize.height));


auto uiLeft = frameSize.width / 2 + (leftBottom.x - winSize.width / 2 ) * glView->getScaleX();
auto uiTop = frameSize.height /2 - (rightTop.y - winSize.height / 2) * glView->getScaleY();


setVideoRectJNI(_videoPlayerIndex,uiLeft,uiTop,
    (rightTop.x - leftBottom.x) * glView->getScaleX(),
    (rightTop.y - leftBottom.y) * glView->getScaleY());
setVideoURLJNI(_videoPlayerIndex,(int)Source::URL,_videoURL);

}

然后在org\cocos2dx\lib下的Cocos2dxVideoHelper.java源码里边手工调用onBackKeyEvent();方法即可

private void _startVideo(int index) {
Cocos2dxVideoView videoView = sVideoViews.get(index);
if (videoView != null) {
videoView.start();

        onBackKeyEvent();//手工调用
    }
}

另外视频播放时,按键会暂停播放,需把
Cocos2dxVideoView.java中的onTouchEvent方法内容注释掉

哦哦,多谢了,刚看到你的回答。

mark…

这个必须顶 差点去踩坑。。。

在视频界面,android物理键返回后,再次进入提示无法播放视频,貌似是底层mediaplayer服务关闭又启动了,有人遇到这类问题吗???