파노라마 데모 예제를 따라 드론과 연결되어 있습니다. 나는 올바른 모델과 DJICamera를 가진 DJIAircraft를 얻고 있지만 비디오는 결코 시작하지 않습니다 (아무런 이미지도 없습니다 & didReceiveVideoData는 결코 호출되지 않습니다). DJI 4 앱으로 전환하면 라이브 비디오 피드를 볼 수 있습니다. 어떤 아이디어? DJI의 아이폰 OS PanoDemo은 오브젝티브 C로 작성팬텀 4에 연결되었지만 비디오를 수신하지 못했습니다.
//
// 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)")
}
}
동일한 문제가 있습니다. 찾으십니까? –
예, 리모콘, 브리지 장치 및 개발 장치를 다시 시작하면 제대로 작동합니다. –