我是数据直播的新手。我一直在网上探索如何直播视频。实际上我是iOS开发人员,我想开发一个流视频的应用程序。
我很清楚直播视频流的基本原理。我开始知道我需要一个流媒体服务器,它将流提供给观众。我也知道观众必须有一个播放器来解码数据并同步音频/视频流。
现在,Wowza是一种推荐的流媒体服务器。但是,我有以下问题......
(1)为何选择媒体服务器?为什么我们不能拥有自己的媒体服务器?媒体服务器实际上做了什么使其角色成为必要?
(2)在我的应用程序中,我必须集成一个库,用于编码和提供给像Wowza这样的流媒体服务器。但是,它将如何被馈送到流媒体服务器?
(3)我的服务器如何与Wowza等流媒体服务器通信?
(4) Wowza如何将流提供给接收方,即拥有iPhone且需要查看直播的用户。
(5)接收方应该是什么。什么将解码流并将流播放到AVPlayer
?
伙计们,我需要开发一个质量更好的流媒体应用程序。所以,我最好先了解数据流然后再开始。
如果有人提供数据流的图形表示,那就太棒了。
非常感谢!
答案 0 :(得分:2)
让我快速将您的理解添加到您的问题中:
1a上。为何选择Media Server? ..
您可以编写自己的软件,以便将流数据分发给所有玩家。但在这种情况下,您需要实现各种传输协议,最终您将实现一个相当大的软件,即您自己开发的媒体服务器。
1b中。媒体服务器实际上需要做什么才能发挥其作用?
查看媒体服务器角色的一种方法是从流源接收直播流并处理此流的分发给许多其他玩家。这通常涉及从源传输协议中取出数据并将其重新打包为客户喜欢的一种或多种其他容器格式或传输协议。可选地,媒体服务器可以改变视频或音频的编码方式(转码),或者产生不同的分辨率和质量流,并以清单文件的形式向玩家提供可用质量列表(例如m3u8或smil文件)所以他们可以这样称为自适应流媒体。
媒体服务器的另一个典型用例是从磁盘向播放器提供非实时视频文件,以及录制实时流等。如果你看一下流行媒体服务器的功能列表,你会发现它们确实做了很多事情,所以实际上你可能想要开箱即用,而不是实现自己的。
- 在我的应用程序中,我将必须集成一个库以进行编码并将其提供给像Wowza这样的流媒体服务器。但是,它将如何被喂给 流媒体服务器?
醇>
您需要使用特定的编解码器(例如用于视频的H.264和用于音频的AAC)对视频和音频进行编码,然后您需要选择合适的容器格式来将这些流放入(例如MPEG-TS)和然后选择传输协议将流推送到服务器(例如RTMP)。如果你谷歌的教程,看看它在代码中的样子,那是最好的。
- 我的服务器如何与Wowza等流媒体服务器通信?
醇>
合同基本上是传输协议,一个例子是使用RTMP协议连接到Wowza并将流发布到它。这些协议涵盖了所有技术细节。
- Wowza如何将流提供给接收方,即拥有iPhone的用户需要看到直播。
醇>
播放器软件将启动与Wowza的通信。这又是依赖于协议的,但是如果你使用HLS,播放器将使用HTTP协议找出它将逐步下载并显示给用户的连续视频块的URL。
- 接收方应该做什么。什么会解码流并将流播放到AVPlayer?
醇>
目前尚不清楚您正在开发的应用是播放器端还是播放器端。但通常在播放器方面,您需要找到一个能够使用您正在使用的协议/传输/编解码器从媒体服务器中提取流的库。我不熟悉iOS中的这个部分,我只对嵌入网站的玩家有经验。
我不会画这个,但想象3个用箭头连接的盒子,这就是数据流。从编码器到流媒体服务器,最后到播放器。就是我猜...: - )