【问题标题】:RTMP vs RTSP/RTP: Which to choose for an interactive livestream?RTMP vs RTSP/RTP:交互式直播选择哪个?
【发布时间】:2018-01-13 22:38:31
【问题描述】:

如果您尝试开发交互式直播应用程序,您需要依赖超低(实时)延迟。例如用于视频会议或远程实验室。

适用于这种情况的两种协议是:

  • RTSP,同时通过 RTP 传输数据
  • RTMP

*WebRTC:当我试图让更多的观众有机会相互交流时,WebRTC 并不适合。因为据我所知,它并不是为更大的受众而设计的。

我的问题:

  1. 我应该为这个用例选择哪一个? RTSP/RTP 还是 RTMP?

  2. 哪种协议在端到端延迟、会话启动时间方面提供更好的结果?

  3. 哪个消耗更多的硬件资源?

  4. RTMP 似乎使用持久 TCP 连接。但是使用哪种协议进行传输?不能是 TCP,因为这样不能保证实时延迟?

  5. 使用这两种协议的一般优缺点是什么?

我没有在科学论文或书籍中找到这两种协议的任何比较。只是著名的移动直播应用 Periscope 使用的是 RTMP。

Instagram 或 Facebook 等其他应用程序例如提供与流媒体的基于文本的交互。 如果开发者想基于交互式直播构建下一个“杀手级应用”:我认为这个问题是必须回答的。

【问题讨论】:

    标签: streaming rtsp rtmp rtp live-streaming


    【解决方案1】:

    你在回答中做了很多假设。

    WebRTC:因为我试图让更多的观众有机会相互交流,所以 WebRTC 并不适合。因为据我所知,它并不是为更大的受众而设计的。

    这根本不是真的。 WebRTC 不知道也不关心您如何在服务器端构建应用程序。有大量现成的服务可用于通过 WebRTC 处理大型群组通话和低延迟视频分发。

    您还应该知道,对于媒体流,WebRTC 本质上是 RTP。

    不可能是TCP,因为这样不能保证实时延迟?

    当然可以。 TCP 有一些开销,但没有什么可以阻止您在实时场景中使用它。 TCP 的开销很小。

    UDP 传统上用于这类场景,因为不需要可靠性,但这并不意味着 TCP 几乎不能以高性能使用。

    RTMP

    RTMP 是 Fl​​ash 的死协议。没有浏览器支持它。其他客户端仅出于遗留原因支持它。您不应该将它用于未来的任何新事物。

    只有著名的移动直播应用 Periscope 使用的是 RTMP。

    好吧,这不是做很多事情的理由。

    1. 哪种协议可以在端到端延迟、会话启动时间方面提供更好的结果?

    WebRTC

    1. 哪个消耗更多的硬件资源?

    这不是正确的问题。您在应用程序的几乎任何其他部分的开销都将远远超过用于分发的协议的传输开销。

    你需要考虑的事情的真实清单:

    • 客户端兼容性。您必须支持什么样的客户?
    • 真的需要无处不在的低延迟吗?你了解你对这种需求所做的权衡吗?如果只有少数用户具有交互性,您是否愿意破坏所有用户对视频质量和可靠性的感觉?
    • 您的预算是多少?现成的分销解决方案要便宜得多。如果您可以为非交互式用户将流推送到 YouTube,您可以为自己节省大量资金。如果您无法使用现有基础设施,请准备好花费大量现金。
    • 您的实际延迟要求是什么?当在更糟糕的网络和移动设备上无法满足这些延迟要求时,您是否准备减少可以使用您的应用的人数?
    • 您的质量要求是什么?
    • 您将在哪里将视频转码为各种比特率?
    • 您的观众需要自适应比特率观看吗?
    • 您需要同时将流推送到其他平台吗?
    • 您是否需要录制流媒体以供点播观看或及时返回?

    您可能还会发现我在这里的帖子很有帮助:https://stackoverflow.com/a/37475943/362536

    简而言之,检查您的假设。了解权衡。根据真实信息做出决策,而不是一概而论。

    【讨论】:

    • 谢谢布拉德!两点:(1)关于TCP:在视频会议中,端到端传输音频的延迟应该在400ms以下。当丢失的数据包到达时很可能已经过时,TCP 如何在此处重新传输丢失的数据包? (2) 关于WebRTC:WebRTC 是一种P2P-Protocol,客户端直接相互通信。服务器仅用于所需的连接建立。因此,它无法针对大量受众进行扩展,除非我认为您指出的是:强大的服务器是通信的一部分?
    • Make decisions based on real information, not sweeping generalizations. 带着这个问题,我正在寻找真实的信息,比如在相同条件下比较两种协议的基准测试结果。因此,您只需通过绝对数字比较延迟等方面的性能。您的回答很详细,但不幸的是,它也没有包含“真实信息”。
    • 严格来说,WebRTC 不一定是 P2P。服务器可以是(并且经常是)这些“对等方”之一。关于 TCP 重传,当然,它们可能需要一些时间,但首先您需要真正弄清楚“低延迟”对您意味着什么,以及您愿意做出哪些权衡来获得它。几乎从未如此重要,以至于您愿意做出巨大的质量和可靠性牺牲。大多数人会在几秒钟的延迟中找到平衡。我想告诉你的是你问错了问题。
    • 哪个更快:最高时速为 120 MPH 的汽车,或最高时速为 115 MPH 的汽车?也不行,因为你堵车了。应该改坐火车。当您专注于比较两种不同的协议时,您的其他情况更为重要。我们甚至没有进入编解码器及其参数,这将改变那些延迟计算 10 倍于您的传输协议的重要性。为其功能选择传输协议。
    • TCP 是无损的。所以重新传输丢失的数据包是没有意义的,因为只要连接保持,你就不会丢失数据包
    猜你喜欢
    • 2019-02-11
    • 1970-01-01
    • 2015-12-30
    • 1970-01-01
    • 2013-12-20
    • 1970-01-01
    • 2013-09-01
    • 2019-06-09
    • 2018-08-08
    相关资源
    最近更新 更多