解決小程序中視頻因為編碼格式不能播放的問題

最近開發(fā)一個小程序撮弧,發(fā)現(xiàn)video組件的視頻不能播放淀歇。琢磨了幾天易核,終于可以了。現(xiàn)把經(jīng)驗分享出來浪默,希望對遇到這個問題牡直,但一時還沒有解決的小伙伴有一點幫助缀匕。

請注意:由于以下使用的七牛云測試域名自創(chuàng)建起 30 個自然日后系統(tǒng)會自動回收。所以2019.4.20號以后碰逸,部分url會失效乡小。

1、如何獲取視頻src地址

首先饵史,我們要知道满钟,video組件的src地址是什么,我開始以為胳喷,小程序的video組件的src地址一定類似官方示例這樣的湃番。

http://wxsnsdy.tc.qq.com/105/20210/snsdyvideodownload?filekey=30280201010421301f0201690402534804102ca905ce620b1241b726bc41dcff44e00204012882540400&bizid=1023&hy=SH&fileparam=302c020101042530230204136ffd93020457e3c4ff02024ef202031e8d7f02030f42400204045a320a0201000400

可能跟我一樣,沒接觸過這塊的小伙伴也有一樣的想法吭露。其實不然吠撮,視頻src地址的長度可長可短,一般為.mp4結尾讲竿。判斷src地址是否正確泥兰,很簡單,將地址復制到瀏覽器中戴卜,可正常播放逾条,代表地址正確琢岩。

如何獲取一個視頻的src地址投剥?

可以在Chrome中使用Video Downloader professional這個插件,它可以直接下載網(wǎng)站正在播放的視頻担孔,我在騰訊視頻上親測可用江锨,部分短視頻可以,電影電視劇還是不行糕篇。

針對沒有梯子的小伙伴啄育,可以直接在 https://github.com/DeppWang/Chrome-extensions 下載對應的插件,在瀏覽器搜索框中輸入chrome://extensions/打開擴展程序頁面(或者右上角三個點->更多工具->擴展程序 )拌消,選中右上角的開發(fā)者模式挑豌,將下載好的插件拖動到擴展程序頁面完成安裝。

2墩崩、查找視頻不能播放的原因

首先將視頻地址(如:http://pov1yx2ze.bkt.clouddn.com/iaa1.mp4)復制到Chrome地址欄氓英,看能否在瀏覽器中播放。如果不能播放鹦筹,說明視頻損壞或者此視頻的編碼格式是mpeg4铝阐。可參考七牛云解釋:

https://developer.qiniu.com/fusion/kb/4082/video-playback-caton-unable-to-play

你可以將視頻上傳到七牛云對象儲存后铐拐,復制外鏈徘键,通過http://pov1yx2ze.bkt.clouddn.com/iaa1.mp4?avinfo查看視頻編碼格式练对。

image.png

請注意,這是七牛云對象存儲的視頻才有的功能吹害,不是所有視頻地址后加?avinfo都可以螟凭。具體可查看七牛云教程:

https://developer.qiniu.com/dora/manual/1247/audio-and-video-metadata-information-avinfo

微信小程序說支持mpeg-4格式,不知為何又播放不了它呀。

image.png

3赂摆、更改視頻的編碼格式

現(xiàn)在知道視頻播放不了的原因了。我將微信官方提供的視頻上傳到七牛云后钟些,可以看出編碼格式為h264烟号。

image.png

所以,我們要想辦法轉換視頻的編碼格式政恍。我是通過七牛云提供的代碼轉的汪拥,應該也可以通過其他工具轉。七牛云教程:

https://developer.qiniu.com/dora/manual/1248/audio-and-video-transcoding-avthumb
https://developer.qiniu.com/kodo/sdk/1239/java#8

運行七牛云提供的代碼需要使用七牛云的sdk篙耗∑戎可以使用Spring Initializr( https://start.spring.io/ )初始化一個基于Gradle的springboot項目,下面是針對Java的相關代碼:

public static void main(String[] args) {
        String accessKey = "access key";
        String secretKey = "secret key";

        //待處理文件所在空間
        String bucket = "bucket name";
        //待處理文件名
        String key = "file key";

        Auth auth = Auth.create(accessKey, secretKey);

        //數(shù)據(jù)處理指令宗弯,支持多個指令
        String saveMp4Entry = String.format("%s:avthumb_test_target.mp4", bucket);//avthumb_test_target.mp4是轉換后的文件名
        String avthumbMp4Fop = String.format("avthumb/mp4/vcodec/libx264|saveas/%s", UrlSafeBase64.encodeToString(saveMp4Entry));//libx264為編碼格式

        //數(shù)據(jù)處理隊列名稱脯燃,為空時代表使用公有隊列
        String persistentPipeline = "";
        //數(shù)據(jù)處理完成結果通知地址
        String persistentNotifyUrl = "http://pov1yx2ze.bkt.clouddn.com/qiniu/pfop/notify";//填一個真正的url地址
        //構造一個帶指定Zone對象的配置類
        Configuration cfg = new Configuration(Zone.zone0());
        //...其他參數(shù)參考類注釋
        //構建持久化數(shù)據(jù)處理對象
        OperationManager operationManager = new OperationManager(auth, cfg);
        try {
            String persistentId = operationManager.pfop(bucket, key, avthumbMp4Fop, persistentPipeline, persistentNotifyUrl, true);
            //可以根據(jù)該 persistentId 查詢?nèi)蝿仗幚磉M度
            System.out.println(persistentId);
            OperationStatus operationStatus = operationManager.prefop(persistentId);
            System.out.println(operationStatus);
            //解析 operationStatus 的結果
        } catch (QiniuException e) {
            System.err.println(e.response.toString());
        }
}


compile 'com.qiniu:qiniu-java-sdk:7.2.+'//.gradle中七牛云的java sdk

現(xiàn)在可以使用http://pov1yx2ze.bkt.clouddn.com/avthumb_test_target.mp4?avinfo查看視頻編碼格式。

image.png

此時將http://pov1yx2ze.bkt.clouddn.com/avthumb_test_target.mp4放到小程序就可以播放了蒙保。

4辕棚、如何方便的存儲視頻

如果你有備案的域名,將視頻存放到七牛云或者其他商業(yè)云上邓厕,是一個不錯的方式逝嚎。但使用小程序云開發(fā)存儲視頻是一個更好的選擇,src直接使用云文件ID就可以了详恼。

總結

說了這么多补君,其實我也是剛接觸小程序的小白。這篇教程主要是提供一個轉換視頻編碼格式的一個途徑昧互。如果哪里有錯誤挽铁,請留言。

一句話:如果視頻不能播放敞掘,可以先看看是否是編碼格式的問題叽掘。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市渐逃,隨后出現(xiàn)的幾起案子够掠,更是在濱河造成了極大的恐慌,老刑警劉巖茄菊,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疯潭,死亡現(xiàn)場離奇詭異赊堪,居然都是意外死亡,警方通過查閱死者的電腦和手機竖哩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進店門哭廉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人相叁,你說我怎么就攤上這事遵绰。” “怎么了增淹?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵椿访,是天一觀的道長。 經(jīng)常有香客問我虑润,道長成玫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任拳喻,我火速辦了婚禮哭当,結果婚禮上,老公的妹妹穿的比我還像新娘冗澈。我一直安慰自己钦勘,他們只是感情好,可當我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布亚亲。 她就那樣靜靜地躺著彻采,像睡著了一般。 火紅的嫁衣襯著肌膚如雪朵栖。 梳的紋絲不亂的頭發(fā)上颊亮,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天柴梆,我揣著相機與錄音陨溅,去河邊找鬼。 笑死绍在,一個胖子當著我的面吹牛门扇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播偿渡,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼臼寄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了溜宽?” 一聲冷哼從身側響起吉拳,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎适揉,沒想到半個月后留攒,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體煤惩,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年炼邀,在試婚紗的時候發(fā)現(xiàn)自己被綠了魄揉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡拭宁,死狀恐怖洛退,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情杰标,我是刑警寧澤兵怯,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站腔剂,受9級特大地震影響摇零,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜桶蝎,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一雪猪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧彤悔,春花似錦邓了、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至呻顽,卻和暖如春雹顺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背廊遍。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工嬉愧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人喉前。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓没酣,卻偏偏與公主長得像,于是被迫代替她去往敵國和親卵迂。 傳聞我的和親對象是個殘疾皇子裕便,可洞房花燭夜當晚...
    茶點故事閱讀 44,652評論 2 354