首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >已连接到Phantom 4 Pro,但无法接收视频

已连接到Phantom 4 Pro,但无法接收视频
EN

Stack Overflow用户
提问于 2017-01-15 23:03:31
回答 3查看 350关注 0票数 0

我遵循了全景演示示例,并连接到无人机。我得到了一个型号正确的DJIAircraft和一个DJICamera,但视频永远不会开始(没有图像& didReceiveVideoData永远不会被调用)。如果我切换到DJI GO 4应用程序,我可以看到实时视频源。有什么想法吗?

代码语言:javascript
复制
//
//  CaptureViewController.swift
//

// MARK: - Source https://developer.dji.com/mobile-sdk/documentation/ios-tutorials/PanoDemo.html

import UIKit
import VideoPreviewer
import ToastSwiftFramework

class CaptureViewController: UIViewController, DJISDKManagerDelegate, DJICameraDelegate, DJIPlaybackDelegate, DJIMissionManagerDelegate, DJIFlightControllerDelegate {
    @IBOutlet var fpvPreviewView: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()

        tabBarItem.title = "CAPTURE".localized

        VideoPreviewer.instance().setView(fpvPreviewView)
        self.registerApp()
    }

    func registeredAppWithError(error: Error?) {
        guard error == nil else {
            makeToast("Error registering app \(error)")

            return
        }

        VideoPreviewer.instance().start()
    }

    //MARK: - DJI Delegate

    func registerApp() {
        DJISDKManager.registerApp("******************", with: self)
    }

    func sdkManagerDidRegisterAppWithError(_ error: Error?) {
        guard error == nil else {
            makeToast("Error registering SDK Manager \(error)")

            return
        }

        DJISDKManager.startConnectionToProduct()

        makeToast("Registered app with DJISDKManager")
    }

    func camera(product: DJIBaseProduct?) -> DJICamera? {
        guard let aircraft = DJISDKManager.product() as? DJIAircraft else { return nil }

        return aircraft.camera
    }

    func sdkManagerProductDidChange(from oldProduct: DJIBaseProduct?, to newProduct: DJIBaseProduct?) {
        makeToast("Found \(newProduct?.model ?? "")")

        guard let camera = camera(product: newProduct) else {
            makeToast("No camera!")

            return
        }

        makeToast("Camera \(camera.displayName)")

        camera.delegate = self
        camera.playbackManager?.delegate = self
    }

    var receivedVideo = false

    func camera(_ camera: DJICamera, didReceiveVideoData videoBuffer: UnsafeMutablePointer<UInt8>, length size: Int) {
        makeToast("Receiving video!")

        VideoPreviewer.instance().push(videoBuffer, length: Int32(size))
    }

    func playbackManager(_ playbackManager: DJIPlaybackManager, didUpdate playbackState: DJICameraPlaybackState) {
        makeToast("PlaybackState: \(playbackState.playbackMode)")
    }
}
EN

回答 3

Stack Overflow用户

发布于 2017-03-23 18:26:21

我知道现在已经很晚了,但是我们在我们的应用中遇到了类似的问题,问题是当DJI无人机连接时,同时我们在连接时无法获得摄像头的实例。在连接后添加5-10秒的延迟。我已经做了类似的事情,现在它对每一架无人机都有效。

代码语言:javascript
复制
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(7 * Double(NSEC_PER_SEC))), dispatch_get_main_queue(), {
                    let camera = ConnectedDroneManager.sharedDroneInstance.fetchCamera()
                camera?.delegate = self
                camera?.playbackManager?.delegate = self

})

希望这对你有帮助。

票数 0
EN

Stack Overflow用户

发布于 2017-03-23 23:04:04

您应该在应用程序连接到DJI产品后启动视频流。将VideoPreviewer.instance().start()放到sdkManagerProductDidChange委托方法中可以解决这个问题。

代码语言:javascript
复制
func sdkManagerDidRegisterAppWithError(_ error: Error?) {
    guard error == nil else {
        makeToast("Error registering SDK Manager \(error)")

        return
    }

    DJISDKManager.startConnectionToProduct()
    VideoPreviewer.instance().start()

    makeToast("Registered app with DJISDKManager")
}
票数 0
EN

Stack Overflow用户

发布于 2017-01-20 13:12:45

大疆的iOS PanoDemo是用Objective-C编写的,我已经在幻影4Pro上试用过了,演示应用程序可以成功地显示实时视频。看起来你正在使用Swift编写自己的DJI SDK应用程序。

在你上面显示的代码中,我认为你没有成功注册应用程序。在registerApp() fun中,您在DJISDKManager.registerApp()方法中传递了“*”,这是不正确的,您应该使用您的Xcode的捆绑包ID在https://developer.dji.com/user/apps/开发者网站上创建一个应用程序密钥,然后将其粘贴到registerApp()方法中。

有关更多信息,您可以在Github:https://github.com/dji-sdk/Mobile-SDK-iOS/tree/master/Sample%20Code/SwiftSampleCode上遵循DJI Swift示例代码,了解如何制作自己的DJI SDK应用程序。希望这对你有所帮助!

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41662582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档