DJI-Mobile-SDK-Tutorials / Android-VideoStreamDecodingSample

This sample project demonstrates how to use FFmpeg for video frame parsing and to use MediaCodec for hardware decoding on DJI Products.
MIT License
170 stars 81 forks source link

Unable to login and register product with USB connect. Can't get TranscodedVideoFeed via USB #45

Open oscarmore2 opened 5 years ago

oscarmore2 commented 5 years ago

Hi I was downloaded the project and it was build successfully. However while I run the project in the phone, the aircraft can not be discovered, and it toasted "Register sdk fails, check network is available". and I check the network connection which had connected to Wifi.

I am in China, my phone is Xiaomi, but I also tried Smartisan and it has same problem. I was ok to log in my user name in Dji go APP, but same set up does't works for this version 4.8 project.

PS:

I also tried to use an existing Logged-in project to try to get videofeeder via TranscodedVideoFeed, My connection with the pad is also usb, but the Feeder callback doesn't call at all. and it has a log told me that: LocalConnector: Cannot connect the wmserver-data-reciever from time to time, don't know if this log is relateded to usb connection.

Wait for your reply.

oscarmore2 commented 5 years ago

2018-12-01 15:05:54.520 17582-17598/? W/LocalConnector: Cannot connect the wmserver-data-reciever 2018-12-01 15:05:55.329 29671-29677/com.flouav.flopilot I/zygote64: Do full code cache collection, code=502KB, data=312KB 2018-12-01 15:05:55.336 29671-29677/com.flouav.flopilot I/zygote64: After code cache collection, code=453KB, data=242KB 2018-12-01 15:05:55.361 1683-24092/? I/WifiService: getDhcpInfo uid=10062 2018-12-01 15:05:55.362 1683-24092/? I/WifiService: getConnectionInfo uid=10062 2018-12-01 15:05:55.363 1683-24092/? I/WifiService: getWifiEnabledState uid=10062 2018-12-01 15:05:55.365 1683-24092/? I/WifiService: startScan uid=10062 2018-12-01 15:05:55.368 14464-14491/? I/NetworkLocationManager: start get current Location 2018-12-01 15:05:55.369 14464-14464/? I/MetokLocationProvider: report position from 2 2018-12-01 15:05:55.373 1683-3043/? D/NpProxy: handleMessage what - 4 2018-12-01 15:05:55.374 1683-3043/? D/NpProxy: Location: Location[network 31.198794,121.432881 hAcc=40 et=+3d3h31m37s680ms vAcc=??? sAcc=??? bAcc=??? {Bundle[{networkLocationType=wifi, source=2}]}] 2018-12-01 15:05:55.374 1683-3043/? V/LocSvc_HIDL_OsNpGlue_jni: [onJavaLocationChanged][177] [HC] =>> [HS] 2018-12-01 15:05:55.381 753-753/? V/LocSvc_HIDL_IzatOsNpGlue: [locationChanged][47] [HS] <<<<= [HC] 2018-12-01 15:05:55.521 17582-17598/? W/LocalConnector: Cannot connect the wmserver-data-reciever

Michael-DJI commented 5 years ago

@oscarmore2 hey, for register issue, the http connection of register will have some problem occasionally when using 4G of china mobile, please try to connect to a wifi network and retry. for video issue, could you please let me know what feature you were developing? for Mavic 2 Pro or Mavic 2 Zoom, you need firstly display it in a surface or textureView, after that you could get the video data from TranscodedVideoFeed, because the data is generated by a re-encoder, so you have to display it first then the re-encoder could encode the the video to h264 stream data.

oscarmore2 commented 5 years ago

[Update]: I Pulled the lastest version of Video decoding simple, which includeded dji sdk 4.10. Then build a app to my huwawei m6 pad, and connect it to marvic pro, I found the listener from provideTranscodedVideoFeed() feeder is never invoked at all, and the demo custom decoder surface is totally black. But when I connect to marvic 2, the provideTranscodedVideoFeed() feeder works fine, I could easily fetch the raw video data for pushing or caching. https://cdn.flouav.com/screenshot/WechatIMG1350.jpeg

the code of provideTranscodedVideoFeed() in MainActivity of this project:

if (demoType == DemoType.USE_SURFACE_VIEW_DEMO_DECODER) {
        if (VideoFeeder.getInstance() != null) {
                standardVideoFeeder = VideoFeeder.getInstance().provideTranscodedVideoFeed();
                standardVideoFeeder.addVideoDataListener(mReceivedVideoDataListener);
        }
}