FFmpeg+Nginx搭建HLS直播服務
阿新 • • 發佈:2018-12-29
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獲得新的切片。