encoding - 减少HLS延迟时间FFmpeg

标签 encoding ffmpeg video-streaming latency http-live-streaming

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

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

这是我使用 FFmpegHLS 编码视频的命令

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,这意味着每个 block 有超过 8 秒的时间。虽然就质量和效率而言这非常棒,但它会导致延迟增加。大多数客户在开始播放之前都需要几个片段。减少这些,您的延迟就会降低。

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

如果您确实关心延迟,那么一开始就不应该使用 HLS 这样的分段协议(protocol)。

关于encoding - 减少HLS延迟时间FFmpeg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46315535/

相关文章:

html - Node.js 请求 - 无法解码 HTML 页面

c# - 如何获取上传视频的第一帧

转换 flv1 (flv) -> h264 (libx264) 时出现 FFMPEG 错误

node.js - EasyRTC 下载对话

NGINX open() 失败 (20 : Not a directory) hls vod with secure link module

Ruby:ARGV 打破重音字符

php - 将 HTML 实体放入 MySQL 数据库时对其进行解码

ffmpeg - 如何使用 ffmpeg 流式传输到磁盘碎片 MP4?

php - 无法在 ajax 调用中发布绝对文件路径 - 无论我做什么它都会删除反斜杠

java - 使用 Xuggler 时提高 Theora 的视觉质量