Windows 下 IIS + FFmpeg 搭建流媒體服務

名詞解釋

先用本身的理解,描述一下什麼是流媒體服務:前端

在訪問網絡上的普通資源時,一般都須要把資源文件完整下載過來以後才能播放。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 了。

參考連接

相關文章
相關標籤/搜索