-Bug- 请问如何用videoPlayer播放jsb保存到本地的mp4

大家好,我通过 XMLHttpRequest 下载服务器的MP4后,使用jsb.fileUtils.writeDataToFile 写入到本地后,不知道如何动态使用videoPlayer来播放这个MP4文件,求助各位大神。

文件下载器 FileDownloader.js

主逻辑 Test.js

[意外发现原来是Bug]
原来并不是我获取mp4的方法有误,以上代码都是正确的。
同样的代码:
1.若是在编辑场景时,videoPlayer组件clip没有赋个默认值,以上代码发布原生安卓后,videoPlayer动态赋值后不会工作。
2.同样条件下,videoPlayer的clip有提前赋个默认视频,以上代码发布后是正常工作的。
希望引擎开发组看下这个问题。引擎ccc1.9.2

实现代码,方便工作组重现bug场景
Code.rar (1.2 KB)

人工置顶

人工再置顶

看看出来的 clip 里面有没有 nativeUrl。

console.log(clip.nativeUrl);

如果没有就赋值一下试试,把视频的地址赋值进去~~

如果是个字符串的话,改成对象,然后再赋值。。。

绝对路径也拿不到mp4吗

之前打印过,load回调的clip打印出来是 字符串,内容是保存在本地的地址(data/data…什么的),
请问要如何转成对象。谢谢

置顶 发现bug

直接这样可以么?

{
  nativeUrl: 'xxx.mp4',
}

我看了下引擎源码,里面其实就是在 impl 里面取了 clip 的 nativeUrl 然后赋值给实际处理的元素对象。

你的测试环境是Android?IOS应该是正常的,安卓的视频组件适配是存在问题的,下次迭代会修复。

楼主解决了吗?

解决了的


        cc.loader.load({
            url: "http://xxx.mp4",
            type: "mp4"
        }, function (err, clip) {
            if (err) {
                cc.log("Error", err);
                return;
            }
            let videoPlayerNode = new cc.Node("Vedio");
            videoPlayerNode.height = 360;
            videoPlayerNode.width = 400;
            let videoPlayer = videoPlayerNode.addComponent(cc.VideoPlayer);
            videoPlayer.clip = clip;
            videoPlayer.resourceType = cc.VideoPlayer.ResourceType.LOCAL;
            videoPlayer.keepAspectRatio = true;
            videoPlayerNode.parent = videoParentNode;
            videoPlayer.node.on("ready-to-play", function (event) {
                videoPlayer.play();
            });
        })

浏览器中这个video就跑不起来,这里面的clip需要处理吗?

能分享一下解决方案吗,我这边也遇到这个问题,求教了