如何为 hls 直播提供低延迟和高质量

How to make low latency and have good quality for hls live streaming

我使用此代码从 mp4 文件创建实时流:

ffmpeg -re -i input.mp4 
-c:a aac -c:v libx264 -s uhd2160 -f hls -hls_list_size 0 2160p/out.m3u8  
-c:a aac -c:v libx264 -s 2560x1440 -f hls -hls_list_size 0 1440p/out.m3u8  
-c:a aac -c:v libx264 -s hd1080 -f hls -hls_list_size 0 1080p/out.m3u8  
-c:a aac -c:v libx264 -s hd720 -f hls -hls_list_size 0 720p/out.m3u8  
-c:a aac -c:v libx264 -s hd480 -f hls -hls_list_size 0 480p/out.m3u8  
-c:a aac -c:v libx264 -s nhd  -f hls -hls_list_size 0 360p/out.m3u8 
-c:a aac -c:v libx264 -s cga  -f hls -hls_list_size 0 200p/out.m3u8

但是在流式传输的时候,有很大的延迟。
看来,这种延迟存在于质量非常高的流媒体视频中,就像我用于直播的视频(4k)一样。
我如何才能减少此延迟减少内存使用

How to make low latency and have good quality for hls live streaming

你不能。

HLS 就其本质而言是分段的……而且分段相对较大。您尝试减少的次数越多,您的开销就会变得越极端。即便如此,要控制在 7 或 8 秒以内也是非常困难的。

您可以切换到面向低延迟的技术,例如 WebRTC,但需要权衡质量。在低延迟的情况下,编解码器以这样一种方式进行优化,即它们有利于延迟而不是质量……质量会受到影响。我不知道 "good quality" 对你来说是什么,但你必须决定在你的申请中什么对你真正重要。

没有什么神奇的视频技术可以提供低延迟、出色的质量、高兼容性和易于缩放。那样根本行不通。放弃这个,考虑什么对你真正重要,为你的场景选择正确的权衡,如果你需要帮助考虑正确的技术,请提出一个新问题。