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

Joe*_*oey 10 streaming rtmp rtp rtsp live-streaming

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

适合这种情况的两种协议是:

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

*WebRTC:由于我试图为更大的受众提供互相交流的可能性,因此WebRTC并不合适.因为据我所知,它不是为更多的观众设计的.

我的问题:

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

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

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

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

  5. 一般来说,使用这两种协议的利弊是什么?

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

Instagram或Facebook等其他应用程序例如提供与流媒体的基于文本的交互.如果开发人员想要构建基于交互式直播流的下一个"杀手级应用程序":我认为这个问题是必不可少的.

Bra*_*rad 18

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

WebRTC:由于我试图让更多的观众互相交流,因此WebRTC不适合.因为据我所知,它不是为更多的观众设计的.

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

您还应该知道,对于媒体流,WebRTC是RTP的底层.

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

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

UDP传统上用于这些类型的场景,因为不需要可靠性,但这并不意味着TCP几乎不能像使用的那样使用.

RTMP

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

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

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

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

的WebRTC

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

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

您需要考虑的真实事项列表:

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

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

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

  • “基于真实信息做出决策,而不是一概而论。”带着这个问题,我正在寻找真实信息,例如在相同条件下比较两种协议的基准测试结果。因此,您只需通过绝对数字比较有关延迟等的性能。您的答案很详细,但不幸的是它也没有包含“真实信息”。 (2认同)
  • 严格来说,WebRTC 不一定是 P2P。服务器可以是(并且经常是)这些“对等方”之一。关于 TCP 重传,当然,它们可能需要一些时间,但首先您需要真正弄清楚“低延迟”对您意味着什么,以及您愿意为获得它而进行的权衡。几乎从来没有如此重要,以至于您愿意做出巨大的质量和可靠性牺牲。大多数人在几秒钟的延迟上找到了平衡。我想告诉你的是你问错了问题。 (2认同)
  • 哪个更快:最高速度为120MPH的汽车,还是最高速度为115英里/小时的汽车?也不是,因为你在交通堵塞.应该乘坐火车.虽然您专注于比较两种不同的协议,但其余的情况更为重要.我们甚至没有进入编解码器和它们的参数,这将改变那些延迟计算比传输协议更重要10倍.为其功能选择传输协议. (2认同)