先用本身的理解,描述一下什麼是流媒體服務:前端
在訪問網絡上的普通資源時,一般都須要把資源文件完整下載過來以後才能播放。vue
好比打開一個網頁的時候,對應的 HTML、CSS 和 JS 文件都下載完成以後,頁面內容和功能才能完整呈現。git
普通的體積小的資源還好,可是若是我要瀏覽一個幾百兆的視頻,就必須等視頻下載完成才能開始看麼?那太不方便了。github
因而,就有了流媒體服務。最終呈現出來的效果,是用戶能夠點擊網絡視頻的任意時間點,就能夠直接從這個時間點開始播放,緩衝時間很短,這樣是否是很方便?vue-cli
上網查了一下,最開始被各類名詞搞懵了,什麼 RTMP、HLS,這個那個的,看得人頭大。shell
最後發現,其實本身所要實現的功能,只是把服務器上的視頻文件可以以流媒體的效果呈現出來,供用戶使用而已。後端
用戶並不關心我在背後用的是什麼樣的技術,只要最終可以實現點到哪裏放哪裏的效果就行。服務器
研究了網上各類流媒體服務器的架設方案,都要用 FFmpeg 將源視頻進處理成 m3u8
+ ts
文件以後再供用戶訪問。網絡
可是網上的各類方案,在 Windows 下搭建流媒體服務,都須要用 Nginx。爲何不能用原生的 IIS 來提供服務呢?那就試試吧。ide
因而先在本機下載了 FFmpeg,用下面的命令將視頻文件進行處理,而後將處理後的 m3u8
+ ts
文件放到服務器上。
ffmpeg.exe -i 01.mp4 video.m3u8 -c:v libx264 -c:a copy -f hls -g 600 -hls_list_size 0
在 IIS 中,對 m3u8
+ ts
這兩種文件類型設置了 MIME,這樣後端服務器纔可以正常解析。
在前端頁面中,則用到了 hls.js 這個庫,專門用於播放 m3u8
文件。
最開始其實用的是 Video.js + 對應插件,可是發現老是會報錯,因而用了 hls.js,就再也不報錯了。
若是用 vue-cli 進行開發的話,還須要對 hls.js 進行配置:
import hlsjs from 'hls.js'; ... window.Hls = hlsjs;
這樣就能夠在 vue-cli 中放心地用 hls.js 了。