使用 SMIL 文件在 videojs 播放器中利用自适应流媒体需要什么。我在我的 wowza 应用程序中创建了 SMIL 文件,它正在创建我的 4 个单独的流并使它们可用。但是,我无法让使用 videojs 的网页正确播放 SMIL 文件。非常感谢有关该编码的提示或在哪里可以找到正确的文档。
2 回答
SMIL 播放器的实现并不多。我确定我已经看到 wowza URL 表明它将 SMIL 输出为其他格式,例如whatever.smil/manifest.m3u8。那是 HLS,可以在移动设备和 Safari 上原生播放,也可以在其他地方使用videojs-contrib-hls 播放。
我知道这个问题很老了,但我最近一直在努力解决这个问题,所以我想分享我的经验,以防有人感兴趣。我的场景非常相似:想要使用 videojs 将来自 Wowza 的自适应比特率流传输到客户端。
有一个主链接解释了如何设置和运行 Wowza Transcoder 以进行实时流传输,以及如何使用 SMIL 文件设置自适应比特率流。按照那里的视频,您可以实现使用 ABS 的流,但是 SMIL 文件附加到流名称,因此如果您有从另一个媒体服务器来源到 Wowza 的流并且需要在提供给客户之前进行转码。在文章中提到了一些关键的事情(比如流名称组),但不知何故,事情似乎不太清楚,至少对我来说是这样。因此,从我阅读的所有文章中的理解以及我为实现 ABS 所做的工作中得到了一些澄清:
- 您可以使用 SMIL 文件或流名称组 (NGRP) 在 Wowza 中实现 ABS。NGRP 引用在转码器模板中定义的流块,可以使用多比特率流(动态)播放(<- 这是我使用的)。SMIL 文件用于为多比特率 VOD 流创建“静态”流列表。如果您使用的是Wowza Origin-Edge Delivery,您将需要 .smil 文件,因为 NGRP 不会被转发到边缘。(所有这些信息的来源:这里)。
- 如果您需要 SMIL 文件,您可能需要为每个流生成一个新文件,并且可能希望以自动方式执行此操作,因此最好的方法是通过 HTTP 请求(在上面的链接中解释了如何为达到这个)。
如果您可以使用 NGRP,事情会容易一些:
- 您需要启用 Wowza 转码器(这很简单,步骤在我上面提到的视频中)。
- 您应该使用要交付的不同流预设创建自己的转码器模板,例如,您可以检查已经存在的默认流预设。您添加的预设越多,每当有流到来时,Wowza 需要做的工作就越多,因为它需要为您定义的每个预设生成一个新的流。
- 现在是我们生成 NGRP 的时候了。在您的转码器模板中,您可以根据需要生成任意数量的 NGRP(澄清:这些就像流组,您可以在客户端视频播放器中设置。每个 NGRP 包含视频能够播放的流在进行自适应比特率流式传输时使用)。例如,这些是默认的 NGRP:
如果您在客户端视频播放器中播放 ngrp“_mobile”,播放器中的 ABS 算法将能够根据客户端功能自行调整以播放 240p 或 160p 流。
所以想象一下你有这两个NGRP。为了在 videoJS 中播放它们,您需要将源设置为:
http://[wowza-ip-address]:1935/<name-of-your-application>/ngrp:myStream_all/playlist.m3u8
或者
http://[wowza-ip-address]:1935/<name-of-your-application>/ngrp:myStream_mobile/playlist.m3u8
...基于您想提供给客户端玩家用于 ABS 的选项数量。(例如:如果您的目标是旧的移动设备,您可能只想提供几个低比特率的流)。(这是在您传送 HLS 流的情况下。如果是其他格式,则扩展名会发生变化,例如,如果您传送 DASH 流,您将使用“ /manifest.mpd ”而不是“ playlist.m3u8 ”)。
就是这样,video.js 文档中还有一个非常有用的链接,解释了它是如何进行比特率切换的:这里。
我希望它可以帮助某人!至少澄清一些事情!:)