大疆论坛原贴:https://djisdksupport.zendesk.com/hc/zh-cn/community/posts/4406998758937
调试使用机型:Mavic mini
需求
- 获取标准的264视频
- 按国标协议推送海康视频平台
问题记录
- dji技术支持称:
纯正的H.264视频流要从provideTranscodedVideoFeed这个函数接口中获取
- 实际发现:
官方DEMO中,VideoFeederView.java用getPrimaryVideoFeed,本地画面是正常的。用provideTranscodedVideoFeed,画面就花屏了,如下所示:
- Mavic Mini使用getPrimaryVideoFeed,但是获取的是DJI格式的H.264直接送出去是没法解码播放的
- Mavic Mini 不支持从provideTranscodedVideoFeed获取标准264
- 御2系列的飞机的视频流是直接从provideTranscodedVideoFeed获取H.264视频流,现场并无此型号~~~
- 很多机型使用的都是不同的接口,需要对各种机型做不同的适配,其余机型都是用getPrimaryVideoFeed
- getPrimaryVideoFeed获取的是DJI格式的H.264所以只能用于显示,不使用LiveStreamManager无法推流。要想推流则必须要使用provideTranscodedVideoFeed或者把getPrimaryVideoFeed送到DJICodecManager做进一步解码称Yuv数据,看机型出数据,NV21和YUV420P都会有。要provideTranscodedVideoFeed出数据,你需要创造个DJICodecManager,在getPrimaryVideoFeed的回调里把数据送到解码器解码,后面会重新编码从provideTranscodedVideoFeed出数据。御2系列的飞机最特殊,什么都不用做,直接监听provideTranscodedVideoFeed就可以了。
- getPrimaryVideoFeed的回调里调用sendDataToDecoder就可以了,provideTranscodedVideoFeed里面应该就会出数据,编码是内部自动做的
总的来说
想要获取dji的标准264,是需要先:getPrimaryVideoFeed=》sendDataToDecoder=》provideTranscodedVideoFeed,不能直接使用provideTranscodedVideoFeed。