之前,我们博客 https://blog.csdn.net/renhui1112/article/details/105624392 提到,Android平台RTMP多实例推送的几种情况探讨,简单来说有以下三种情况:
- 多路编码,多个实例分别推送到不同的RTMP URL(如Android采集板卡同时接2路出去);
- 同一路编码,多个实例分别推送到不同的RTMP URL(如推送到内网、外网不同的RTMP服务器);
- 部分路编码、部分路对接编码后的H.264/AAC数据,多个实例分别推送到不同的RTMP URL(混合推)。
对应Windows平台,多路编码的情况,比如分别推送屏幕和摄像头,分别对应不同的RTMP URL,便于客户端选择要不要播放屏幕或摄像头。
同一路编码,多实例推送的意义在于,同一路数据,流向不同的RTMP Server,比如一个到内网服务器,一个到外网服务器,大牛直播SDK的不像部分推送模块,设计的比较死板,每路都要编码,只需要调用以下接口,多设置其他推送的URL即可,这样保证一路编码,一个推送实例,实现不同的RTMP数据流向:
/* 设置推送的URL 支持同时推送到多个RTMP服务器上, 最多可以同时支持推到三个服务器上 为设置多个URL,请调用多次 成功返回 NT_ERC_OK */ NT_UINT32(NT_API *SetURL)(NT_HANDLE handle, NT_PCSTR url, NT_PVOID pReserve);
再灵活的策略,就是有些路编码,有些路不编码(接入外部编码后的音视频数据,直接转发),直接对应不同的推送实例出去,这种更智能,感兴趣的开发者,可以关注 github 试试看看。