减少HLS延迟时间FFmpeg

时间:2017-09-20 07:15:33

标签: encoding ffmpeg video-streaming latency hls

您好我正在进行动态HLS流式传输我创建了4种不同分辨率的播放列表,并将它们整合到一个主播放列表中进行动态流式传输但是当我将其放入服务器并尝试流式传输视频时对于桌面PC和Android设备,IOS设备的使用时间甚至超过一分钟,超过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

对此问题的任何帮助都将非常感谢谢谢你们有一个美好的一天!

1 个答案:

答案 0 :(得分:2)

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

但要注意,你会降低效率。

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

相关问题