大牛直播跨平台RTSP/RTMP转RTMP转发SDK
一个好的转发模块,首先要低延迟!其次足够稳定、灵活、有状态反馈机制、资源占用低,如果可以跨平台,还能以SDK形式提供,会给开发者提供更大的便利!
大牛直播跨平台RTSP/RTMP转RTMP转发SDK目前已全面覆盖Windows、Android和iOS平台,行业内以高稳定、低延迟、超低资源占用和强大的功能拓展能力深受开发者欢迎。
整体设计如下:
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功能支持:
- 支持拉取rtmp流;
- 支持拉取rtsp流;
- Windows支持本地flv文件转发(支持制定文件位置转发,或转发过程中seek);
- 支持本地预览;
- 支持转发过程中,实时静音;
- 支持转发过程中,切换rtmp/rtsp url,此外,windows平台还支持切换本地flv文件;
- 支持录像模块扩展,可边转发边录制,每个文件录制开始结束,均有状态回馈;
- 支持内网RTSP网关模块扩展,拉取的流数据,可以流入到内网RTSP网关模块,对外微型RTSP媒体流服务(RTSP url),便于内网访问;
- 音频:AAC,并支持拉流后的音频(PCMU/PCMA,Speex等)转AAC后再转发;
- 视频: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。