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获得新的切片。