大牛直播跨平台RTSP/RTMP转RTMP转发SDK

在实时流媒体系统中,一个优秀的转发模块,低延迟是基础能力,而不是额外加分项。除此之外,还需要具备高稳定性、灵活的转发控制、完善的状态反馈机制,以及尽可能低的资源占用,才能满足安防监控、直播分发、远程调度、无人机回传、内网流媒体汇聚等复杂场景的长期运行需求。

大牛直播SDK(SmartMediaKit)跨平台 RTSP/RTMP 转 RTMP 转发 SDK,基于全自研音视频内核构建,支持从 RTSP、RTMP 等实时流中拉取音视频数据,并低延迟转推到 RTMP 服务器。模块支持多路并发转发、本地预览、实时静音、URL 快速切换、录像扩展、快照扩展、音频转 AAC、实时码率反馈和推拉流状态回调,便于开发者快速构建稳定、低延迟、可观测的多路流媒体转发系统。

目前,该模块已覆盖 Windows、Linux(x86_64 / aarch64)、Android、iOS、鸿蒙NEXT 等平台,适用于安防视频上云、摄像头流媒体汇聚、RTSP 转直播平台、内网流转外网、移动端转发、边缘节点分发以及国产化实时音视频系统建设等场景。

整体设计如下:

1. 拉流:通过RTSP直播播放SDK的数据回调接口,拿到音视频数据;

2. 转推:通过RTMP直播推送SDK的编码后数据输入接口,把回调上来的数据,传给RTMP直播推送模块,实现RTSP数据流到RTMP服务器的转发;

3. 录像:如果需要录像,借助RTSP直播播放SDK,拉到音视频数据后,直接存储MP4文件即可;

4. 快照:如果需要实时快照,拉流后,解码调用播放端快照接口,生成快照,因为快照涉及到video数据解码,如无必要,可不必开启,不然会额外消耗性能。

5. 拉流预览:如需预览拉流数据,只要调用播放端的播放接口,即可实现拉流数据预览;

6. 数据转AAC后转发:考虑到好多监控设备出来的音频可能是PCMA/PCMU的,如需要更通用的音频格式,可以转AAC后,在通过RTMP推送;

7. 转推RTMP实时静音:只需要在传audio数据的地方,加个判断即可;

8. 拉流速度反馈:通过RTSP播放端的实时码率反馈event,拿到实时带宽占用即可;

9. 整体网络状态反馈:考虑到有些摄像头可能会临时或异常关闭,RTMP服务器亦是,可以通过推拉流的event回调状态,查看那整体网络情况,如此界定:是拉不到流,还是推不到RTMP服务器。

多路RTSP/RTMP转RTMP推送SDK设计架构图:

多路RTMP/RTSP转RTMP推送SDK功能支持:

  1. 支持拉取rtmp流;
  2. 支持拉取rtsp流;
  3. Windows支持本地flv文件转发(支持制定文件位置转发,或转发过程中seek);
  4. 支持本地预览;
  5. 支持转发过程中,实时静音;
  6. 支持转发过程中,切换rtmp/rtsp url,此外,windows平台还支持切换本地flv文件;
  7. 支持录像模块扩展,可边转发边录制,每个文件录制开始结束,均有状态回馈;
  8. 支持内网RTSP网关模块扩展,拉取的流数据,可以流入到内网RTSP网关模块,对外微型RTSP媒体流服务(RTSP url),便于内网访问;
  9. 音频:AAC,并支持拉流后的音频(PCMU/PCMA,Speex等)转AAC后再转发;
  10. 视频:H.264、H.265,支持h265转发(rtsp/rtmp h265转rtmp h265推送)

典型应用场景:

对应Demo:

  •  Windows测试程序:SmartStreamRelayDemo.exe;
  •  Windows C++工程:WIN-RelaySDK-CPP-Demo;
  •  Windows C#工程:WIN-RelaySDK-CSharp-Demo;
  •  Android工程:SmartRelayDemoV2;
  •  iOS工程:SmartiOSRelayDemoV2。