Laravel项目+媒体服务器,用于部署在Docker上的直播和vodstream

经过几个小时的研究,没有什么相关的,我决定问。

我对videostream的概念相当陌生,所以如果我的问题看起来很简单,请原谅我。

我正在构build一个需要包含媒体streamfunction的项目。 它应该有以下select:

  1. video点播 – 用户上传文件到服务器,需要转换成不同分辨率的MP4文件。 对于转码,我正在尝试使用部署为Docker镜像的CloudTranscode( https://github.com/bfansports/CloudTranscode )的方法。 服务器应该提供具有一定缓冲区大小的播放器,所以当播放暂停时,我们caching例如+5秒,就是这样。 自适应比特率会很好,但我不知道这是如何与不同的玩家(我想使用Video.JS由于高定制选项,再加上它是免费的)。
  2. 实时video捕捉 – 用户访问某个页面,捕捉来自networking摄像头的video,并将该stream发送到服务器,以进一步将stream发送到客户端。 对于大多数浏览器WebRTC可能是一个不错的select,但iOS设备可能不会使用它,所以这里的任何build议将不胜感激
  3. 实时videostream – 用户访问某个页面,在那里他们可以观看从第2点提到的用户捕获的stream。在这里,stream可能被一个或多个用户观看(也可能是1或10,000个用户)

切入我的问题追随如下:

  1. 考虑到高度可扩展性(在AWS EC2上部署为Docker容器),以及stream式处理和观看式用户以及多设备/平台的可能巨大负载, 什么是最适合此目的的媒体服务器软件 /浏览器支持?
  2. 什么是最好的网页媒体播放器 (再次)将是跨浏览器/平台/设备,牢记与媒体服务器本身的良好整合的目的是自适应分辨率stream? 如果玩家在出现问题时有广泛的自定义选项(例如hover时间线时的缩略图显示),那也是很好的。
  3. 你知道任何更好的video转码解决scheme,比提到的CloudTranscode ,考虑到Docker设置,以及一些易于使用的API(这里一些实时转码会很好,所以工作人员不需要等待整个file upload)?
  4. 如果我在EC2实例上使用自动调节function,会发生什么情况,并且媒体服务器的更多实例正在自动启动? 假设我们有实例1(I1)和实例2(I2)。 一些用户开始在I1上进行广播,并且有1000个用户正在观看作为服务器实例的限制的stream,因为资源不足。 接下来,另外两个用户正在尝试查看stream,因此他们正在通过AWS负载平衡器连接到I2 – 这对于直播stream是如何工作的? 对不起,我对这个概念是全新的,所以再次 – 原谅我的基本问题。

到目前为止,能够find一些可能与我的需求相关的媒体服务器,包括:

  • Wowza媒体服务器(付费)
  • Red5媒体服务器(免费)
  • Kurento媒体服务器(免费)

我的应用程序是在Laravel编写的,我需要一些PHP与媒体服务器的集成。

显然,免费的解决scheme是最受欢迎的,但是只要付费解决scheme满足我的需求,我并不介意付费。

这里的任何input都会非常简单 – 甚至是部分解决scheme/build议。 我有点卡在这里,所以任何可以使我更接近解决scheme的build议是非常受欢迎的!

最好的祝福

如果有人需要这样的信息,我最终使用Nginx Plus媒体服务器function。 它能够同时为现场和VODstream提供服务,它具有开箱即用的负载均衡器,可以在多个容器实例之间切换stream量,还可以使用更多强大的function。 另外,他们还有图像可以直接从AWS Marketplace部署,并且在EC2实例运行时每小时支付许可证费用。 当然也有免费的版本,但是我对Nginx Plus支持非常满意。

从用户捕获直播stream我已经在JS中使用getUserMedia() 。 仍然有轻微的故障,但我会得到它的工作(问题是与MediaRecorder API吐出的WebM块,但我差不多在这里完成使用一些Python代码块修改服务器端的每个块)。

如果有人需要帮助,我会很乐意帮忙。