如何产生CMAF输出和测试回放
我们一直在讨论通用媒体应用程序格式(CMAF),以至于有必要实际生成和测试一些CMAF输出. 这就是我们在本教程中要做的. 具体来说,我们将使用 AWS Elemental MediaConvert 并在一系列本机播放器,现成播放器和浏览器插件上测试播放.
为什么选择AWS Elemental MediaConvert? 除了AWS Elemental在市场上的信誉, MediaConvert是一个基于云的编码器,任何拥有AWS账户的人都可以访问它来复制我们的测试. 除了, AWS Elemental MediaConvert有一个GUI,使其成为可视化教程的理想选择,还有一个应用程序编程接口(API),使其成为大批量生产的理想选择. 到这里为止, CMAF是足够成熟的,你应该能够得到类似的结果与几乎任何商业编码器, 云或其他.
接下来要做什么
对于有TL;DR性格的读者(或者没有的人)?),让我来告诉你该怎么做,该去哪里. 当我第一次开始使用CMAF和AWS Elemental MediaConvert时, 我的目标是快速创建一些CMAF输出来测试各种玩家, 所以我使用了一个没有修改的系统CMAF模板. 一旦我发现这些文件与一系列现有播放器兼容(如本文后面所述), 我想创建一个自定义模板来生成我自己的编码阶梯.
考虑到至少有一些读者会想要复制这些操作中的一个或两个, 我制作了两个教程. Track 1从现有模板创建CMAF输出——没有混乱,没有大惊小怪. 然而,由于我只是简单地使用了一个模板,所以Track 1并没有探索cmaf相关的选项.
在第2部分中,我从零开始创建了一个自定义Job模板,并探索了cmaf相关的选项. 如果从你的角度来看,这是“金钱内容”,那么就通过 图14.
在深入了解AWS Elemental MediaConvert之前,让我们简要介绍一下CMAF.
CMAF
简而言之,CMAF是分段媒体的标准 按照ISO/IEC 23000-19正式交付. 具体地说, CMAF uses the ISO Base Media File Format (ISO BMFF) container—with common encryption (CENC); support for H.264, HEVC, and other codecs; and Web Video Text Tracks Format (WebVTT) and IMSC1 captioning.
不像DASH和HTTP直播(HLS), CMAF isn't a presentation format; it's a container format that 可以保存一组音频/视频文件吗, 具有用于多种表示格式和多种drm的清单文件. 向发布者分发多重自适应 比特率(ABR)格式,如HLS, DASH, 光滑的流, 和Adobe HTTP动态流(HDS), 这使得CMAF成为流媒体的圣杯:一个可以分发到所有输出点的单一文件存储.
也许解释CMAF的最好方法是显示输出,您可以在 图1. 从上到下,第一 .m3u8文件是编码阶梯中各个梯级的HLS媒体播放列表, 以TOS_1080p结尾.m3u8,这是您将链接以启动HLS播放的主清单文件. 下一个文件是TOS_1080p.mpd,单个DASH清单文件. cmfa (CMAF音频)和cmfv (CMAF视频)文件是由两组清单文件调用的单个音频和多个视频文件. 我将音频/视频内容制作为单个文件,通过清单文件中的字节范围请求检索, 这就是为什么每个梯级和音频文件只有一个文件的原因吗, 而不是为每个输出多个fMP4文件.
图1. 练习的对象:一组CMAF输出,用于分发到HLS和DASH端点
本教程中创建的输出没有DRM和广告插入, 所以它们代表了CMAF部署的最简单的测试用例, 但它适用于最广泛的读者群. 有关CMAF在短期内对不同类别的流媒体发布者的有用程度的更多信息, 请查看标题为“CMAF的状态:圣杯或只是另一种格式”的文章?” (go2sm.com/cmafstate).
因此,图1所示的文件就是练习的对象. 让我们开始吧.
在AWS Elemental MediaConvert中生成内容
要在AWS Elemental MediaConvert中生成内容, 您需要一个AWS帐户和一个身份和访问管理(IAM)角色,以允许MediaConvert访问您的输入文件和您要访问的位置 存储您的输出文件(bit.ly / aws_iam_mc). 一旦你 登录到AWS后,您可以选择MediaConvert 其他AWS服务. 基本操作由上面显示的三个概念控制 图2-作业、输出预设和作业模板:
- Jobs选项卡包含medium - aconvert执行的所有作业. 访问此选项卡可以跟踪作业的成功和完成情况.
- 输出预设包含单个音频输出流的编码参数, video, 或音频/视频.
- 作业模板包含多个Output预设,以形成完整的编码阶梯, 以及输出中支持的ABR格式的相关配置. 启动作业的最简单方法是选择一个现有的job模板并添加输入文件.
图2. 在MediaConvert中生成作业包括作业、输出预设和作业模板.
注意,大多数MediaConvert客户使用 API来编码大部分生产作业. 因为API可以调用Job模板, 最佳的工作流程是在GUI中创建Job模板来测试兼容性和质量,然后在API中使用该模板. 因此,创建Job模板所花费的时间是值得的.
议题1:概念的快速验证
生成CMAF输出的最快方法是选择CMAF Job模板, 添加输入文件, 选择输出位置, 输入您的IAM角色, 创造工作岗位. 按照以下步骤来完成.
- 选择作业模板(图3). 单击图3左侧的Job templates, 然后使用作业模板下面的下拉框选择系统模板和ot - cmaf. 您将看到四个模板,AVC和HEVC各两个,一个是常量编码比特率(CBR)控制,另一个使用AWS Elemental的质量定义可变比特率编码 内容感知版本的VBR[可变比特率] ,你可以在(go.aws / 3 a8whcb). I 首先测试了顶部预设,这是AVC/CBR.
图3. 选择工作模板
选择AVC和CBR的顶部模板. 选择模板后,您将看到顶部显示的选项 图4. 单击“创建作业”.
图4. 使用系统作业模板创建作业
- 添加你的输入. 在“创建作业”屏幕中(参见 图5), 单击Inputs右侧的Add按钮创建Input 1,然后选择Input 1. 在右侧“输入1”下方,单击“浏览”打开AWS简单存储服务(S3)桶.
图5. 选择输入文件
单击Browse后,MediaConvert打开Choose a location窗口,如图所示 图6 在下一页. 通过S3桶下拉列表选择S3桶. 如果单击搜索文件输入字段中的指针, MediaConvert将列出存储桶中的所有文件. 最简单的方法是输入你要找的文件的前几个字母. 在图6中,您将看到我键入了大写的T,以显示列表中显示的四个文件. 单击以选择所需的输入文件.
图6. 选择输入桶和位置
- 选择输出位置. 在图5的左中,单击CMAF打开CMAF组设置,如图所示 图7. 单击Browse,并为CMAF输出选择一个位置.
- 选择您的IAM角色. 在Create job屏幕的左下方(图5), 单击Settings显示作业设置菜单 图8 (第94页). 在“IAM角色”下拉列表中选择“MediaConvert”.
- 创建工作. 在Create作业屏幕的右下角,单击Create(图5中没有显示). If
一切正常,屏幕将关闭 Media-Convert将把作业添加到Jobs列表中. If not, Media - Convert是非常具体的错误,会让你知道你做错了什么,以及如何修复它.
图7. 选择输出位置
图8. 选择IAM角色
使用一个简短的测试文件,媒体转换将在你知道它之前完成. 使用您选择的S3百家乐软件管理器,将文件夹中的所有文件设置为公共文件,以便播放器可以 播放它们,然后单击其中一个主清单文件 在浏览器中启用S3 Explorer(参见 图9). 请注意,AWS提供了一个HTTPS URL,因此您可以使用需要HTTPS输入的播放器(如Bitmovin web测试播放器)进行测试. 还要注意的是 如果您在第三方百家乐软件管理器实用程序(如Cloud-Berry)中检索URL, 我一开始就是这么做的, 你会得到一个HTTP URL 你无法使用需要HTTPS的测试玩家进行测试.
图9. 下面是来自基于浏览器的S3 Explorer的HTTPS URL.
图10 显示了在JW Player测试播放器中播放的HLS流, 音乐播放器守护程序(MPD)也在哪里播放. 唯一的问题是,如果您想从S3存储桶中播放视频, 你必须把你的十字架源百家乐软件共享(CORS)配置,在 go2sm.com/cors. 做完这些之后, CMAF文件在Bitmovin播放器(HLS和DASH)中播放成功, 我的iPhone 10 (HLS), 在Microsoft Edge (HLS), 在Chrome中使用 原生MPEG-Dash + HLS播放插件(HLS和DASH),所有这些都没有任何调整. 唯一不能用的播放器是THEOplayer, 尽管AWS Elemental正在与THEO Technologies就这一问题进行讨论, 我相信在你读到这篇文章之前,这个问题早就解决了.
图10. HLS输出在CMAF包播放在JW播放器测试播放器
曲目2:创建你自己的 自定义CMAF作业模板
由于时间和空间的关系,我们只能把接下来的部分简短而甜蜜. 在高层次上,制作自己的CMAF作业模板包括四个步骤:
- 创建预设.创建自定义预置的最简单方法是选择现有的Output预置这与期望的输出参数很接近,然后修改它. 例如,我想从CBR转到CBR 编码为VBR编码. 所以我找到了一个CBR模板 接近我的目标输出参数并将其更改为VBR. 一旦我有了预设定制的需要,我复制它,改变参数的需要 梯子的下一级, 然后冲洗和重复,直到我完成了所有的视频级别(我使用了一个现有的MediaConvert音频模板). 请注意,如果你 创建用于CMAF作业模板的预设,您可以 应该创建仅视频和仅音频的模板, 因为CMAF只适用于非混合音频和视频.
浏览媒体转换的输出预设, 单击“输出预设”,在“输出预设”菜单中选择“系统预设”和“ot - cmaf预设”(如图3所示,但为“输出预设”)。. 您可以根据它们的 名称或描述. Click 所需的输出预设为 加载它,然后单击“复制”以创建您的自定义 version. In 图11,我选择了8Mbps 1080p CBR CMAF预设和转换 它到6Mbps VBR,留下所有 其他未修改的设置.
图11. 将CBR预设转换为VBR
一旦我写出了首字母 预设,我复制了它 创建了下一个梯级 ladder. 我使用了96Kbps的音频预设,就像我的自定义作业模板一样.
- 创建自定义Job模板.单击Job templates打开该选项卡,然后单击Create template. 这将打开中显示的屏幕 图12. 输入图右侧显示的General信息,以便稍后找到模板.
图12. 创建自定义CMAF模板
在图12的左中间,单击右边的Add 输出组的. 这将打开Add输出组 选择器(见 图13). 选择CMAF,然后选择. 您已经创建了CMAF作业模板.
图13. 创建CMAF输出组
- 配置CMAF选项.一旦创建了CMAF输出组,MediaConvert将打开CMAF选项屏幕,如图所示 图14.
图14. 配置CMAF选项
选项如下:
- 段控制-如果您选择单一文件, 您将为清单文件将通过字节范围请求访问的每个音频/视频输出输出单个文件. 如果您选择分段文件, 您将为清单将检索的每个段生成单独的文件.
- 片段长度dash玩家可以在片段边界上切换流, 而不是等待一个片段的结束. 此选项设置片段持续时间, 它应该与i帧间隔的持续时间相同,或者是它的倍数.
- 段长度-这是HLS和DASH的传统分段的持续时间, 哪个应该是相同的持续时间,或者是用于生成文件的i帧间隔的倍数 (我使用的GOP大小为2秒).
- 最小终段长度-使用0,除非调试玩家问题.
- 写HLS表如果使用MediaConvert生成HLS清单文件,则启用.
- 写DASH舱单-启用如果使用MediaConvert产生您的DASH清单文件.
- MPD舱单配置文件-使用Main,除非你的DASH播放器需要.
单击Advanced获取超出本教程范围的高级HLS和DASH编码选项.
- 添加自定义预设到模板,并保存模板.在图14左侧仍然选中CMAF的情况下,向下滚动,直到看到所有输出的列表(图15). 在右上方, 单击“添加输出”,直到所有视频和音频输出预设有足够的输出.
图15. 向Job模板添加输出
在CMAF下面的图14的左侧,应该列出所有输出. 单击每个Output打开Output设置对话框(参见 图16), 然后从下拉列表中选择一个预设,并键入名称修饰符, 您通常希望以下划线开头. 自定义预设是你在轨道2的步骤1中创建的那些. Name修饰符是文本 MediaConvert将在编码期间附加到源文件,以区分清单文件中的内容.
图16. 选择您的预设和名称修饰符
对编码阶梯中的所有梯级重复此任务, 并单击右下角的Create(如图12所示)来生成预设.
创建后,您可以在作业模板选项卡(图17),并运行轨道1中描述的作业.
图17. 以下是可用于生产的新Job模板.
相关文章
就像我们喜欢用FFmpeg进行转码操作一样, 在为ABR交付包装内容时可能会令人沮丧. 由packag-ing, 我的意思是格式化和分割你的媒体文件, 为HLS和DASH创建清单文件, for - matting for CMAF, 并管理多个音频和字幕流. 幸运的是,有一些更容易使用的解决方案,它们同样是开源的,同样是免费的. 在本文中,我将重点介绍GPAC,它是一种很好的包装替代方案.
2024年3月18日
这是会议上的热门话题, 但部署方面的挑战意味着CMAF还没有接管流媒体世界. 这就是为什么它得到了如此多的关注.
11月12日2019
微软的大卫·赛义德说, Imagine Communications的David Heppe说, 和Akamai的Will Law讨论了CMAF和包装格式的未来,这是他们在2019年流媒体东部会议上的小组讨论.
2019年7月29日
提及的公司及供应商