聶長君
(作者單位:德陽市廣播電視臺)
HLS協議是蘋果公司研發的一種動態碼率自適應技術。包含了一個m3u(8)索引文件和TS媒體分片文件以及key加密串文件(可選)。它主要用于電腦和蘋果設備終端的音視頻服務。
HLS文件是后綴為m3u8的文本列表文件,用記事本打開就可以看到結構。m3u文件的utf-8格式而已,里面的視頻列表就是ts。直播時,播放器會定時反復請求這個文件,文件隨時更新就成直播,建議是10 s。
IP組播技術有其獨特的優越性:在組播網絡中,即使用戶數量成倍增長,主干帶寬不需要隨之增加。這個優點使它成為當前網絡技術中的研究熱點之一。IP組播在一些多用戶定向發送的網絡應用中使用非常普遍,如遠程多媒體會議、遠程教學、視頻點播、定向電子商務,以及ISP的IPTV(網絡電視)等。
一個組播IP地址能夠標識網絡不同位置的多個用戶主機,多播地址范圍為224.0.0.0~239.255.255.255。
Nginx是一款輕量級的HTTP(Web服務器)/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,并在一個BSD-like協議下發行。其特點是并發能力強,占有內存少,事實上Nginx的并發能力在同類型的網頁服務器中表現較好。目前,使用Nginx網站的用戶有:淘寶、騰訊、京東、百度、新浪、網易等。
FFmpeg不僅可以用來記錄、轉換數字音頻、視頻,還能將其轉化為流的開源計算機程序。FFmpeg使用LGPL或GPL許可證,具有非常強大的功能,包括視頻抓圖、視頻格式轉換、視頻采集功能、給視頻加水印等。它使用了非常先進的音視頻編解碼庫libavcodec,為保證超高的編解碼質量和可移植性,libavcodec里很多code都是從頭開發的。它提供了錄制、轉換以及流化音視頻的完整解決方案。
VLC是一款開源的跨平臺多媒體播放器,可在所有平臺上運行(Windows,Linux, Mac OS X, Unix, iOS, Android)。它支持眾多音頻與視頻解碼器,如常見的:MPEG*、DIVX、WMV、MOV、3GP、FLV、H.264、FLAC。有多種訪問形式:文件、光盤、http、ftp、mms、TCP/UDP、RTP/RTSP、IP組播、IPv4/IPv6等。它還能夠作為unicast或 multicast的流服務器,可以在IPv4或 IPv6的網絡環境下使用。此外,其還融合了FFmpeg的解碼器以及libdvdcss程序庫,帶有播放多媒體文件以及加密DVD影碟的功能。它完全免費、無間諜軟件、無廣告、無跟蹤用戶隱私的行為,是我們常用的一款流媒體及視音頻播放軟件。

圖1 Windows下HLS直播流的搭建(本文服務器:LMT-959)流程圖
圖1是基于Windows的HLS直播流的搭建(本文服務器:LMT-959)流程圖,具體步驟如下。
解壓Nginx軟件后,打開配置文件confmime.types,為了支持hls協議,需要修改內容:
在 application/zip zip;這一行后面增加2行:
application/x-mpegURL m3u8;
application/vnd.apple.mpegurl m3u8;
在 video/x-msvideoavi;行后,增加1行:
video/MP2Tts;
注意:不要有中文路徑,若任務管理器中沒有ngnix的兩個進程,則未啟動成功。解決方案如下:
第一,關閉Windows防火墻。
第二,80端口被占用了(80端口為Nginx默認的配置,本文使用8081作為測試端口號)。需要修改文件conf ginx.conf,將里面的
server{
listen 80;//改為其他未被占用的端口號。
第一,使用RJ45雙絞線把服務器與IPTV編碼器連接起來,使服務器能夠讀取出IPTV編碼器的UDP流。
用VLC打開網絡串流(本文地址:udp∶//231.3.106.3∶1001)查看是否正常。
第二,編輯批處理文件運行或在C MD下運行。
d∶ffmpeg64inffmpeg-iudp∶//231.3.106.3∶1001 -strict -2 -c∶v libx264-b 1000000 -c∶aaac -hls_time 10 -hls_wrap 3 -f hls D∶ ginx-1.10.3htmldytv.m3u8
第三,在客戶端電腦中使用VLC打開網絡串流(本文地址:http∶//lmt-959∶8081/dytv.m3u8)播放測試,如圖2所示。

圖2 播放測試
第四,要想在互聯網上播放此HLS流地址,可以使用帶有固定IP出口的路由器端口映射到Nginx服務器。至此,蘋果、安卓、微軟等系統的手機、平板、電腦等都能播放此HLS直播流。
HLS協議相較于RTMP、RTSP、MMS等直播流媒體協議,不同在于:在服務器端,HLS將直播數據流存儲為連續的、很短時長的MPEG-TS格式媒體文件,而客戶端則不斷下載并播放這些連續的TS小文件。我們可以這樣認為,HLS是以點播的技術方式來實現直播。由于使用HTTP協議傳輸,所以完全不用考慮防火墻及代理的問題,加上分段文件時長很短,客戶端可以快速選擇和切換碼率,以適應不同帶寬環境條件下的播放。但由于HLS的這種技術特點,它的延遲一般會高于普通的流媒體直播協議。
HTTP漸進下載(如:HLS協議)和基于RTSP/RTP的實時流媒體協議,是兩種完全不同的東西,目前比較好用又方便的是用HTTP漸進下載方法。其中,Apple公司的HLS協議是這方面的代表。它最初是蘋果公司針對iPhone、iPad等移動設備開發的流媒體直播協議。現在,HTML5直接支持HLS,安卓(Android)也原生支持HLS,而微軟從Internet Explorer 9(簡稱IE9)就開始支持HTML5了,所以HLS是全平臺直播流。