视频流:MPEG-DASH,AWS 云端,dash.js

Video Streaming: MPEG-DASH , AWS cloudfront, dash.js

我正在创建一个托管在 AWS 上的视频流应用程序。我有 mp4 托管在 AWS S3 上。要流式传输视频文件,我想将 mp4 转码为 MPEG-DASH (mpd) 格式并存储在不同的 AWS S3 存储桶中。我将成为 AWS 云端,在转码后的 mpd 文件上方进行流式传输,并使用 dash.js or videogular 在客户端进行流式传输。

我面临的问题是如何将 mp4 转码为 mpd。(不使用 AWS 转码器,有点贵)。我正在考虑利用 AWS Lambda 来侦听源 S3 存储桶并输出到不同的 S3 存储桶。但找不到以编程方式转码的模块(将其转换为 Lambda 函数)。有没有人做过并想提供一些见解?

mpd 文件实际上只是一个基于文本的索引文件 - 它包含视频和音频流的 URL,但不包含媒体本身。

MPEG DASH 的媒体以片段形式存储,mp4 以分段的 mp4 格式存储。

如果您想自己从 mp4 创建碎片化的 mp4,那么您可以查看一些工具来执行此操作,甚至可以将其用作批处理过程的一部分。

一个例子是 mp4Dash (https://www.bento4.com/documentation/mp4dash/)。您可以在此 link 上查看示例,以转换单个 mp4 文件,或转换单个文件的多个比特率版本,这在使用 DASH 进行 Adaptve 比特率流式传输(ABR - 允许客户端选择根据当前网络条件下载下一段的比特率):

Single MP4 input file

mp4dash video.mp4

Multi-bitrate set of MP4 files

mp4dash video_1000.mp4 video_2000.mp4 video_3000.mp4

另一个例子是mp4Box:https://gpac.wp.imt.fr/mp4box/dash/

实际上有多种方法可以在 AWS 中流式传输 DASH,这一点毫无价值 - Elastic Transcode 可以创建 MPEG DASH 流,您可以存储该流并从 S3 流式传输,您可以使用云前端和 Unified Streaming 或 Wowza 等服务。流式传输很复杂,因此如果这是针对大量重要服务,则可能值得查看这些内容,看看是否有满足您需求而又不太昂贵的选项或组合。