我试图从概念上理解交付真实流式音频和视频内容的最佳方式。我希望它可以通过网络浏览器使用,使用最少的专有技术。我不会提供静态文件并使用渐进式下载,这将是实时捕获的真实音频流。如何广播与源合理同步的流?什么样的协议(protocol)合适?
编辑:
在研究中,我发现有几种协议(protocol):RTSP、HTTP 流、RTMP 和 RTP。
HTTP 流式传输 如果您正在流式传输某种类型的现场表演/通信,则有点不合适,因为它依赖于 TCP(基于 HTTP)并且您不会丢失数据包。在低带宽情况下,客户端在播放时可能会明显落后。 ref
RTMP 是专有技术,需要闪存媒体服务器。废话。我关注 Flash 的原因是因为它们在用户体验方面非常灵活。 SoundManager2 为使用 flash 播放媒体提供了一个优秀的 javascript 接口(interface)。这就是我在客户端应用程序中寻找的内容。
RTSP/RTP 是 Microsoft 转而使用的,弃用了他们的 MMS 协议(protocol)。 RTSP 是控制协议(protocol)。它与 HTTP 类似,但有一些明显的区别——服务器也可以与客户端通信,并且还有其他命令,如 PAUSE。它也是一个有状态的协议(protocol),使用 session ID 进行维护。 RTP 是用于传送有效负载(编码的音频或视频)的协议(protocol)。有几个开源项目,其中一个得到了苹果的支持here .看起来这可能会做我想做的事,它看起来像 quite a few players support it .听起来它适合从这个页面进行“现场”广播here .
谢谢, 乔希
最佳答案
首先,让我快速剔除两个不正确的地方。详情如下:
- RTMP 可以在除 Flash Media Server 之外的其他服务器上完成
- TCP 适合直播。 F.U.D 太多了。来自那些喜欢 UDP 的人。 Apple has just released a draft specification通过 HTTP(以及 TCP)为 iPhone 进行简单的实时流式传输。我希望它最终也会出现在浏览器中。此外,TCP 还具有更频繁、更轻松地通过公司防火墙的优势。
据我所知,复杂的基于 UDP 的流式传输正在逐渐减少。我不是在预测死亡,只是市场份额越来越小。相对于基于 TCP 的解决方案(例如 10 倍或更多),基于 UDP 的流媒体服务器消耗大量资源,而且好处并不那么明显。
您说您不想要专有技术,“[Flash] 废话”,但您仍然想进行实时流式传输?不想把它告诉你,但两者都是RealAudio和 RealVideo都是专有的。
如果开源对您来说真的那么重要(我能理解),那么您需要忽略绝大多数流媒体市场。看看
如果实用主义占了上风,请重新考虑您对 Adobe 产品的厌恶。请记住,Flash 比任何其他基于浏览器的播放器(即 Windows Media Player、Quick Time 和 Real Players)分布更广泛。
您仍然可以通过开源使用 RTMP:Red5可能是最令人感兴趣的——它可以实时流式传输到支持 Flash 的浏览器。
我建议考虑您的优先事项。在您的问题中为我们拼出它们。
关于video - 基于浏览器的流媒体视频/音频(非渐进式下载),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1424946/