流媒体服务器的主要作用是什么?

What is the major role of Streaming Media Server?

我是数据直播的新手。我一直在网上探索如何直播视频。事实上,我是一名 iOS 开发人员,我想开发一个流式传输视频的应用程序。

我清楚视频直播的基本原理。我开始知道我需要一个 Streaming Media Server 来将流提供给查看器。我也开始知道查看器必须有一个播放器来解码数据并同步 audio/video 流。

现在,Wowza是一款值得推荐的流媒体服务器。但是,我有以下问题..

(1) 为什么选择媒体服务器?为什么我们不能拥有自己的媒体服务器?媒体服务器实际上做了什么使它的角色成为必要?

(2) 在我的应用程序中,我必须集成一个用于编码的库,并提供给像 Wowza 这样的流媒体服务器。但是,如何将其提供给流媒体服务器?

(3) 我的服务器将如何与像 Wowza 这样的流媒体服务器通信?

(4) Wowza 如何将流提供给接收方,即用户有 iPhone 并且需要观看直播。

(5)接收方应该是什么。什么将解码流并将流播放到 AVPlayer ?

伙计们,我需要开发一个质量更好的流媒体应用程序。所以,不如我先了解数据的流向再开始。

如果有人给出数据流的图形表示就太好了。

非常感谢!

让我快速补充一下我对你的问题的理解:

1a. Why Media Server? ..

您也可以编写自己的软件来将流数据分发给所有播放器。但在那种情况下,您将需要实施各种传输协议,并且最终会实施一个相当大的软件,即您自己开发的媒体服务器。

1b. What actually Media Server do to make its role necessary?

查看媒体服务器角色的一种方法是从流源接收实时流并处理将该流分发给可能 many-many 其他播放器。这通常涉及从源传输协议中取出数据并将其重新打包为客户喜欢的一种或多种其他容器格式或传输协议。可选地,媒体服务器可以更改视频或音频的编码方式(转码),或产生不同分辨率和质量的流,并以清单文件(例如 m3u8 或 smil 文件)的形式为播放器提供可用质量列表所以他们可以做所谓的自适应流媒体。

另一种典型的 use-case 媒体服务器是从磁盘向播放器提供 non-live 视频文件,以及录制实时流等。如果您查看流行媒体服务器的功能列表,您会发现它们确实在做很多事情,所以实际上这是您可能想要开箱即用而不是实现自己的东西。

  1. In my App, I will have to integrate a library for encoding and feed to a streaming server like Wowza. But, how it would be fed to the streaming server?

您需要使用特定的编解码器(例如 H.264 视频和 AAC 音频)对视频和音频进行编码,然后您需要选择合适的容器格式将这些流放入(例如 MPEG-TS) 然后选择传输协议将流推送到服务器(例如 RTMP)。最好是 google 教程,看看它在代码中的样子。

  1. How will my server communicate with a streaming server like Wowza?

合同基本上是传输协议,一个例子是使用RTMP协议连接到Wowza并向其发布流。这些协议涵盖了所有技术细节。

  1. How Wowza will feed to the stream to the receiving side i.e. the user having an iPhone and needs to see a live stream.

播放器软件将启动与Wowza 的通信。这同样取决于协议,但如果您使用的是 HLS,播放器将使用 HTTP 协议找出 URL 它将逐步下载并显示给用户的后续视频块。

  1. What should be at the receiving side. What will decode the stream and will play the stream to AVPlayer ?

不清楚您正在开发的应用是主播端还是播放器端。但通常在播放器端,您需要找到一个能够使用您正在使用的 protocol/transport/codec 从媒体服务器中提取流的库。我在iOS中对这部分不熟悉,我只对网站嵌入的播放器有经验。

我不打算画这个,但想象一下用箭头连接的 3 个框,这就是数据流。从编码器到流媒体服务器,最后到播放器。我猜就是这样.. :-)