基于浏览器的流媒体视频/音频(非渐进式下载)

5
我试图理解最佳的交付实时流音频和视频内容的概念。我希望它能在Web浏览器中使用,尽量少使用专有技术。我不会提供静态文件并使用渐进式下载,这将是实时捕获的真正音频流。如何广播与源相当同步的流?哪种协议适合?
编辑:
我发现有几种协议:RTSP、HTTP流、RTMP和RTP。
HTTP流对于流式传输某种类型的实时表演/通信而言有些不适用,因为它依赖于TCP(基于HTTP),且不会丢失数据包。在低带宽情况下,客户端可能会在播放中明显落后。ref RTMP是一种专有技术,需要Flash媒体服务器。不要使用它。我看flash是因为它们在用户体验方面非常灵活。SoundManager2提供了一个极好的javascript接口,用于使用flash播放媒体。这是我在客户端应用程序中寻找的东西。 RTSP/RTP是微软废弃了他们的MMS协议后转而使用的控制协议。RTSP类似于HTTP,但有一些明显的区别——服务器也可以与客户端交互,并且有额外的命令,例如PAUSE。它还是一种有状态的协议,通过会话ID进行维护。RTP是传递负载的协议(编码音频或视频)。有几个开源项目之一由苹果支持这里。看起来这可能是我想要的,并且相当多的播放器都支持它。听起来它很适合从这里的页面进行“实时”广播。
2个回答

6

首先,让我快速澄清两个错误点。详情请见下文:

  • RTMP可以在除了Flash Media Server之外的其他服务器上实现。
  • TCP对于直播来说是可以的。有太多UDP爱好者传播恐惧。苹果刚刚发布了一份简单的、基于HTTP(因此基于TCP)的直播流草案规范(链接),适用于iPhone,并且我希望它最终也会出现在浏览器中。此外,TCP还有一个额外的好处,就是更容易穿过企业防火墙。

我的理解是,基于复杂的UDP的流媒体正在逐渐减少。我并不预测它的死亡,只是市场份额越来越小。相对于基于TCP的解决方案,基于UDP的流媒体服务器消耗的资源巨大(可能是10倍或更多),而好处却并不那么明显。

你说你不想使用专有技术,还“垃圾 [Flash]”,但你仍然想要进行 Real 流媒体? 很遗憾,RealAudioRealVideo 都是专有的。

如果开源确实对你很重要,我可以理解,那么你需要忽略绝大部分的流媒体市场。看看以下内容:

  • Theora:免版税、开放标准、有损视频压缩技术
  • Vorbis:为有损音频压缩提供格式规范和软件实现的自由软件/开源项目。
  • Ogg:一种自由、开放的标准容器格式
如果实用主义占了你的上风,那么请重新考虑你对Adobe产品的厌恶。记住,Flash比任何其他基于浏览器的播放器(即Windows Media Player、Quick Time和Real Players)都更广泛地分布。
你仍然可以使用开源的RTMP:Red5可能是最有趣的选择——它可以向支持Flash的浏览器实时流式传输。
我建议您考虑一下自己的优先事项。请在问题中明确说明它们。

0
我想补充一下Stu的回答,基于UDP的流媒体协议在防火墙或NAT后面工作时通常会有额外的复杂性。例如,如果你计划在家庭外使用WIFI接入点,很多这样的接入点不支持使用UDP传递的RTP。许多客户端都有一个回退机制,如果在超时之前没有接收到任何数据包,客户端将尝试使用TCP传递。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接