zl程序教程

您现在的位置是:首页 >  其他

当前栏目

记一次对接大疆SDK获取视频H.264问题过程

2023-02-19 12:21:24 时间

大疆论坛原贴:https://djisdksupport.zendesk.com/hc/zh-cn/community/posts/4406998758937

调试使用机型:Mavic mini

需求

  1. 获取标准的264视频
  2. 按国标协议推送海康视频平台

问题记录

  1. dji技术支持称:纯正的H.264视频流要从provideTranscodedVideoFeed这个函数接口中获取
  2. 实际发现:官方DEMO中,VideoFeederView.java用getPrimaryVideoFeed,本地画面是正常的。用provideTranscodedVideoFeed,画面就花屏了,如下所示:
  1. Mavic Mini使用getPrimaryVideoFeed,但是获取的是DJI格式的H.264直接送出去是没法解码播放的
  2. Mavic Mini 不支持从provideTranscodedVideoFeed获取标准264
  3. 御2系列的飞机的视频流是直接从provideTranscodedVideoFeed获取H.264视频流,现场并无此型号~~~
  4. 很多机型使用的都是不同的接口,需要对各种机型做不同的适配,其余机型都是用getPrimaryVideoFeed
  5. getPrimaryVideoFeed获取的是DJI格式的H.264所以只能用于显示,不使用LiveStreamManager无法推流。要想推流则必须要使用provideTranscodedVideoFeed或者把getPrimaryVideoFeed送到DJICodecManager做进一步解码称Yuv数据,看机型出数据,NV21和YUV420P都会有。要provideTranscodedVideoFeed出数据,你需要创造个DJICodecManager,在getPrimaryVideoFeed的回调里把数据送到解码器解码,后面会重新编码从provideTranscodedVideoFeed出数据。御2系列的飞机最特殊,什么都不用做,直接监听provideTranscodedVideoFeed就可以了。
  6. getPrimaryVideoFeed的回调里调用sendDataToDecoder就可以了,provideTranscodedVideoFeed里面应该就会出数据,编码是内部自动做的

总的来说

想要获取dji的标准264,是需要先:getPrimaryVideoFeed=》sendDataToDecoder=》provideTranscodedVideoFeed,不能直接使用provideTranscodedVideoFeed。