- PHP敏感词检测(msg_sec_check)服务端检查总是返回正确的结果的原因
php开发的小伙伴可能都会遇到,在使用敏感词检测接口(msg_sec_check)的时候,不管中文传什么内容返回的结果都是验证通过的,原因是json_encode中文转Unicode了。解决这个问题可以在json_encode加上参数JSON_UNESCAPED_UNICODE,禁止将中文转Unicode,如:json_encode($data, JSON_UNESCAPED_UNICODE),这样问题就解决了。
2022-04-18 - 使用threejs渲染视频
琢磨了很久,翻了很多相关文档,才实现了用threejs渲染视频的方法 思路如下 1 在wxml文件里写两个canvas <canvas type="webgl" class="myCanvas" id="myCanvas"></canvas> <canvas style="position: absolute;left: 0;top:300rpx;background-color: red;" type="2d" id="target1"></canvas> 2 实例threeJs相关实例和方法,具体参考,可以百度, 3 添加2d相关实例方法, export default class VideoPlayer { constructor(component){// component 是组件里的this, this.decoder = wx.createVideoDecoder() this.component = component const videoUrl = 'https://cdn2.h5no1.com/static-cdn/cpbz/v.mp4'; this.dataUriList = [] } getCanvasNode(id) { return new Promise((resolve) => { this.component.createSelectorQuery() .select('#' + id) .node(res => resolve(res.node)) .exec(); }); } async downLoad(url){ // 下载视频并压缩视频,如果不压缩可能会卡 return new Promise(resolve=>{ wx.downloadFile({ url, success:res=>{ wx.compressVideo({ quality:'low', // resolution:0.9, // fps:60, src:res.tempFilePath, success:result=>{ console.log(result) resolve(result.tempFilePath) } }) }, fail:()=>{ resolve(url) } }) }) } async playVideo(id,videoUrl,cb){ const canvas = await this.getCanvasNode(id) //获取2dcanvas节点 const path = await this.downLoad(videoUrl) // 下载视频并返回本地地址 const context = canvas.getContext('2d') // 2d上下文 const render = ({ data, width, height }) => { // 渲染2d时,返回DataURI数据,作为纹理数据 canvas.height = height canvas.width = width const imageData = canvas.createImageData(data, width, height) context.putImageData(imageData, 0, 0) if(canvas.toDataURL()){ cb && cb(canvas.toDataURL()) // cb回调方法 } } const decoder = wx.createVideoDecoder() // 创建视频解码器 await decoder.start({ // 开始解码 abortAudio: true, source:path || videoUrl // tempFilePath, }) return Promise.resolve({ decoder, stop(){ return decoder.remove() }, play:async ()=>{ let imageData = decoder.getFrameData() // 获取下一帧的解码数据 if (imageData){ render(imageData) } } }) } } 4 在threejs中引入上面的代码 import VideoPlayer from "./video.js" /* 省略前面的代码 */ this.videoPlayer = new VideoPlayer(this) this.vp = null var geometry = new THREE.PlaneGeometry( 520, 320, 1); var material = new THREE.MeshBasicMaterial( {side: THREE.DoubleSide} ); var plane3 = new THREE.Mesh( geometry, material ); plane3.position.set(0,rangeSize/2/2,-rangeSize/2) scence.add( plane3 ); this.videoPlayer.playVideo('target1','https://video-qn.51miz.com/preview/video/00/00/12/22/V-122260-B7D997DF.mp4',async (res)=>{ if(res){ textureLoader.load(res,texture=>{ // 加载datauri数据到纹理,一定要写在回调里,不然也看着卡顿 texture.minFilter = THREE.NearestFilter plane3.material.map = texture }); } }).then(res=>{ this.vp =res }) // 动画帧方法 this.wgbglCanvas.requestAnimationFrame(()=>{ if(this.vp && this.vp.play){ this.vp.play() } }) 5 视频解码器 文档 https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/wx.createVideoDecoder.html 这个方法很重要,没有这个方法,根本就不能实现webgl视频播放
2022-08-30 - 20210702当天下载的开发工具,报typeof4 is not a function?
【微信开发者工具】:Stable 1.05.2106300 【操作系统】:win10 【问题描述】:第一次做小程序,新下载的开发工具,Git克隆项目以后导入,就会报错。同事以前开发过小程序,用的是老版本的开发工具,正常用。 [图片]
2021-07-06 - 小程序支持使用OBJLoader加载obj真机调试有问题?
http://47.100.77.96:8080/image/minicode-6.zip,这是代码下载地址,代码片段不支持1024kb以上的文件,问题描述:微信开发工具能看到模型,有些人的手机也能看到模型,我的是荣耀V10,真机测试看不到模型,这个obj文件我项目中都是几M的,不会像这个十多M那么大,这个压缩包是代码片段。
2020-03-13