-
Creator 版本:2.3.3
-
目标平台: < Web Mobile>
-
详细报错信息,包含调用堆栈:
-
重现方式:在苹果手机上用网页端打开无法播放视频。在安卓手机上可以播放视频
-
出现概率:每次都出现
-
额外线索:
如果h5运行在微信浏览器,那可以尝试:
document.addEventListener("WeixinJSBridgeReady", function () {
this.videoPlayer.play();
}.bind(this), false);
点击触摸的方式我试过了。 还是没有反应。
不至于点击都不能出发播放,可能哪里用法没对,贴出代码看看呢
我这里是发布web mobile 在苹果手机上不能播放视频。其他发布安卓 或者IOS 是可以的。// 播放本地视频
startLoacVideo: function(filepath)
{
let self = this;
if(cc.sys.platform != cc.sys.IPHONE || cc.sys.platform != cc.sys.IPAD)
{
self.videoPlayer.stop();
}
this.btnclose.node.active = false;
this.loadend = true;
this.gbtime = 60;
ManagerHelp_SetWaitLockLayer(WAIT_OPENED);
self.videoPlayer.node.active = true;
self.videoPlayer.resourceType = cc.VideoPlayer.ResourceType.LOCAL; // 加载本地视频
cc.loader.loadRes(filepath, cc.Asset, function(err, clip)
{
if(!err)
{
self.videoPlayer.clip = clip;
console.log("视频地址:"+ clip);
}
});
document.addEventListener("WeixinJSBridgeReady", function () {
console.log("微信回调");
this.onPlayVideo.play();
WeixinJSBridge.call('hideOptionMenu');
}.bind(this), false);
},
// 播放视频
startplayvideo : function(strurl, videconame, dirname, flgupdata)
{
//视频资源远程链接地址 ,资源名称 ,资源上级目录名称 , 是否需要更新 , 返回用本地1 或者 远程2 资源地址
//window.mfConfig.LoadVideo = function(strUrl, imgname, dirname, flgupdata , callback)
let self = this;
this.btnclose.node.active = false;
this.loadend = true;
this.gbtime = 60;
ManagerHelp_SetWaitLockLayer(WAIT_OPENED);
window.mfConfig.LoadVideo(strurl,videconame,dirname,flgupdata,function(flglocal, filepath)
{
if(cc.sys.platform != cc.sys.IPHONE || cc.sys.platform != cc.sys.IPAD)
{
self.videoPlayer.stop();
}
if(flglocal == 2) // 播放视频
{
self.videoPlayer.resourceType = cc.VideoPlayer.ResourceType.REMOTE; // 加载远程视频
self.videoPlayer.remoteURL = filepath; // 设置远程视频地址
// ManagerHelp_SetSystemLabel("播放远程地址" + filepath);
}
else if(flglocal == 1) // 播放本地视频
{
self.videoPlayer.resourceType = cc.VideoPlayer.ResourceType.LOCAL; // 加载本地视频
self.videoPlayer.clip = filepath;
// this.videoPlayer.impl.setURL(cc.url.raw('resources/video/xx.mp4'), this.mute || this._volume === 0);
// this.videoPlayer.impl.setURL(filepath, true);
}
self.videoPlayer.node.active = true;
});
},
// 视频回调
PlayVideoCallBack: function(sender, event)
{
let self = this;
// PLAYING 表示视频正在播放中。
// PAUSED 表示视频暂停播放。
// STOPPED 表示视频已经停止播放。
// COMPLETED 表示视频播放完成。
// META_LOADED 表示视频的元信息已加载完成,你可以调用 getDuration 来获取视频总时长。
// CLICKED 表示视频被用户点击了。
// READY_TO_PLAY 表示视频准备好了,可以开始播放了
if(event == cc.VideoPlayer.EventType.READY_TO_PLAY)
{
window.mfConfig.StopAllAudio();
ManagerHelp_SetWaitLockLayer(WAIT_CLOSED);
console.log("视频加载完成");
this.node.runAction(cc.sequence(cc.delayTime(0.1),cc.callFunc(function(sender)
{
self.onPlayVideo();
})));
}
else if(event == cc.VideoPlayer.EventType.COMPLETED)
{
ManagerHelp_SetWaitLockLayer(WAIT_CLOSED);
this.btnclose.node.active = true;
this.CloseView();
}
else if(event == cc.VideoPlayer.EventType.META_LOADED)
{
this.gbtime = this.videoPlayer.getDuration() + 5;
}
},
update (dt) {
if(this.loadend)
{
if(this.gbtime <= 0)
{
this.loadend = false;
this.btnclose.node.active = true;
this.CloseView();
}
this.gbtime = this.gbtime - dt;
}
},
onPlayVideo: function()
{
if(cc.sys.platform != cc.sys.IPHONE || cc.sys.platform != cc.sys.IPAD)
{
console.log("开始播放视频");
this.videoPlayer.play();
}
}
1、这个操作异步性强,
cc.loader.loadRes(filepath, cc.Asset, function (err, clip) {
if (!err) {
self.videoPlayer.clip = clip;
console.log(“视频地址:” + clip);
}
});
可能点击回调videoPlayer.play时这里还没加载完成。
还不如:
let localUrl = cc.url.raw(“resources/…/.mp4”);
self.videoPlayer.resourceType = cc.VideoPlayer.ResourceType.REMOTE;
self.videoPlayer.remoteURL = localUrl;
2、点击回调如果是onPlayVideo,那么判断cc.sys.platform != cc.sys.IPHONE || cc.sys.platform != cc.sys.IPAD干嘛?
3、"WeixinJSBridgeReady"监听回调中this.onPlayVideo.play();这个代码有问题哦
2、点击回调如果是onPlayVideo,那么判断cc.sys.platform != cc.sys.IPHONE || cc.sys.platform != cc.sys.IPAD干嘛?之前版本ios包不能播放视频加的。我按照你的方法试试看。"WeixinJSBridgeReady"监听回调中this.onPlayVideo.play(); 这里的代码应该怎么写,请指教。谢谢
let localUrl = cc.url.raw(“resources/…/.mp4”);
self.videoPlayer.resourceType = cc.VideoPlayer.ResourceType.REMOTE;
self.videoPlayer.remoteURL = localUrl;
你说的这种方式你试过吗,我这里试了下不管用的。播放本地视频也不能按照你这种写法
this.videoPlayer.play();
抛开所有业务逻辑处理,编辑器中videoPlayer直接挂载好本地资源,一个按钮,点击回调中直接videoPlayer.play();
感谢。试过有些浏览器点击可以播放,有的不行
你可以按这个思路试一下,click事件和videoplayer.play()写在同一帧里面。
你好 我也是发布在web mobile上苹果手机不能播放视频 这种要怎么解决呢?麻烦您告知一下
你好,这是什么意思呢?
