繁体   English   中英

将预先录制的视频提供给 Azure 媒体服务作为实时 stream

[英]Feed a pre-recorded video to Azure Media services as a live stream

我想做一些对我来说听起来很简单的事情,但我很难找到解决方案。

我有一个预先录制的视频,需要由 API 启动。 我需要该视频是 stream 通过 RTMP 直播。 现在我执行以下操作:

(所有通过代码自动化)

  • 创建 azure 直播活动
  • 获取现场活动的输入 url
  • 使用 FFMPG 启动 docker 映像
  • 提供参数(现场编码器的原始预录视频和目标输入)
  • 从端点获取 output URL
  • 将其放入数据库
  • 有一个 API 我的 web 播放器查询以了解作业的状态
  • 当我在数据库中的行现在有来自实时编码器的 output URL 时,启动 stream

它缝合非常复杂。 我很担心这样一个流程中的许多问题:

  • ffmpg 的性能问题
  • 延迟启动所有资源
  • 一个组件在该流程中崩溃

最后,我只想开始直播 stream 并告诉它使用 MP4 而不是等待 RTMP 提要....

选项 >

  • Restream.io 让我可以安排任何视频并开始将其流式传输到我的端点。 我必须弄乱他们的 API 才能完成这项工作,我宁愿将所有东西都保留在 azure 中。

我很确定我在这里错过了一件非常简单的事情。 任何帮助将不胜感激!

首先要回答人们的问题,我让这个流程运行了 300 多个测试 stream,每个流程从 48 小时到 30 分钟的不同形式。

失败率极高。

  • 媒体服务未能及时启动
  • FFMPEG 丢帧率
  • 您可以想象的非常昂贵的设置
  • 断开媒体服务和 FFMPEG 之间的连接。
  • 实时编码器未能从 FFMPEG 捕获 stream

另一方面,我正常的 stream 性能(来自 RTMP 源)非常稳定。

  • 10 天 24h/7 在 10 个端点编码器上流式传输(警告,您必须联系 Microsoft 以增加您的 5 个限制)
  • 超过 20 TB 的数据覆盖全球 350 个城市,具有出色的性能和非常低的延迟。

因此,对于为所有观众提供“实时流”体验的预先录制的视频,我采用了一种非常简单的方式。

当我确实需要可变比特率时的选项 1:

  • 在 AWS G4 实例上自动执行 OBS 中的脚本。
  • 通过 api 完全控制(启动、关闭和流式传输)
  • 我推送到 Azure 事件中心的非常详细的错误 state
  • 大量 stream 的失败率为 0
  • 缺点:不在我的 azure 计费帐户中

当我不需要可变比特率时的选项 2:

  • 在 Azure 媒体服务中设置 MP4
  • Json 时间戳作为我的 MP4 的元数据
  • 通过 Javascript 我的 Azure 视频播放器同步,以遵循 MP4 中的当前时间戳,并让我所有的 stream 事件在适当的时候触发播放器和我的应用程序,供所有人观看。

现在我正在攻击所有 VOD 和 RTMP 上 5 种语言的实时翻译......祝我好运。

干杯!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM