微信小程序 短劇開發(fā)技術踩坑指南 仿抖音快手小視頻

1、Video組件

微信官方文檔地址:

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

uniapp官方文檔地址:

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

2辣卒、Swiper和Video如何實現(xiàn)抖音 快手效果

官方提示盡量不要超過3個標簽(同一個界面)官方提示盡量不要超過3個標簽(同一個界面)

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

  • 解決方案1:swiper里通過放置iamge和Video標簽切換來實現(xiàn)
  • 解決方案2:swiper里只有固定的3個Video標簽掷贾,通過算法來更新切換數(shù)據(jù)源

3、視頻內容兼容性

如果不加密視頻內容的話荣茫,首選mp4格式的文件即可想帅。
m3u8在很多安卓機型上回出現(xiàn)報錯,導致播放異常计露。

錯誤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博脑、部分手機播放會出現(xiàn)卡頓、畫面不動票罐、綠屏等問題

解決方案:

  • 1: 將m3u8換為mp4文件
  • 2:在Video組件上新增屬性 custom-cache="{{true}}"

提示:大部分是華為手機會出現(xiàn)異常叉趣,小米也有小部分。

5该押、視頻內容如何放抓包

如何防止自己小程序里的視頻數(shù)據(jù)被別人轉包呢疗杉。

總結:蘋果目前沒有好的方案,安卓通過m3u8遠程加密本地解密播放即可蚕礼。

從微信的官方文檔我們得知


image.png

但在實際使用中我們會發(fā)現(xiàn)微信IOS端video是不支持讀取本地的臨時文件烟具,安卓是可以的。

基于上面我們就可以通過將后端返回的加密m3u8文件再通過前端解密算法緩存到本地奠蹬,最后再去播放朝聋。(有興趣的留言或私信)

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

解決方案

  • 1:使用微信提供的網(wǎng)關服務囤躁,這樣抓包是看不到網(wǎng)絡請求的數(shù)據(jù)冀痕;(付費的)
  • 2: 前后端采用加簽 加密解密數(shù)據(jù)即可(免費)

7荔睹、小程序接口訪問慢

1:小程序端校驗是否開啟了域名校驗
2:小程序管理后臺配置
開發(fā)管理-》開發(fā)設置-》ip白名單+服務器域名
3:再配合后臺運維 看對眼的服務器域名是否有付費CDN加速


image.png

8、小程序切換域名不能訪問

1:小程序端校驗是否開啟了域名校驗
2:小程序管理后臺配置
開發(fā)管理-》開發(fā)設置-》ip白名單+服務器域名
3: 運維后臺對應的服務器言蛇、ip是否有設置https對應的證書

舉例:

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

上面這個報錯就是因為服務器ip對應的沒有設置https證書導致僻他,找后臺或者運維小哥哥處理即可。

9腊尚、解決不存在的path路徑訪問現(xiàn)有的小程序

以uniapp開發(fā)的小程序為例吨拗,在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劝篷、如何監(jiān)控小程序里的錯誤異常

以uniapp開發(fā)的小程序為例,在App.vue中新增如下的代碼民宿,和onLaunch是同一層級携龟。

可以將錯誤定期或立即上報給后臺
也可以將錯誤上報給微信的WE分析平臺 或對接第三方小程序上報統(tǒng)計平臺

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平臺

通過以下代碼去監(jiān)聽并發(fā)送通知事件,在需要處理的界面上層自定義加視圖View去干擾提醒坟桅。

wx.onScreenRecordingStateChanged(function(res) {
                        printLog('錄屏狀態(tài)', 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的類目資質自己又無法獲取赖舟, 這個時候就可以考慮繞道解決了。

整體思路就是提審的時候是正確的數(shù)據(jù)版面

提審通過上線之后 再通過oss配置或后臺接口 調整數(shù)據(jù)為最新的即可夸楣。

13宾抓、如何一套代碼 對應多個馬甲包小程序

前后端約定一個或多個字段,比如小程序id等字段來區(qū)分小程序是哪個

14豫喧、wx.login偶發(fā)獲取不到數(shù)據(jù)怎么處理

  • 獲取到了就正常操作 請求后臺api去登錄注冊
  • 獲取為空就采用設備id策略先登錄石洗,后續(xù)再更新wx.login請求后臺
  • 獲取失敗就重試,設置一個重試次數(shù)好一些
wx.login({
                    timeout: 10000,
                    success(res) {
                        if (res.code) {
                            //有微信code登錄
                            that.postLoginData(params, res.code)
                        } else {
                            //無微信code登錄 借助設備id登錄,后續(xù)在接口里再補充wxCode上去
                            that.postLoginData(params)
                        }
                    },
                    fail(failRes) {
                        //重試
                    },
                })

15紧显、小程序中css動畫保持在最后狀態(tài)失敗

新增這個是不夠的-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

完結感謝涉兽,歡迎探討留言。

這里補充網(wǎng)友提問的部分代碼

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末篙程,一起剝皮案震驚了整個濱河市枷畏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌虱饿,老刑警劉巖拥诡,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件触趴,死亡現(xiàn)場離奇詭異,居然都是意外死亡袋倔,警方通過查閱死者的電腦和手機雕蔽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宾娜,“玉大人批狐,你說我怎么就攤上這事∏八” “怎么了嚣艇?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長华弓。 經(jīng)常有香客問我食零,道長,這世上最難降的妖魔是什么寂屏? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任贰谣,我火速辦了婚禮,結果婚禮上迁霎,老公的妹妹穿的比我還像新娘吱抚。我一直安慰自己,他們只是感情好考廉,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布秘豹。 她就那樣靜靜地躺著,像睡著了一般昌粤。 火紅的嫁衣襯著肌膚如雪既绕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天涮坐,我揣著相機與錄音凄贩,去河邊找鬼。 笑死膊升,一個胖子當著我的面吹牛怎炊,可吹牛的內容都是我干的。 我是一名探鬼主播廓译,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼评肆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了非区?” 一聲冷哼從身側響起瓜挽,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎征绸,沒想到半個月后久橙,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體俄占,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年淆衷,在試婚紗的時候發(fā)現(xiàn)自己被綠了缸榄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出缓熟,到底是詐尸還是另有隱情尘盼,我是刑警寧澤鸣剪,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏碉输。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一亭珍、第九天 我趴在偏房一處隱蔽的房頂上張望敷钾。 院中可真熱鬧,春花似錦肄梨、人聲如沸闰非。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瘪贱,卻和暖如春纱控,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背菜秦。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工甜害, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人球昨。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓尔店,卻偏偏與公主長得像,于是被迫代替她去往敵國和親主慰。 傳聞我的和親對象是個殘疾皇子嚣州,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內容

  • 最近幾個月因為公司的業(yè)務需求,一直在折騰小程序共螺,從開始的完全不熟悉该肴,到后面被各種坑折磨,是時候寫一篇總結了藐不,避免下...
    ArmorVon閱讀 1,880評論 1 1
  • 1.需求背景介于之前開發(fā)了一個直播和短視頻類型的微信小程序匀哄,因為考慮到后期兼容和穩(wěn)定技術上面采用了原生小程序來進行...
    KingKongCat閱讀 13,759評論 8 15
  • 前言 開發(fā)項目時秦效,實際遇到的一些功能需求和問題匯總。列出了當時參考的一些文章和官方文檔涎嚼。開發(fā)框架:mpvue官方文...
    Smile0204閱讀 1,609評論 0 5
  • 微信小程序開發(fā)指引 前言 本文檔我們主要關注微信小程序的開發(fā)使用阱州。微信小程序使用微信開發(fā)者工具開發(fā),使用其專有語言...
    tikeyc閱讀 36,732評論 0 19
  • uni-app的基本使用 基礎部分: 環(huán)境搭建 頁面外觀配置 數(shù)據(jù)綁定 uni-app的生命周期 組件的使用 un...
    千山鳥語閱讀 505評論 0 1