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

时间:2017-06-16 12:11:49

标签: amazon-web-services amazon-s3 video-streaming amazon-cloudfront mpeg-dash

我正在创建一个托管在AWS上的视频流应用程序。我在AWS S3上托管了mp4。要流式传输视频文件,我希望将mp4转码为MPEG-DASHmpd)格式并存储在其他AWS S3存储桶中。我将使用AWS cloudfront来传输转码后的mpd文件,并使用dash.jsvideogular在客户端流式传输。

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

1 个答案:

答案 0 :(得分:3)

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

用于MPEG DASH的媒体存储在段中,对于mp4采用碎片式mp4格式。

如果你想自己从mp4创建碎片mp4,那么你可以看一些工具来做这个,甚至用作批处理的一部分。

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

  

单个MP4输入文件

mp4dash video.mp4
     

多比特率的MP4文件集

mp4dash video_1000.mp4 video_2000.mp4 video_3000.mp4

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

实际上有多种方法可以在AWS中流式传输DASH - Elastic Transcode可以创建可以存储和流式传输的MPEG DASH流,您可以使用云前端和Unified Streaming或Wowza等服务。流媒体是这是一个复杂的问题,如果这是一个大批量的重要服务,可能值得看看这些,看看是否有一个选项或组合,满足您的需求,而不是太昂贵。