M300挂载相机,无法获取相机画面
Completed运行官方的示例demo,在M210上挂载一个相机,demo里面可以显示FPV以及挂载的相机的画面,一共两个,因为目前没有第二个相机,所以没有测试按钮left+right。但当把相机装到M300RTK无人机中之后,只能获取fpv的画面,另外一个画面显示未知。
之后我设置了相机源,LEFT_CAM、RIGHT_CAM、TOP_CAM三个显示的都是未知,只有FPV_CAM可以显示fpv画面。
-
![](https://djisdksupport.zendesk.com/attachments/token/NTy5AtOzCmCbuJuC0cAk8pvEi/?name=image.png) CAMERA的含义是主相机。你将payload挂载的位置设置为主视频源之后,也是无法显示画面吗? ![](https://djisdksupport.zendesk.com/attachments/token/JadEHie3um6e7dTnPpXE6OQXU/?name=image.png) -
CUS H264和DJI H264决定的其实是视频数据的传输通道,传输的视频流格式都是H264的。之前为了解释PSDK视频数据可以从两个位置获取的时候可能给你带来了误解。 我重新从头整理一下,这两个类的代码被我改来改去的。重新理一下逻辑层。看看是不是哪里画面被挤占了 -- 好的,如果仍存在问题可以将VideoFeederView.java和VideoFeedView.java发给我分析。 上传地址:https://pan-sec.djicorp.com/s/giTQdBHs3gJGPJf -
我查看了你的代码,它的确是存在错误的。在VideoFeedView里,你新增了一个方法用于实现编码器获取视频流数据,但在这个方法里你对这个编码器添加了两组视频数据,一个是通过setVideoDataReceivedCallback获取到的,还有一个是VideoFeeder.VideoDataListener获取到的。 ![](https://djisdksupport.zendesk.com/attachments/token/dpMLImIo3vYX24LVWBXRkmm1A/?name=image.png) 而这个VideoFeeder正是你通过provideTranscodedVideoFeed获取到的。 ![](https://djisdksupport.zendesk.com/attachments/token/fLqDQoDnuOCrfc7h8yjrU4Dih/?name=image.png) 一个编解码器建议是只接收一组视频流数据,你是想要接收哪一种呢? -
本来想用payload.isDJIVideoStreamingChannelAvailable()来试试优化的,但是好像没有用,因为FPV不属于payload,目前我就挂载了一个单云台相机,换句话说就是,payload.isDJIVideoStreamingChannelAvailable()永远返回的是flase?那如果我挂载的是双云台,两个相机,一个是DJI编码、一个是CUS编码,payload.isDJIVideoStreamingChannelAvailable()是如何返回的?其实我不懂的是双云台+两个相机。这样算一个负载还是算两个负载。如果算两个负载的话,获取负载应该也像相机那样有排序吧?
-
1、其实我不懂的是双云台+两个相机。这样算一个负载还是算两个负载。如果算两个负载的话,获取负载应该也像相机那样有排序吧? -->之前有提到通过getCameras和Aircraft.getpayloads获取到飞机当前挂载两种负载的列表,这样就可以获取到两种不同类型的负载。然后可以通过getIndex 获取到位置信息,不知道这是不是你想要获取的排序。 2、那如果我挂载的是双云台,两个相机,一个是DJI编码、一个是CUS编码,payload.isDJIVideoStreamingChannelAvailable()是如何返回的 -->DJI H264和CUS H264更多决定是传输通道,PSDK传输视频流数据统一使用的是H264编码格式。如果你挂了两个,那么就可以通过问题1提到的getpayloads获取到全部payload,通过payload.isDJIVideoStreamingChannelAvailable()来判断它的视频流需要从哪里获取,true就是DJI通道,false就是CUS通道。 3、本来想用payload.isDJIVideoStreamingChannelAvailable()来试试优化的,但是好像没有用,因为FPV不属于payload,目前我就挂载了一个单云台相机,换句话说就是,payload.isDJIVideoStreamingChannelAvailable()永远返回的是flase? -->如果你只挂了一个CUS通道的相机,那么只可以获取到一个paylod,那么payload.isDJIVideoStreamingChannelAvailable()返回的就是false。FPV镜头在SDK内部无法识别成camera,它无法拍照和录制,只可以获取视频流
Please sign in to leave a comment.
Comments
48 comments