赞
踩
微信官方文档地址:
https://developers.weixin.qq.com/miniprogram/dev/component/video.html
uniapp官方文档地址:
https://uniapp.dcloud.net.cn/component/video.html
官方提示尽量不要超过3个标签(同一个界面)官方提示尽量不要超过3个标签(同一个界面)
链接地址:
https://developers.weixin.qq.com/community/develop/doc/000e4ef22583d8961919efb6b56009
如果不加密视频内容的话,首选mp4格式的文件即可。
m3u8在很多安卓机型上回出现报错,导致播放异常。
错误1
errMsg":"HLS error, type: mediaError, details: bufferStalledError,
错误2
{"errMsg":"HLS error, type: mediaError, details: fragParsingError, response: \"none\""},
错误3
{"errMsg":"MEDIA_ERR_DECODE(-4003,-1)"}}
解决方案:
提示:大部分是华为手机会出现异常,小米也有小部分。
如何防止自己小程序里的视频数据被别人转包呢。
总结:苹果目前没有好的方案,安卓通过m3u8远程加密本地解密播放即可。
从微信的官方文档我们得知
但在实际使用中我们会发现微信IOS端video是不支持读取本地的临时文件,安卓是可以的。
基于上面我们就可以通过将后端返回的加密m3u8文件再通过前端解密算法缓存到本地,最后再去播放。(有兴趣的留言或私信)
解决方案
1:小程序端校验是否开启了域名校验
2:小程序管理后台配置
开发管理-》开发设置-》ip白名单+服务器域名
3:再配合后台运维 看对眼的服务器域名是否有付费CDN加速
1:小程序端校验是否开启了域名校验
2:小程序管理后台配置
开发管理-》开发设置-》ip白名单+服务器域名
3: 运维后台对应的服务器、ip是否有设置https对应的证书
举例:
'{"errno":600001,"errMsg":"request:fail -200:net::ERR_CERT_COMMON_NAME_INVALID"}',
上面这个报错就是因为服务器ip对应的没有设置https证书导致,找后台或者运维小哥哥处理即可。
以uniapp开发的小程序为例,在App.vue中新增如下的代码,和onLaunch是同一层级。
onPageNotFound(e) { printLog('页面路径未找到', JSON.stringify(e)) let query = e.query; let paramsArr = Object.keys(query); let params = ''; paramsArr.forEach((item, index) => { if (index === (paramsArr.length - 1)) { params += (item + '=' + query[item]); } else { params += (item + '=' + query[item] + '&'); } }); if (e.path.includes('oldPage')) { uni.reLaunch({ url: `/pages/newPage/newPage?${params}` }) printLog('页面路径未找到,打开新页面', params) return false; } else { uni.reLaunch({ url: `/pages/home/home` }) printLog('页面路径未找到,打开主界面') } },
以uniapp开发的小程序为例,在App.vue中新增如下的代码,和onLaunch是同一层级。
可以将错误定期或立即上报给后台
也可以将错误上报给微信的WE分析平台 或对接第三方小程序上报统计平台。
onError(error) {
printLog('小程序报错', JSON.stringify(error))
if (this.globalData.errorCount < 6) {
printLog('小程序报错 上报')
sensor.reportWeixinEvent("app_lauch", {
"errordetail": JSON.stringify(error)
})
this.globalData.errorCount += 1
}
},
安卓平台
以下的代码能让安卓用户录屏下来的视频画面全是黑屏的。
如果是截图会提示:该应用不允许截屏
wx.setVisualEffectOnCapture({
visualEffect: 'hidden',
success: (res) => {
printLog('录屏 success->', res)
},
fail: (err) => {
printLog('录屏 fail>', res)
},
complete: (res) => {
printLog('录屏 complete>', res)
}
})
ios平台
通过以下代码去监听并发送通知事件,在需要处理的界面上层自定义加视图View去干扰提醒。
wx.onScreenRecordingStateChanged(function(res) { printLog('录屏状态', res.state) uni.$emit('screenRecord', res.state == 'start'); }) wx.getScreenRecordingState({ success: (res) => { printLog('查询 录屏 success->', res) if (res.state == 'on') { uni.$emit('screenRecord', true) } else if (res.state == 'off') { uni.$emit('screenRecord', false) } }, fail: (err) => { uni.$emit('screenRecord', false) } })
当自己的实际运营类目是A,提审的时候被拒 显示还需要补充A的类目资质,但A的类目资质自己又无法获取, 这个时候就可以考虑绕道解决了。
整体思路就是提审的时候是正确的数据版面
提审通过上线之后 再通过oss配置或后台接口 调整数据为最新的即可。
前后端约定一个或多个字段,比如小程序id等字段来区分小程序是哪个
wx.login({
timeout: 10000,
success(res) {
if (res.code) {
//有微信code登录
that.postLoginData(params, res.code)
} else {
//无微信code登录 借助设备id登录,后续在接口里再补充wxCode上去
that.postLoginData(params)
}
},
fail(failRes) {
//重试
},
})
新增这个是不够的-webkit-animation-fill-mode:forwards
, 还需要添加!important
看下面终极方案:
.zhuanpanView360{
-webkit-animation-fill-mode:forwards !important ;
animation-fill-mode: forwards !important;
animation: zhuanpan360 2.1s linear 1 ;
}
分辨率:一般保持原片分辨率即可
编码:使用默认H.264
格式:选择mp4文件
帧率:选择60fps
码率:1000及以上手动调试
不同的码率输出的视频大小也是不一样,具体以实际大小和输出的内容清晰度为主。
完结感谢,欢迎探讨留言。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。