AMQP服务端订阅

当需要实时获取设备视频流状态变化通知消息时,可使用物联网平台提供的AMQP(基于AMQP 1.0版协议)服务端订阅功能,在业务服务器实时、可靠地获取设备视频流状态信息。本文为您介绍配置AMQP服务端订阅设备视频流状态变化通知消息的操作步骤。

什么是服务端订阅

物联网平台提供AMQP服务端订阅功能,可直接订阅产品下多种类型的设备消息,例如RTMP设备推流、云端推流状态变更等消息。配置服务端订阅后,物联网平台会将产品下所有设备中已订阅类型的消息转发至您的业务服务器。详细信息,请参见服务端订阅

AMQP服务端订阅设备消息的工作原理,请参见配置AMQP服务端订阅

使用与限制

设备视频流状态变化通知消息包含:

  • RTMP设备流接收状态变更通知:RTMP设备向物联网智能视频服务的云端推流的状态通知。仅通过RTMP协议接入物联网平台的IPC设备支持。

    RTMP设备推流的详细内容,请参见在设备端完成RTMP向云端推流

  • RTMP流推送状态变更通知:RTMP推流任务的状态通知。物联网智能视频服务支持接入的所有IPC设备均支持。

    配置RTMP推流任务的详细操作,请参见设备管理的RTMP推流配置

AMQP服务端订阅设备消息的更多使用限制,请参见配置AMQP服务端订阅

前提条件

  1. 已创建视频产品

  2. 已创建视频设备。具体操作,请参见添加视频设备

  3. 添加的视频设备已接入物联网平台。

    • 通过V系统边缘一体机接入、通过GB/T 28181协议接入、通过RTMP协议接入和使用阿里云成品IPC设备接入,无需进行设备端开发。

    • 通过SDK接入物联网平台的IPC设备,需要进行设备端开发。详细信息,请参见设备开发指南

配置AMQP服务端订阅

步骤一:创建消费组

  1. 登录物联网平台控制台

  2. 管理AMQP消费组,获取消费组ID用于后续接入AMQP客户端。每个消费组最多包括128个消费者,每个消费者只能配置一个消费组ID。

步骤二:创建AMQP服务端订阅

在物联网平台控制台创建AMQP订阅,关联消费组以及对应的设备消息类型。

  1. 实例概览页签的全部环境下,找到对应的实例,单击实例卡片。

  2. 在左侧导航栏,选择消息转发 > 服务端订阅

  3. 服务端订阅页面,单击创建订阅

  4. 创建订阅对话框中,完成配置,单击确认

    image

    参数

    说明

    产品

    选择已创建的RTMP设备所属的产品。

    物联网平台会转发该产品下所有设备的消息。一个产品只能创建一个AMQP服务端订阅。

    订阅类型

    选择AMQP

    消费组

    物联网平台提供默认消费组。

    选择消费组列表,在右侧选择目标消费组面板,可以选择多个消费组,也可以单击右下角的创建消费组

    推送消息类型

    选择设备视频流状态变化通知

    该消息的Topic说明及数据格式,请参见下文数据格式

步骤三:运行AMQP客户端

重要

建议使用阿里云物联网平台提供的AMQP SDK接入示例。对于您自研的AMQP SDK,阿里云不提供后续技术支持服务。

AMQP客户端接入的详细说明,请参见AMQP客户端接入说明。运行示例,请参见步骤三:运行AMQP客户端

数据格式

RTMP设备流接收状态变更通知

  • Topic:/${productKey}/${deviceName}/vision/stream/status/receive

  • 消息内容:

    {
        "status":0,
        "iotId":"4z819VQHk6VSLmmBJfrf00107e****",
        "productKey":"al12345****",
        "deviceName":"deviceName1234",
        "streamNamem":"streamName1234",
        "streamType": 0,
        "timestamp":1702544507000,
    }
  • 参数说明:

    参数

    描述

    status

    RTMP设备流接收状态。

    • 0:流添加。

    • 1:流移除。

    iotId

    设备的ID。物联网平台为该设备颁发的唯一标识符。

    productKey

    设备所属产品的ProductKey

    deviceName

    设备名称。

    streamNamem

    RTMP流名称。

    streamType

    码流类型。

    • 0:主码流 。

    • 1:辅码流。

    timestamp

    状态变更时间,毫秒级时间戳。

RTMP推流状态变更通知

  • Topic: /${productKey}/${deviceName}/vision/stream/status/push

  • 消息内容:

    {
        "status":1,
        "iotId":"4z819VQHk6VSLmmBJfrf00107e****",
        "productKey":"al12345****",
        "deviceName":"deviceName1234",
        "streamType": 0,
        "url" : "rtmp://uri",
        "timestamp":1702544507000,
    }
  • 参数说明:

    参数

    描述

    status

    RTMP推流状态。

    • 1:开始推流。

    • 2:结束推流。

    • 3:推流异常。

    iotId

    设备的ID。物联网平台为该设备颁发的唯一标识符。

    productKey

    设备所属产品的ProductKey

    deviceName

    设备名称。

    streamType

    码流类型。

    • 0:主码流 。

    • 1:辅码流。

    url

    推流地址。

    timestamp

    状态变更时间,毫秒级时间戳。

相关API

API

描述

CreateSubscribeRelation

创建服务端订阅为指定产品关联消费组以及对应设备消息类型。

UpdateSubscribeRelation

在已创建的服务端订阅中,更新产品关联的消费组或设备消息类型。

QuerySubscribeRelation

查询AMQP服务端订阅的消息类型。

CreateConsumerGroupSubscribeRelation

在已创建的服务端订阅中,为指定产品添加一个消费组。

QueryConsumerGroupStatus

查询某个消费组的状态,包括在线客户端信息、消息消费速率、消息堆积数、最近消息消费时间。