1. 程式人生 > >FFmpeg+Nginx搭建HLS直播服務

FFmpeg+Nginx搭建HLS直播服務

    HLS是基於HTTP上的視訊點播和直播傳輸協議,在目前OTT和IPTV點直播系統中被大面積應用。

    在這個過程中為了除錯和Demo方便常常需要搭建一個HLS服務,下面研究了一個基於FFmpeg+Nginx的直播HLS方案,核心思想是:

    1. FFmpeg作為轉碼,HLS切片,m3u8更新工具。

    2. Nginx負責HTTP服務。

執行FFmpeg服務:

ffmpeg -re -i 1.ts  -map 0 -f ssegment -segment_format mpegts -segment_list playlist.m3u8 -segment_list_flags +live -segment_list_size 2 -segment_time 10 out%03d.ts

 -re引數代表生成過程按照輸入視訊的實際fps,保證直播。

 -segment_format mpegts 切片採用ts流,

 -segment_list playlist.m3u8 生成m3u8檔案,

 -segment_list_flags +live表明是直播流,

 -segment_list_size 2 表示playlist m3u8中包含2個切片,設定較少的數是保證客戶端直播的實時性。

 -segment_time 10 表示單個切片10s的時間

 最後生成的切片以out***.ts的方式儲存在目錄中

執行Nginx服務:

配置Nginx:

server {
        listen 8080 default_server;
        listen [::]:8080 default_server;

        root /home/lyh/ffmpeg_sources/FFmpeg/hls_test;

以下省略

將Ngnix server的root指定到FFmpeg生成HLS切片的路徑。

sudo nginx啟動服務。因此有測試地址http://localhost:8080/playlist.m3u8

VLC測試

播放過程FFmpeg會不斷更新playlist.m3u8 ,VLC將在切片結束後重新請求更新playlist.m3u8獲得新的切片。