gfo*_*e07 9 srs http-live-streaming m3u8 simple-realtime-server
请注意,SRS 支持为特定分辨率生成单独的 m3u8 文件。SRS 是否还支持为多种分辨率和比特率场景生成额外的主 m3u8 文件?
\n所需的母版 m3u8 示例:
\n#EXTM3U\n#EXT-X-VERSION:3\n#EXT-X-STREAM-INF:BANDWIDTH=2340800,RESOLUTION=960x540,CODECS=\xe2\x80\x9cavc1.4d401f,mp4a.40.2\xe2\x80\x9d\nindex_0.m3u8\n#EXT-X-STREAM-INF:BANDWIDTH=1170400,RESOLUTION=480x270,CODECS=\xe2\x80\x9cavc1.4d4015,mp4a.40.2"\nindex_1.m3u8\n#EXT-X-STREAM-INF:BANDWIDTH=677600,RESOLUTION=480x270,CODECS=\xe2\x80\x9cavc1.4d4015,mp4a.40.2\xe2\x80\x9d\nindex_2.m3u8\nRun Code Online (Sandbox Code Playgroud)\n
Win*_*lin 16
请使用FFmpeg生成多个HLS:
ffmpeg -f flv -i "rtmp://server/live/livestream" \
-map 0:v:0 -map 0:a:0 -map 0:v:0 -map 0:a:0 -map 0:v:0 -map 0:a:0 \
-c:v libx264 -crf 22 -c:a aac -ar 44100 \
-filter:v:0 scale=w=480:h=360 -maxrate:v:0 600k -b:a:0 500k \
-filter:v:1 scale=w=640:h=480 -maxrate:v:1 1500k -b:a:1 1000k \
-filter:v:2 scale=w=1280:h=720 -maxrate:v:2 3000k -b:a:2 2000k \
-var_stream_map "v:0,a:0,name:360p v:1,a:1,name:480p v:2,a:2,name:720p" \
-preset fast -hls_list_size 10 -threads 0 -f hls \
-hls_time 3 -hls_flags independent_segments \
-master_pl_name "livestream.m3u8" \
-y "livestream-%v.m3u8"
Run Code Online (Sandbox Code Playgroud)
注意:您应该在一个 FFmpeg 进程中使用过滤器,而不是通过多个 FFmpeg 进程将 RTMP 转换为 HLS。FFmpeg 保持多个分辨率与 gop 对齐,以允许用户在不同的流之间切换。
由FFmpeg生成的m3u8母版:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-STREAM-INF:BANDWIDTH=1210000,RESOLUTION=480x360,CODECS="avc1.640015,mp4a.40.2"
livestream-360p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2283600,RESOLUTION=640x480,CODECS="avc1.64001e,mp4a.40.2"
livestream-480p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=3933600,RESOLUTION=1280x720,CODECS="avc1.64001f,mp4a.40.2"
livestream-720p.m3u8
Run Code Online (Sandbox Code Playgroud)
详细信息请阅读此处。