RTMP与RTSP / RTP:选择哪种交互式直播流?

时间:2017-08-06 14:38:58

标签: streaming rtsp rtmp rtp live-streaming

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

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

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

* WebRTC:由于我试图让更多的受众互相交流的可能性,因此WebRTC并不合适。因为据我所知,它不适合更多的观众。

我的问题:

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

  2. 哪种协议可以提供有关端到端延迟,会话启动时间的更好结果?

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

  4. RTMP似乎使用持久性TCP连接。但是哪种协议用于传输?它不能是TCP,因为这无法确保实时延迟?

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

  6. 我没有在科学论文或书籍中找到这两种方案的任何比较。只有着名的移动直播应用Periscope正在使用RTMP。

    其他应用程序(如Instagram或Facebook)例如提供与流媒体的基于文本的交互。 如果开发人员希望基于交互式直播流构建下一个“杀手级应用程序”:我认为这个问题至关重要。

1 个答案:

答案 0 :(得分:14)

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

  WebRTC:由于我试图让更大的受众群体互相交流,因此WebRTC并不合适。因为据我所知,它不适合更多的观众。

这根本不是真的。 WebRTC不了解或关心如何构建服务器端的应用程序。有很多现成的服务可以通过WebRTC处理大型群组通话和低延迟视频分发。

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

  

它不能是TCP,因为这无法确保实时延迟?

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

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

  

RTMP

RTMP是Flash的死协议。没有浏览器支持它。其他客户仅出于遗留原因支持它。你不应该用它来做任何新的事情。

  

只有着名的移动直播应用Periscope正在使用RTMP。

嗯,这不是做任何事情的理由。

  
      
  1. 哪种协议可以提供有关端到端延迟,会话启动时间的更好结果?
  2.   

的WebRTC

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

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

您需要考虑的真实事项清单:

  • 客户端兼容性。你必须支持哪种类型的客户?
  • 真的到处都需要低延迟吗?你了解你在这个需求下做出的权衡吗?您是否愿意为所有用户摧毁任何视频质量和可靠性,只要其中只有少数人能够互动?
  • 您的预算是多少?现成的分销解决方案要便宜得多。如果您可以为非交互式用户推送自己的视频流,那么您可以节省大量资金。如果您无法使用现有的基础设施,请准备好花大量现金。
  • 您的实际延迟要求是什么?当您在更糟糕的网络和移动设备上无法满足这些延迟要求时,您是否准备减少可以使用您的应用程序的人数?
  • 您的质量要求是什么?
  • 您将在哪里将视频转码为各种比特率?
  • 你的观众是否需要自适应比特率观看?
  • 您是否需要同时将流推送到其他平台?
  • 您是否需要录制流媒体以进行按需观看或回溯?

您也可以在此处找到有用的帖子:https://stackoverflow.com/a/37475943/362536

简而言之,请检查您的假设。理解权衡。根据真实信息做出决策,而不是全面推广。