cocos2d-x播放视频(VideoPlayer)小记

时间:2021-06-08 09:27:56
发现网上关于视频播放VideoPlayer的资料好少,而这个类坑又比较多,在这里记录一下我自己探索到的一些东西,希望对大家有用

我使用的cocos版本是3.2,然后开发环境是VS2012

1。官方Demo
其实VideoPlayer 是有官方Demo的,不过因为它只支持安卓和ios平台,所以在vs打开cocos2dx的cpptest是看不到的,但在CocosGUIScene.cpp里面可以看到这么几句代码:

g_guisTests[] =
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    {
        "VideoPlayerTest",
        [](Ref* sender)
        {
            UISceneManager* sceneManager = UISceneManager::sharedUISceneManager();
            sceneManager->setCurrentUISceneId(kUIVideoPlayerTest);
            sceneManager->setMinUISceneId(kUIVideoPlayerTest);
            sceneManager->setMaxUISceneId(kUIVideoPlayerTest);
            Scene* scene = sceneManager->currentUIScene();
            Director::getInstance()->replaceScene(scene);
        }
    },
#endif
 ......


所以我们直接转到 CocosGUIScene所在的文件夹,可以看到UIVideoPlayerTest这个文件夹,官方的Demo就在这里了。
具体的路径是“引擎的路径\cocos2d-x-3.2\tests\cpp-tests\Classes\UITest\CocoStudioGUITest\UIVideoPlayerTest”


2.打包出现“error: undefined reference to 'cocos2d::experimental::ui::VideoPlayer::VideoPlayer()'”
因为VideoPlayer是集成在gui模块里面的,而gui模块好像又是放在cocotuio的模块里面的,所以必须把Android.mk里面
 # LOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_static
前面的#去掉,编译cocostudio_static库

3.使用的注意事项
(1)不能在Layer的init里面create VideoPlayer之后立即调用setFileName和play播放视频,这样会出现bug,视频不能播放(奇怪的是按home键把游戏转到后台,然后再进去又会看到视频正在播放)
(2)视频播放完之后想重新播放不能只调用play,setFileName和play必须一起调用
(3)试过在一个方法里面create VideoPlayer和setFileName和play一起做了,然后再点击事件(DelayTime之后callfunc里面调用也是)里面调用,发现不能播放视频(按home键把游戏转到后台,然后再进去又会看到视频正在播放),不知道是为什么。不过在onEnter里面调用就没有问题