跳到主要内容
博客云概述Linode 上的可扩展视频转码:使用 Kubernetes 和 Capella 将 MP4 转为 HLS

Linode 上的可扩展视频转码:使用 Kubernetes 和 Capella 将 MP4 转为 HLS

解锁无缝流媒体英雄

随着流媒体平台不断占领我们的屏幕并彻底改变我们的内容消费方式,建立一个强大且可扩展的流媒体服务变得前所未有的重要。企业如何确保跨设备和平台的兼容性,同时降低成本并最大限度地提高效率?在本文中,我们将深入探讨视频点播转码问题。

在本教程中,我们将使用Linode Kubernetes 引擎设置视频转码,以帮助根据需求扩展转码基础架构。我们将介绍将 mp4 文件转换为 HLS(HTTP Live Streaming,HTTP 实时流)的过程,HLS 是流媒体服务常用的格式。HLS 使用自适应比特率流功能,无论设备或网络速度如何,都能确保流畅播放和一致的观看体验。开始时,我们将使用一个 mp4 文件(可以是您已有的 mp4 示例视频),将其上传到输入桶,然后将其发送给我们的转码合作伙伴Capella 来处理视频转码。 

Capella是Akamai的合作伙伴,提供可在Akamai计算平台上运行的即部署解决方案。我们之所以与Capella合作,是因为他们可以在我们的平台上运行编码器,在Akamai平台上存储VOD资产,并通过Akamai CDN分发。 Object Storage并通过Akamai CDN分发。这种合作关系还允许我们使用Kubernetes和Helm进行部署,从而使扩展变得更加容易。例如,在下面的教程中,来自Capella的编码机将根据作业数量自动旋转,然后在作业完成后再缩减,从而节省了数千美元的闲置计算时间。

先决条件

要完成本教程,您需要注册一个 Linode 账户。注册是免费的,您还可以获得 100 美元的积分!

  1. 一个 Linode API 令牌
  2. 安装 kubectl
  3. 安装舵
  4. 安装此处列出的外部 Kubernetes 工具。
  5. A Capella 许可证(如需免费许可证,请发送电子邮件至sales@capellasystems.net) 

第 1 步:创建 Kubernetes 集群

第一步是创建一个将进行编码的Kubernetes集群。在Akamai云仪表板上,点击Kubernetes,然后点击创建集群。

接下来,让我们为群集输入一些配置。我们将其命名为 "transcoding-demo"。你应该在这里选择离你最近的地区。我选择的是洛杉矶。还建议启用高可用性控制平面(High Availability Control Plane),以激活 Kubernetes 集群的高可用性。

在添加节点池部分,让我们从专用 8 GB 计划中添加 3 个节点。这三个节点是管理节点,其中一个自动当选为领导节点,另外两个作为冗余管理节点。

添加这些内容后,你会看到屏幕顶部有一个按钮,上面写着 "创建集群"。点击该按钮创建 Kubernetes 集群。注意:这可能需要几分钟时间。

现在,您的 Kubernetes 环境设置已经完成。请注意,在 Cloud Manager 控制面板中,您创建的 3 个节点都处于运行状态。 

接下来,让我们点击仪表板上的以下链接下载 Kubeconfig 文件。它将下载到你的本地计算机。确保将文件移到你的 Kubernetes 目录(与你设置 kubectl 的位置相同)。  

接下来,点击 Kubernetes 控制面板链接,打开 Kubernetes 控制面板。

你会看到这条信息,然后点击选项,用你刚刚创建的 kubeconfig 文件登录。

在左侧面板中点击群集,就能看到刚刚创建的节点。

第 2 步:创建并编辑 Helm 配置文件

现在,让我们创建并编辑 Helm 配置文件,用于将 Cambria 群集部署到 Kubernetes 环境中。Cambria Cluster 是由多个 Cambria FTC 工作站组成的可扩展转码网络,用于处理大量视频文件。Cambria 集群管理器会在网络上路由操作。

首先,我们将使用以下两条命令下载 Capella 群集配置文件存档:

curl -L -s -o capella-cluster.tgz

helm show values capella-cluster.tgz > capellaCambriaConfig.yaml 

在配置文件中,我们需要更新两个字段:Capella 许可证密钥和 Linode API 令牌。

在 ftcLicenseKey 字段中添加您收到的许可证密钥(在前提条件部分发送电子邮件至sales@capellasystems.net后,从 Capella 团队获得)。 

然后,在 linodeAPIToken 字段中添加您的 Linode API 令牌(使用 "先决条件 "部分中的链接生成令牌)。

第 3 步:安装 Cambria 簇

现在,我们需要安装 Cambria 集群。该集群用于处理大量视频文件。

helm upgrade -install capella-cluster capella-cluster.tgz -values capellaCambriaConfig.yaml 

你会看到状态已更改为已部署。

此时,有几个组件正在部署到 Kubernetes 环境中。在继续之前,最好等待几分钟,让所有组件都部署完毕。

第 4 步:打开 Cambria Cluster Web UI

从 Kubernetes 仪表板的左侧面板,点击服务。然后,复制中间节点的 IP 地址(端口 8161)。该端口专用于 Web UI。

在新标签页中输入 "https://",然后粘贴 IP 地址。(可能需要单击 "高级">"输入站点 "来输入站点)。现在您将看到 Cambria Cluster Web UI。使用 capellaCambriaConfig.yaml 文件中的 WebUI 凭据登录。(有关如何找到这些凭据的详细信息,请查看第 8 页)

步骤 5:创建输入和输出桶。

回想一下,我们正在将 mp4 视频转换为 HLS 格式。我们将创建一个包含两个文件夹的文件桶:一个用于输入 mp4 文件,名为源文件;另一个用于输出 HLS 文件,名为输出文件。

让我们进入Akamai云管理器,点击左侧面板中的Object Storage 。然后,点击 "创建桶"。我们将其称为 "capella"。确保选择与上文Kubernetes集群相同的区域。然后点击创建桶。

创建水桶后,我们需要复制其位置,然后粘贴到 XML 文件中。点击水桶的详细信息按钮,然后点击其位置旁边的复制按钮,如下图所示。将其保存在记事本中,因为我们稍后会用到它。

接下来,我们需要为水桶创建访问密钥。点击访问密钥,然后创建访问密钥。

我们姑且称之为 "capella-access"。

你会看到一个小弹出窗口,显示你的访问密钥和秘密密钥。将它们复制并粘贴到记事本中,因为我们稍后会用到它们。保存后,点击 "我已保存密钥"。

现在,让我们在对象存储桶中创建 2 个文件夹:一个用于输入,一个用于输出。点击你的存储桶,然后点击创建文件夹。将输入文件夹命名为 "源"。

让我们对输出文件夹做同样的处理。 我们把它叫做 "输出"。

第 6 步:编辑 HLS 文档样本中的字段。

Capella 向我们发送了这个示例文件,用于完成 mp4 到 HLS 转换的转码工作。还有更多示例文件可供选择,只需确保在发送电子邮件时询问他们您想要哪个示例文件(查看上面的前提条件)。确保将其保存在你的 Kubernetes 文件夹中。

将访问密钥和保密密钥复制并粘贴到 XML 文件第 8 行和第 9 行的职位描述部分。

在 "上传设置 "部分的第 234 和 235 行添加相同的值。

在第 231 行,粘贴水桶的区域。你应该已经在记事本中复制了上面的步骤。

接下来,在上传设置部分,我们需要更新水桶和位置字段。在第 227 行,将 bucket 字段更新为 "capella",在第 228 行,将 location 字段更新为 "output"。(记住,我们创建了一个名为 "capella "的文件桶,而输出文件夹名为 "output")。

第 6 步:将 mp4 文件上传到输入桶

接下来,让我们上传一个 mp4 文件到输入桶。它可以是你的狗的视频、你录制的烹饪视频,也可以是任何 mp4 文件。我使用的是一个名为flying5的mp4文件。让我们进入Akamai云管理器,在源文件桶中上传mp4文件。

现在,回到 XML 文件。让我们在第 347 行添加源文件的位置,如下所示。

第 7 步:运行转码工作

现在,我们准备进行转码!我们将使用 API 调用运行转码任务。你需要替换下面curl 命令中的一些内容。首先,导航到 Kubernetes 仪表板,获取第一个节点的 IP 地址(8650 端口)。该端口专用于编码器作业通信。将其复制到剪贴板并粘贴到某个地方保存(.ip 之前的所有内容)。你马上就会用到它。 

然后,从 capellaCambriaConfig.yaml 文件中复制 cambriaClusterAPIToken 并保存。在curl 命令中,将 usertoken 值替换为您的 API 令牌。

然后,添加转码任务 xml 文件的名称。我将其保存为 mp4-hls-transcoding-job.xml。

让我们在终端运行这条命令。

curl -k -X POST "https://123.456.78.90:8650/CambriaFC/v1/Jobs/?usertoken=12345678-1234-5678-abcd-efghijklmn" -d @mp4-hls-transcoding-job.xml

要确认作业是否正在运行,让我们查看一下 Kubernetes 面板。让我们导航到 Kubernetes 控制面板,并打开以下 URL 的 8161 端口,这是作业列表端口。 

每当作业被提交到 Cambria 群集管理器,它们就会出现在 Cambria WebUI 的作业列表中。

这些作业将分配给 FTC 编码机运行。如果之前队列中没有作业,Cambria 集群管理器会自动启动新的 FTC 机器。如果队列中的作业数量较多,则会启动更多的 FTC 机器来处理负载。

从 Akamai Linode Kubernetes 摘要页面,您将看到一台新机器正在调配。机器调配完成后,您可以在 Kubernetes 面板的节点和集群管理器 WebUI 下看到它。一旦可用并自动连接到群集,作业就会分发到 FTC 机器上运行。WebUI 的 "作业列表 "可用于跟踪进度。

任务完成后,您会看到 WebUI 上的状态已更改为已完成。

它会创建 3 个不同的视频文件,其中包含不同的视频类型。回到 Akamai 控制台后,在输出文件夹中会看到一个输出文件,里面有几个文件夹。其中一个文件夹包含音频,一个包含视频,还有一个包含元数据。

您可以通过支持 HLS 的播放器(可能是浏览器或第三方的某种插件)播放这些内容。 

视频转码是现代多媒体传输的一个重要方面,按照本教程中的步骤,你现在可以轻松应对这一挑战! 

总结

这个视频转码示例说明了使用Linode Kubernetes 引擎(LKE) 进行现代多媒体交付的灵活性和强大功能。编码机器自动启动,根据作业数量进行扩展,然后在作业完成后再次缩减,展示了使用 LKE 所实现的显著节约。

在成功完成视频转码后,您可以利用Akamai战略性地分布在全球各地的服务器网络,确保将HLS格式的视频快速、无缝地分发到您的受众手中,无论他们身处何地。通过将内容分发卸载到Akamai的分布式边缘服务器,这将有助于减轻原始服务器的负载。这不仅能提高视频分发的性能和可扩展性,还能通过减少延迟和缓冲来提升整体用户体验。此外,Akamai CDN还提供自适应比特率流媒体等高级功能,可根据观众的网络条件自动调整视频质量,确保在各种设备和连接速度下流畅播放。这对于向移动设备和带宽有限的地区分发高质量视频内容尤为重要。

接下来的步骤

在本教程中,我们使用 Akamai 将 mp4 格式的视频转码为 HLS 格式。这种转换可确保与不同的流媒体设备兼容。您可以在这里找到视频转码可能的输入和输出格式的完整列表。 

如果您想了解有关如何实施视频转码的更多信息,请订阅我们的时事通讯,在TwitterLinkedIn 上与我们联系,或订阅我们的YouTube 频道

除了这些技术指南外,如果您或您的组织正在考虑优化其视频转码和 Kubernetes 解决方案,您可以通过注册获得 100 美元的免费点数来试用 Linode 的解决方案。 

注释

留下回复

您的电子邮件地址将不会被公布。 必须填写的字段被标记为*