13

我对媒体流很陌生,我有一些基本的疑问需要解决:

  1. 据我所知,HTTP 流式传输(例如通过 Apache)和 RTMP 流式传输(通过 Red5)之间的区别在于流式传输服务器提供缓冲和高级控制,如搜索等。我说的对吗?

  2. 我可以只流式传输来自 Red5 等 RTMP 服务器的 Flash 视频吗?如果我必须流式传输不同格式的文件,我是否必须使用 HTTP 流式传输?我可以使用 xuggler 之类的工具来动态转码文件并根据 Red5 服务器的请求发送吗?

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

4

1 回答 1

21

让我有点冗长以清除细节。

1)什么是“流媒体”。通常在视频流的世界中是根据实时传送帧。如果您有 30 分钟的视频,它将在 30 分钟内交付给用户。

有专门用于流媒体的特殊协议:RTSP(也许是当今最古老的)、RTMP、MJPEG、基于 http 的协议系列(apple、abobe、microsoft)和其他一些封闭的供应商协议。

2)什么是“http-streaming”或“pseudo-streaming”。如果您只是将文件放在 HTTP 服务器上,用户可以下载并观看。如果他下载完整的视频,他甚至可以在其中搜索。但是如果用户想在没有下载第一部分的情况下寻找到影片的中间会发生什么?它应该以某种方式告诉服务器:打开文件容器,寻找这一刻并将文件打包回来。因此 HTTP 服务器必须了解文件容器的结构才能向客户端提供搜索功能。

nginx 和 apache 可以为 flv 和 mp4 容器做到这一点,这对于 100% 的视频来说是可以的,可以通过 Flash Player 播放。

3) 现在什么是 http-streaming 搞砸了。Apple、Adobe 和微软已经在 HTTP 之上设计并实现了流式传输。这意味着客户端下载 10 秒的片段,仍然保持适当的帧率。30 分钟的电影仍然在 30 分钟内下载,但分段下载之间存在很大延迟。可以以这种“格式”进行搜索,切换比特率等。

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

于 2011-06-03T15:43:32.163 回答