ESP-Media-Protocols 组件

[English]

概述

多媒体协议是多种通信协议的集合,广泛应用于流媒体传输、设备控制以及设备互联通信等场景,典型应用方式如下:

  • 安防系统大多数网络摄像头都内置 RTSP 服务器,将采集的视频压缩后使用 RTP 协议对外提供视频流,允许监控平台、NVR、VLC 播放器等进行访问拉流;

  • GB28181(全称:GB/T 28181-2016),中国公安部发布的国家标准,定义了公共安全视频监控联网系统的信息传输、交换和控制技术要求,基于 SIP 协议完成设备注册、心跳、呼叫等信令控制,使用 SDP 描述媒体会话信息,使用 RTP 和 RTCP 实时传输和控制媒体数据;

  • VoIP、视频会议、可视对讲系统,基于 SIP 协议完成呼叫和语音、视频通信功能;

  • 广播系统、直播平台,设备采集媒体流后基于 RTMP 协议向服务器推流,多客户端设备基于 RTMP 协议从服务器拉流并播放。

ESP-Media-Protocols 是乐鑫科技推出的多媒体协议库,提供对基础及主流多媒体协议的支持。

协议

层级

功能

常见应用场景

RTP/RTCP

传输层

实时传输音视频流,提供质量信息

网络摄像头、实时通话/会议的媒体数据的低延时传输,RTCP 提供传输质量统计

RTSP

应用层

作为服务器支持被拉流,作为客户端支持拉流和推流

网络摄像头的媒体数据的低延时单向传输、播放控制

SIP

应用层

会话终端,支持注册到 SIP 服务器,支持发起会话和接收会话

对讲机、电话终端之间媒体数据的低延时双向传输,通过会话管理实现对讲、会议

RTMP

应用层

作为服务器支持被拉流和接收推流,作为客户端支持拉流和推流

直播推流与后端分发(设备向直播服务器/平台推流),直播接入

MRM

/

多设备主从同步播放音乐

多房间音频同步播放(智能音箱、家庭影院多设备同步)

UPnP

/

设备互联,媒体和服务共享

家庭内设备发现与媒体共享(手机/PC 发现电视/NAS 并投屏或播放)

性能数据

各协议性能对比

协议

实时性

数据流

控制流

设备发现

TLS 加密

复杂度

RTSP

手动

SIP

手动

RTMP

基础

手动

MRM

自动

UPnP

自动

可通过以下图流轻松初步辨别要使用的协议:

实时性

  • 低延迟:用于控制或命令传输的数据,延迟约 20 ms。

  • 低延迟:音视频或其他媒体流传输,延迟约为 300 ms。

  • 中延迟:基于 RTMP 的直播流,延迟约为 2 秒。

安全性

  • TLS(可选)

  • MD5 摘要鉴权(SIP 强制)

扩展性

  • 可定制协议头和协议体

  • 支持订阅和通知,可注册服务

并发性

  • 支持多客户端连接(RTMP)

兼容性

  • SIP 支持 linphone、Asterisk FreePBX、Freeswitch、Kamailio

  • RTSP 支持 ffmpeg、vlc、live555、mediamtx

  • RTMP 支持 ffmpeg、vlc

  • UPnP 支持网易云音乐

媒体支持

内存消耗数据

使用方法

ESP-Media-Protocols 组件托管在 Github。可以通过在工程中输入以下命令将该组件添加到你的工程中。

idf.py add-dependency "espressif/esp_media_protocols^0.5.1"

在使用 ESP-Media-Protocols 组件前,建议先参考和调试以下示例工程,以熟悉 API 的使用方法以及协议栈的具体应用。

FAQ

Q: ESP-Media-Protocols 支持的协议和功能全吗?

A: ESP-Media-Protocols 目前支持在嵌入式领域使用较广泛的基础协议和功能。还有一些未支持的协议如 SRTP、HLS 等,可以在其他组件或仓库下找到和使用。已支持的协议规范会不断迭代以及扩展功能,我们也会同步更新以及根据客户需求考虑扩展,后续对一些强功能的新协议也会计划实现支持。

Q: 有些协议功能重叠,在使用的时候如何选择?

A: 根据应用场景,具体分析功能要求、延迟要求和网络环境。如实时性要求较高,且需要支持实时控制(暂停、快进、快退、定位)的应用,通常使用 RTSP;如实时性要求较高,且需要支持实时互动的应用,则可以使用 SIP 创建会话;如在浏览器中播放的大规模直播,对稳定性和兼容性要求较高,对实时性没有高要求,则可以考虑使用 RTMP。

更多相关问题请参考以下协议目录中的 Issues 板块