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

标签 video streaming video-streaming audio-streaming rtsp

我试图从概念上理解交付真实流式音频和视频内容的最佳方式。我希望它可以通过网络浏览器使用,使用最少的专有技术。我不会提供静态文件并使用渐进式下载,这将是实时捕获的真实音频流。如何广播与源合理同步的流?什么样的协议(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] 废话”,但您仍然想进行实时流式传输?不想把它告诉你,但两者都是RealAudioRealVideo都是专有的。

如果开源对您来说真的那么重要(我能理解),那么您需要忽略绝大多数流媒体市场。看看

  • Theora : 免版税、开放标准、有损视频压缩技术
  • Vorbis :一个免费软件/开源项目,可生成用于有损音频压缩的音频 格式规范和软件实现。
  • Ogg : 一种免费、开放的标准容器格式

如果实用主义占了上风,请重新考虑您对 Adob​​e 产品的厌恶。请记住,Flash 比任何其他基于浏览器的播放器(即 Windows Media Player、Quick Time 和 Real Players)分布更广泛。

您仍然可以通过开源使用 RTMP:Red5可能是最令人感兴趣的——它可以实时流式传输到支持 Flash 的浏览器。

我建议考虑您的优先事项。在您的问题中为我们拼出它们。

关于video - 基于浏览器的流媒体视频/音频(非渐进式下载),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1424946/

相关文章:

video - MPEG 视频编码中 B 帧的计算

cocoa-touch - 合并音频和视频/图像以创建电影文件

linux - minidlna 不喜欢硬链接(hard link)

audio - 如何在 Ffmpeg 中将音频速度设置为 0.3?

android - SHOUTcast广播流媒体不适用于Kitkat

java - 在回收站 View 中显示视频

java - Spring MVC + Oracle LOB + 流式处理

html - vlc mp4 流到 html5 播放器

video - FFMPEG-无法为输出文件 #0 写入 header (编解码器参数不正确?): Operation not permitted Error initializing output stream 0:2 --

linux - Motion 3.2.12是否支持RTSP MJPEG