如何将 MP4 块附加到 Azure Blob 存储中的单个 Blob 而不会出现播放问题?

问题描述 投票:0回答:1

我正在使用 MediaRecorder API 构建一项服务来记录用户的网络摄像头媒体流。为了兼容性,我使用 MIME 类型

video/mp4; codecs=avc1.64001F,mp4a.40.2
,它支持在 Chrome 和 Safari 中录制和播放。

为了防止在意外中断(例如浏览器崩溃、电源关闭)的情况下丢失录制的素材,我计划每秒将每个录制的块上传到 Azure Blob 存储。

但是,我希望将录制作为单个视频 blob 进行管理,而不是为录制会话的每次开始/停止创建多个 blob,从而模拟单个不间断视频文件的感觉。为了实现这一目标,我正在考虑在 Azure 中使用附加 blob。

问题是,由于 Azure 上的合并块内的元数据或时间戳冲突,此方法可能会导致播放问题。

如何解决这个问题?

(注意:我知道像 ffmpeg 或 mp4box 这样的工具可以轻松合并视频文件,但我宁愿避免使用基于 wasm 的解决方案,因为它们依赖于客户端的计算能力。我也不想实现用于合并 mp4 文件的专用服务器,因为这将是我最后的手段。)

javascript azure-blob-storage mp4 mediarecorder
1个回答
0
投票

发生

RefusedNotAuthorized
异常是因为
config.yaml
文件需要 Azure IoT 中心设备预配服务的参数。

下面是

config.yaml
中设置的 IoT Edge 配置以及
edgeHub
的部署清单。我参考了此文档,使用 Azure IoT Central 连接具有 X.509 证书的设备。

hostname: "arkham.localdomain"
trust_bundle_cert: "file:///var/aziot/certs/azure-iot-test-only.root.ca.cert.pem"
auto_reprovisioning_mode: "AlwaysOnStartup"

provisioning:
  source: "dps"
  global_endpoint: "https://global.azure-devices-provisioning.net/"
  id_scope: "XXXXXXXXXXX"
  attestation:
    method: "x509"
    registration_id: "edge-gateway-device-cert"
    identity_cert: "file:///var/aziot/certs/iot-edge-device-identity-edge-gateway-device-cert-full-chain.cert.pem"
    identity_pk: "file:///var/aziot/secrets/iot-edge-device-identity-edge-gateway-device-cert.key.pem"

edge_ca:
  cert: "file:///var/aziot/certs/iot-edge-device-ca-edge-gateway-device-ca-full-chain.cert.pem"
  pk: "file:///var/aziot/secrets/iot-edge-device-ca-edge-gateway-device-ca.key.pem"

enter image description here

要创建 Azure IoT 中心设备预配服务,请使用 X.509 证书注册个人注册。我参考了此文档,使用 DPS 注册组将 X.509 设备配置到 Azure IoT 中心。

我还参考了此链接将 IoT Edge 透明网关连接到应用程序,以及此文档用于在 Linux 上使用 X.509 证书大规模创建 IoT Edge 设备。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.