媒体流传输基础 - HTTP vs RTMP

13

我对媒体流传输非常陌生,有一些基本问题需要澄清:

  1. 据我了解,HTTP流媒体(比如通过Apache)和RTMP流媒体(通过Red5)之间的区别是流媒体服务器提供缓冲和高级控制,如跳转等。我理解得对吗?

  2. 我能否仅从RTMP服务器(如Red5)流式播放flash视频?如果我必须流多种格式的文件,是否需要使用HTTP流媒体?我能否使用诸如xuggler之类的工具动态转码文件,并根据Red5服务器的请求发送相应流?

我提出所有这些问题是因为我必须为所有移动客户端提供流媒体 - iPhone、Blackberry、Android - iPhone不支持flash,所以选择Red5是否是一个好主意?

1个回答

21

让我详细解释一下。

1)什么是“流媒体”。在视频流领域,流媒体通常指按照实时传递帧,如果您有30分钟的视频,则会在30分钟内向用户提供。

有些专门用于流媒体的协议:RTSP(可能是今天存活最古老的协议),RTMP,MJPEG,基于http的协议系列(apple、abobe、microsoft)以及其他一些封闭供应商协议。

2)什么是“HTTP流媒体”或“伪流媒体”。如果您只是把文件放在HTTP服务器上,用户可以下载并观看。如果他下载完整的视频,则甚至可以在其中查找。但是如果用户想要在没有下载第一部分的情况下跳转到电影的中间怎么办?它应该告诉服务器:打开文件容器,跳转到这个时刻并重新打包文件。因此,HTTP服务器必须了解文件容器的结构,才能向客户端提供搜索功能。

nginx和apache可以为flv和mp4容器执行此操作,这对于100%可以通过Flash Player播放的视频来说是可以的。

3)现在的HTTP流媒体混乱了什么。苹果、Adobe和Microsoft已经设计并实现了基于HTTP的流媒体。这意味着客户端下载10秒的片段,仍然保持适当的帧速率。30分钟的电影仍然在30分钟内下载,但是片段下载之间存在较大的延迟。可以在这种“格式”中搜索,切换比特率等。

4)RTMP流媒体服务器(如Red5或erlyvideo)可以流式传输H.264、H.263、VP6和屏幕视频。不支持MPEG-4(Xvid/DivX)或MPEG-2。


这里有一篇关于HLS和HTTP渐进式下载之间的清晰详细解释:http://www.streamingmedia.com/Articles/Editorial/Featured-Articles/HTTP-Streaming-What-You-Need-to-Know-65749.aspx - Buzut
我认为最重要的区别是HTTP流是从服务器拉取的,而RTMP流是推送到客户端的。 - Viktor Joras

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