减少 HLS 延迟时间 FFmpeg

Reducing HLS latency time FFmpeg

你好,我正在研究动态 HLS 流媒体 我已经创建了 4 种不同分辨率的播放列表并将它们打包到一个用于动态流媒体的主播放列表但是当我将其放入服务器并尝试流媒体视频时IOS 设备的延迟时间非常长,甚至超过一分钟,台式 PC 和 Android 设备的延迟时间超过 30 秒

有什么办法可以减少延迟时间。

这是我使用 FFmpeg

HLS 编码视频的命令
ffmpeg -i /var/www/html/file_conversion/io_legend.mp4 \
-profile:v baseline -level 3.0 -s 428x240 -aspect 1.77916 -c:v libx264 -b:v 440k -g 250 -framerate 30 -c:a libfdk_aac -b:a 320k -hls_list_size 0 -start_number 0 -hls_init_time 2 -hls_time 8  -f hls /var/www/html/file_conversion/legend_hls/legend_240.m3u8 \
-profile:v baseline -level 3.1 -s 640x360 -aspect 1.77916 -c:v libx264 -b:v 600k -g 250 -framerate 30 -c:a libfdk_aac -b:a 320k -hls_list_size 0 -start_number 0 -hls_init_time 2 -hls_time 8  -f hls /var/www/html/file_conversion/legend_hls/legend_360.m3u8 \
-profile:v baseline -level 3.1 -s 854x480 -aspect 1.77916 -c:v libx264 -b:v 700k -g 250 -framerate 30 -c:a libfdk_aac -b:a 320k -hls_list_size 0 -start_number 0 -hls_init_time 2 -hls_time 8  -f hls /var/www/html/file_conversion/legend_hls/legend_480.m3u8 \
-profile:v baseline -level 4.0 -s 1280x720 -aspect 1.77916 -c:v libx264 -b:v 880k -g 250 -framerate 30 -c:a libfdk_aac -b:a 320k -hls_list_size 0 -start_number 0 -hls_init_time 2 -hls_time 8  -f hls /var/www/html/file_conversion/legend_hls/legend_720.m3u8

这是我的动态自适应流媒体主播放列表

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1755600,RESOLUTION=428x240
legend_240.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2855600,RESOLUTION=640x360
legend_360.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=5605600,RESOLUTION=854x480
legend_480.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=7305600,RESOLUTION=1280x720
legend_720.m3u8

任何有关此问题的帮助将不胜感激 谢谢祝你有美好的一天!

您的 GOP 长度为 250,帧速率为 30,这意味着每个块的时间超过 8 秒。虽然就质量和效率而言这非常棒,但它会导致延迟增加。大多数客户在开始播放之前都需要几个片段。减少这些,你的延迟就会下降。

但请注意,您会降低一切效率。

如果您真的关心延迟,您不应该一开始就使用像 HLS 这样的分段协议。