我正在使用下面的sdk进行视频直播。
https://github.com/ant-media/LiveVideoBroadcaster
服务器基于rtmp。我们将视频直播流发送到RTMP服务器,然后在AMS(Adobe Media Server)播放器上播放视频。
目前我们的延迟值大于30秒。我们如何减少这种延迟。我们想要达到200毫秒。是否可以使用上面的sdk执行此操作。
如果没有请建议任何其他能够提供具有超低延迟值的实时视频流的Android原生sdk。
任何帮助表示感谢。
感谢。
答案 0 :(得分:1)
延迟是由您选择基于TCP的RTMP和中间的缓存服务器引起的。为了获得更好的结果,请切换到基于UDP的WebRTC。如果您有一个或几个玩家,您可以直接向他们流式传输更好的服务。
如果您有许多订阅者和/或复杂的订阅策略,则需要中继服务器。但即便如此,最好的策略是通过WebRTC将视频发送到可以在必要时将其转换为RTMP的服务器。了解WOWZA和flashphoner如何解决这个问题。
我使用这些参考资料来学习这门课程:
答案 1 :(得分:0)
尝试使用zeronoe ffmpeg for windows
打开命令提示符
并在你的ffmpeg bin文件夹中发出此命令
ffplay.exe --fflags nobuffer rtmp:// yourmediaserver / app / stream_name
答案 2 :(得分:0)
尝试将关键帧间隔设置为1,通常为10。 还将“段持续时间”设置为1,默认值为3
答案 3 :(得分:0)
30秒的延迟非常大,可能与某些缓冲设置或转码有关。
RTMP延迟通常可以与客户端和流服务器之间的网络延迟相比。如果您通过在2个浏览器/标签页中打开同一个房间来测试https://www.videowhisper.com/demos/conference/,则延迟应小于1秒。
由于特定的协议优化,WebRTC的事件处理速度更快。 您可以使用本教程https://broadcastlivevideo.com/broadcast-html5-webrtc-to-mobile-hls/中的解决方案进行测试。教程谈到了HLS转码和传送(这会增加额外的延迟),但是从WebRTC到WebRTC的播放速度很快,并且如果您使用的是Chrome,Firefox等浏览器,则很可能会自动运行。
答案:建议是使用可用于任何HTML5设备的WebRTC。 另一个建议是使用Wowza SE作为中继服务器以提高可靠性(移动网络可能会导致终端之间直接Webrtc连接出现问题)https://www.wowza.com/low-latency/webrtc-streaming-software。您可以从实现WebRTC流式传输的现有平台/教程开始。
答案 4 :(得分:-1)
您是否审查了AMS WebRTC库?您还应该查看Ant Media Server。 Ant Media Server超低延迟WebRTC解决方案很棒。
Ant Media Server能够通过WebRTC技术实现超低延迟的流传输,其典型值为0.5秒。可以通过云上的可伸缩群集基础结构将任何类型的实时流交付给广泛的客户端。提供Android,iOS和JavaScript SDK。
Ant Media Server Github页面:https://github.com/ant-media/Ant-Media-Server
Ant Media Server Google网上论坛:https://groups.google.com/forum/m/#!forum/ant-media-server
也请查看网站:https://antmedia.io