嗨,我正在处理动态HLS流,我已经创建了4种不同分辨率的播放列表,并将它们封装到一个主播放列表中,用于动态流,但是当我将其放入服务器并尝试播放视频时,对于IOS设备,以及桌面PC和Android设备,延迟时间甚至超过一分钟,超过30秒。
有什么办法可以减少延迟时间吗?
下面是我使用HLS使用FFmpeg编码视频的命令
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在这个问题上的任何帮助都将是非常感谢的,祝你今天愉快!
发布于 2017-09-22 00:01:53
您的GOP长度为250,而您的帧速率为30,这意味着您有超过8秒的每块。尽管就质量和效率而言,这是非常棒的,但它会导致延迟的增加。大多数客户在开始播放之前都需要几个片段。减少这些,你的延迟就会减少。
不过要小心,你会使一切变得不那么有效率。
如果您真的关心延迟,那么您不应该首先使用像HLS这样的分段协议。
https://stackoverflow.com/questions/46315535
复制相似问题