一、什麼是m3u8:
M3U8視訊格式也是一種M3U,隻是它的編碼格式是UTF-8格式。M3U用Latin-1字元集編碼。M3U8格式特點是帶有一個目錄資訊或檔案。
二、為什麼使用m3u8:
随着客戶在移動端播放的需求日益強烈,我們的轉碼軟體開始輸出mp4格式檔案,經過測試,發現優秀的軟體壓縮mp4跟flv壓縮率幾乎相差無幾,于是我們把輸出格式統一為mp4,經過我們軟體處理後的mp4檔案能實作無緩沖拖拽播放(快進播放),也解決了部分視訊檔案有聲音無畫面的問題,赢得了客戶的好評。
随着客戶的增加,mp4檔案播放的弊端也日益凸顯,主要集中在兩個方面,一是當視訊時長比較長的時候,mp4的關鍵幀元素往往很大,需要加載很長時間才能開始播放,網速不好的情況緩沖加載就要20多秒的時間,客戶早已急不可耐。二是當使用者打開一個視訊播放的時候,浏覽器會持續請求下載下傳mp4檔案直到下載下傳完成,就算是使用者暫停視訊播放浏覽器也會持續這種下載下傳狀态,如果這個視訊檔案是500M則會請求伺服器下載下傳500M檔案,是1G則會不停下載下傳1G,給伺服器硬碟和寬帶造成很大浪費和壓力。
于是我們參考優酷洋芋等大型視訊網站系統的播放檔案,發現他們的視訊檔案都是分段播放的,即把一個大的視訊檔案按照一定大小或時長把一個視訊分為N段播放,這樣的優勢是打開視訊加載速度快,可以達到秒播,另外一個優勢是當視訊播放第N段的時候,浏覽器會下載下傳N+1段,N+2則不會下載下傳,大大緩解了伺服器硬碟和寬帶壓力,可知道高昂的寬帶成本才是視訊網站的最大壓力。這樣的視訊檔案處理方式得到了大量客戶的一緻好評。
可是很快我們又發現了一個很嚴重的問題,xml分段清單的視訊在IOS上面也是一籌莫展,為了讓視訊在IOS裝置播放還得保留mp4檔案給IOS裝置播放。于是m3u8播放清單登場了。
m3u8是蘋果公司開發的一項新型播放格式,這種播放格式支援目前市面的windows、androis、ios裝置主流的浏覽器,同樣的視訊檔案既可以在flash環境播放,又能在無flash的html5環境播放,它的優勢還不止于此,它可以實作多種碼率在不同網速下的自動切換,網速好自動切換高清晰度視訊,網速慢自動播放低清晰度檔案,還可以實作流加密(視訊檔案本身加密)、分段下載下傳播放、任意時間點拖拽播放、随機視訊檔案廣告插入等等優勢,是以最新版的雲轉碼視訊系統僅把m3u8作為唯一的播放格式而放棄了其他格式的輸出。
三、安裝ffmpeg:
首先下載下傳windows 可用的ffmpeg檔案
網址為:https://ffmpeg.zeranoe.com/builds/
1、下載下傳後直接解壓:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CXzkkeNpXSq5kMNpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2LcRHelR3LcJzLctmch1mclRXY39zN4YTMwMTN5ATMxATM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
2、配置環境變量:
在系統變量的path中添加ffmpeg檔案夾中 bin 的路徑
配置完成後檢測是否配置成功
在CMD中輸入 ffmpeg -version,出現如下資訊則配置成功
四、開始轉換:
- 準備Mp4檔案
打開CMD
根據檔案位置在CMD中執行以下指令
ffmpeg -i E:\demo\demo.MP4 -profile:v baseline -level 3.0 -s 640x360 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls E:\demo\demo.m3u8
如出現以下提示則轉換成功
我們看一下轉換m3u8檔案夾中的檔案
檔案中包括一個m3u8檔案和多個ts檔案
我們打開m3u8檔案
發現檔案中其實就是指定了其他檔案的路徑。
個人的了解:轉換後的檔案就是幾個視訊的切片檔案(.ts檔案)組成的清單,在m3u8檔案中記錄了切片檔案的順序,當我們通路m3u8檔案時,會依次加載幾個小的視訊切片檔案。
當我們需要通路目前視訊的時候隻需要将位址直接指向目前m3u8檔案位址即可