MSDK V5使用了跨平台的推流直播库,是一个so库。DJI Pilot 2和MSDK V5都引用了这个库,因此二者的直播功能和效果应该是相同的。
【推流直播原理】:
从当前的SurfaceView中获取用于渲染的YUV数据,将其重新编码成H.264数据后以一种推流协议将视频流推送到目标服务器的URL上。当目标服务器接收到视频流后,服务器进行解码和渲染。
【MSDK V4和V5的差异】:
- 无论是V4还是V5,都不可以在后台推流。当前页面必须得有Surface画面渲染,不得最小化,跳转页面。
- V5支持RTMP(不支持RTMPS)、国标GB28181、RTSP和Agora声网(WebRTC),V4仅支持RTMP。
- V5的推流直播不带音频数据(但是为了适配各大直播平台,会插入假音频数据),V4的推流直播带有音频数据。
【调用流程】
【直播协议设置】
- RTMP,需要setUrl。
- GB28181,需要setServerIP,setServerPort,setServerID,setAgentID,setPassword,setLocalPort和setChannel。
- RTSP,需要setUserName,setPassword和setPort(需要设置为8554)。
- Agora,需要setChannelId,setUid,setToken和enableSafety。
【拓展】
本身DJI的H.264码流中的SEI字段在行业版V3固件以前是空的,在V3固件之后添加了信息,由于维护成本等诸多因素,我们不对外开放DJI的H.264码流的SEI的解析。我们了解到有的用户希望在H.264码流中的SEI中解析出无人机的地理位置和姿态信息,我们提供了更好的解决方案。
- 如果你使用Mobile SDK与私有云连接,你可以通过Mobile SDK的接口获取这些信息通过移动设备的网络传输到私有云平台。
- 如果你使用DJI Pilot 2与私有云连接,你可以通过上云API将这些信息通过移动设备的网络传输到私有云平台。
【注意】
- 在调用VideoDecoder的构造函数的时候,isForLiveStream必须设置为true,详情请阅读第五章:视频流解码。
- 建议对LiveStreamStatus增加监听,着重关注getPacketLoss,getPacketCacheLen和getRtt的结果来判断当前的网络状况。
- 5.8版本开始弃用了VideoDecoder,最新的CameraStreamManager不需要额外设置直播开关。
评论
3 条评论
你好,基于5.7.1的MSDK开发了个app怎么实现直播推流到司空2平台?就像pilot2 app一样推到司空平台。还是说我们要自己维护一个RTMP服务器转发到大疆司空?
司空2是一个封闭平台。没有对外提供这种API
明白了,就是要实现类似司空2这种功能,我们要自己开发个后台推流
请登录写评论。