让我有点冗长以清除细节。
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。