构建面向教育目的的开源OTT视频系统

2020-05-06 06:08:31

从“零开始”创建软件一开始可能不是一个好主意,但它通常是学习特定技术甚至加深您在特定计算机科学领域的知识的一个很好的方法。

在这个三篇文章的系列中,我们将使用开源软件构建一个简单的视频平台,并将向其添加功能,以便它处理前端(边缘计算)的计算能力,我们将结束设计一个使我们能够向服务器动态添加代码/功能的平台。

OTT(Over-the-top)是通过互联网直接向观众提供的流媒体服务。OTT绕过有线、广播和卫星电视平台。现在你不需要花那么多钱了。

边缘计算是将计算和存储放在离需要的地方更近的地方的能力,简而言之,就是在前端服务器中运行的代码。

我们将设计两种截然不同的服务:简单的视频流解决方案和用于该视频流服务的边缘计算平台。

新的OTT是一个非常简单的开源视频平台,它期望输入信号并产生输出流。它主要是作为一个借口来讨论和设计一个围绕它的边缘计算平台。

UI应用程序是由nginx提供的一个简单的静态HTML5文件。我们使用Clappr(由hls.js和shaka支持)作为选定的玩家。前端充当视频流的缓存层,它还托管Nott应用程序。

直播通过FFmpeg(广播)到达平台,FFmpeg也用于对输入进行代码转换,生成多个节目。nginx-RTMP充当打包器,将RTMP输入转换为称为HLS的自适应输出流格式。

我们OTT平台的主要卖点是,它有流行的电视频道颜色条(60fps)和传奇的电视节目Big Buck Rabny(合作伙伴的授权内容)。

兼容性:我没有在所有平台(浏览器、iOS、Android、CTV)上测试它,视频很难,Nott不会100%覆盖设备,但它应该可以在大多数地方工作。

要将彩条电视节目播放到平台上,我们将使用FFmpeg。它提供了一些滤镜功能,能够以给定的速率创建合成彩色条框。它还提供了一个名为正弦的音频源过滤器,可以用来创造人工声音。

此命令创建每秒60帧的彩色条形图和48000赫兹的正弦波声音。它使用libx264将它们编码到视频编解码器H264和音频编解码器AAC。最后,我们使用RTMP将它们发送到代码转换器/打包器。

摄取服务器运行nginx-rtmp,它充当输入服务,接收FFmpeg合成流。它还对代码进行转换(为此生成FFmpeg进程),并在给定的文件夹中创建HLS格式。

前端服务器将通过此接收服务器支持的HTTP使用流。

我们选择的前端服务器是可伸缩的web服务器和反向代理的nginx。这将是最终用户可以访问HTML5应用程序以观看流的端点。它还将作为高速缓存层工作,以实现可伸缩性。

整个平台的构思都考虑到了Linux容器,所以您只需运行并使其运行,这将启动一切。您还需要通过运行Make Broadcast_TVShow启动不同选项卡中的颜色栏,然后将浏览器指向http://localhost:8080/app.

我们创建这个简单化的视频平台的真正原因是有一个软件可以让我们在边缘探索计算。下一篇帖子将是为Nginx前端提供Lua代码,以便为Nott添加功能,如身份验证和IP黑名单。