微信小程序 短剧开发技术踩坑指南 仿抖音快手小视频

1、Video组件

微信官方文档地址:

https://developers.weixin.qq.com/miniprogram/dev/component/video.html

uniapp官方文档地址:

https://uniapp.dcloud.net.cn/component/video.html

2、Swiper和Video如何实现抖音 快手效果

官方提示尽量不要超过3个标签(同一个界面)官方提示尽量不要超过3个标签(同一个界面)

链接地址:
https://developers.weixin.qq.com/community/develop/doc/000e4ef22583d8961919efb6b56009

  • 解决方案1:swiper里通过放置iamge和Video标签切换来实现
  • 解决方案2:swiper里只有固定的3个Video标签,通过算法来更新切换数据源

3、视频内容兼容性

如果不加密视频内容的话,首选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)"}}

4、部分手机播放会出现卡顿、画面不动、绿屏等问题

解决方案:

  • 1: 将m3u8换为mp4文件
  • 2:在Video组件上新增属性 custom-cache="{{true}}"

提示:大部分是华为手机会出现异常,小米也有小部分。

5、视频内容如何放抓包

如何防止自己小程序里的视频数据被别人转包呢。

总结:苹果目前没有好的方案,安卓通过m3u8远程加密本地解密播放即可。

从微信的官方文档我们得知


image.png

但在实际使用中我们会发现微信IOS端video是不支持读取本地的临时文件,安卓是可以的。

基于上面我们就可以通过将后端返回的加密m3u8文件再通过前端解密算法缓存到本地,最后再去播放。(有兴趣的留言或私信)

6、如何防止自己的接口被抓包

解决方案

  • 1:使用微信提供的网关服务,这样抓包是看不到网络请求的数据;(付费的)
  • 2: 前后端采用加签 加密解密数据即可(免费)

7、小程序接口访问慢

1:小程序端校验是否开启了域名校验
2:小程序管理后台配置
开发管理-》开发设置-》ip白名单+服务器域名
3:再配合后台运维 看对眼的服务器域名是否有付费CDN加速


image.png

8、小程序切换域名不能访问

1:小程序端校验是否开启了域名校验
2:小程序管理后台配置
开发管理-》开发设置-》ip白名单+服务器域名
3: 运维后台对应的服务器、ip是否有设置https对应的证书

举例:

'{"errno":600001,"errMsg":"request:fail -200:net::ERR_CERT_COMMON_NAME_INVALID"}',

上面这个报错就是因为服务器ip对应的没有设置https证书导致,找后台或者运维小哥哥处理即可。

9、解决不存在的path路径访问现有的小程序

以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('页面路径未找到,打开主界面')
            }
        },

10、如何监控小程序里的错误异常

以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
            }
        },

11:如何防止别人对我们的视频资源进行录屏

安卓平台

以下的代码能让安卓用户录屏下来的视频画面全是黑屏的。

如果是截图会提示:该应用不允许截屏

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)
                        }
                    })

12、小程序类目不匹配 如何让审核通过

当自己的实际运营类目是A,提审的时候被拒 显示还需要补充A的类目资质,但A的类目资质自己又无法获取, 这个时候就可以考虑绕道解决了。

整体思路就是提审的时候是正确的数据版面

提审通过上线之后 再通过oss配置或后台接口 调整数据为最新的即可。

13、如何一套代码 对应多个马甲包小程序

前后端约定一个或多个字段,比如小程序id等字段来区分小程序是哪个

14、wx.login偶发获取不到数据怎么处理

  • 获取到了就正常操作 请求后台api去登录注册
  • 获取为空就采用设备id策略先登录,后续再更新wx.login请求后台
  • 获取失败就重试,设置一个重试次数好一些
wx.login({
                    timeout: 10000,
                    success(res) {
                        if (res.code) {
                            //有微信code登录
                            that.postLoginData(params, res.code)
                        } else {
                            //无微信code登录 借助设备id登录,后续在接口里再补充wxCode上去
                            that.postLoginData(params)
                        }
                    },
                    fail(failRes) {
                        //重试
                    },
                })

15、小程序中css动画保持在最后状态失败

新增这个是不够的-webkit-animation-fill-mode:forwards, 还需要添加!important

看下面终极方案:

.zhuanpanView360{
    -webkit-animation-fill-mode:forwards !important ;
    animation-fill-mode: forwards !important;
    animation: zhuanpan360  2.1s linear 1 ;
}

16、小程序里的视频如何像竞品 那样清晰且体积小

  • 1:使用ffmpeg指令
  • 2:使用格式工厂压缩
  • 3:【推荐】使用剪映 快捷操作

分辨率:一般保持原片分辨率即可

编码:使用默认H.264

格式:选择mp4文件

帧率:选择60fps

码率:1000及以上手动调试

不同的码率输出的视频大小也是不一样,具体以实际大小和输出的内容清晰度为主。

image.png

完结感谢,欢迎探讨留言。

这里补充网友提问的部分代码

<swiper vertical @animationfinish="animationfinish" @change="_swiperallchange" :circular="circular"
                class="video-swiper" :current="current" :duration="duration" :easingFunction="easingFunction">
                <swiper-item v-for="(item, indexClone) in curQueue" :key="indexClone">
                    <video enableProgressGesture enablePlayGesture :autoplay="item.audioId1&&current==indexClone"
                        @ended="onEnded" @error="videoErrorCallback" @loadedmetadata="onLoadedMetaData" @pause="onPause"
                        @play="onPlay" @progress="onProgressFun" @timeupdate="onTimeUpdate" @waiting="onWaiting"
                        class="video_item" :controls="false" :data-index="indexClone" :data-playletid="item.courseid"
                        :data-videoid="item.courseid" :data-jishuId="item.id" 
                        
                        :loop="loop"
                        objectFit="contain" 
                        :showCenterPlayBtn="false" 
                        :src="item.audioId1"
                        :id="'video_' + indexClone" 
                        :data-videourls="item.audioId1"
                        v-if="(item.audioId1&&item.audioId1 != '')&&(indexClone==current||indexClone==(current+1))"></video>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351

推荐阅读更多精彩内容