【问题标题】:How to make low latency and have good quality for hls live streaming如何为 hls 直播实现低延迟和高质量
【发布时间】:2017-09-01 00:30:52
【问题描述】:

我使用此代码从 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)一样。
我该如何减少此延迟并为此减少内存使用量

【问题讨论】:

  • HLS 实时方法不是一个好的解决方案。在我的测试中,每次至少延迟 5 秒。
  • @Hokusai,你能告诉我你的推荐吗?
  • 您可以通过使用tee muxer 对所有输出的音频只编码一次而不是对同一流单独编码七次来提高编码效率。

标签: ffmpeg live-streaming http-live-streaming


【解决方案1】:

如何让 hls 直播的延迟低,质量好

你不能。

HLS 本质上是分段的……而且分段相对较大。您尝试减少的次数越多,开销就越极端。即便如此,不到 7 或 8 秒也是非常困难的。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-23
    • 2015-06-28
    • 2020-12-23
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多