使用新的DJI-UXSDK-iOS 4.7编译应用时出错,找不到FFmpeg库

时间:2018-08-23 18:41:44

标签: dji-sdk

我刚刚将DJI-UXSDK-iOS上传到项目的最新版本(4.7),但出现编译错误:

dyld: Library not loaded: @rpath/FFmpeg.framework/FFmpeg Referenced from: /Users/nachocarnicero/Library/Developer/CoreSimulator/Devices/6107CAFD-8BA7-44D6-A059-A971A22BF695/data/Containers/Bundle/Application/44688981-49A3-4F6F-91E2-15E5381BBBB8/perceptionios.app/Frameworks/DJIUXSDK.framework/DJIUXSDK Reason: image not found

因此基本上没有找到FFmpeg库,我认为这与以下事实有关:根据DJI Mobile SDK 4.7的发行说明,现在将视频反馈作为小部件包含在内:

  

使用DJIWidget替换了VideoPreviewer,以支持硬件编码

因此,以前FFmpeg库已包含在VideoPreviewer框架中,但现在我想它必须以其他方式包含,有没有人设法用此新版本成功编译项目?

谢谢

Nacho

4 个答案:

答案 0 :(得分:6)

正如Lisa所说,问题是我没有包含DJIWidget文件。但是,由于包含内容并不容易,并且由于文档尚未更新,因此我将在此处发布在上传至DJI Mobile SDK 4.7时成功编译iOS应用的步骤:

  • 在Xcode中打开项目,然后从VideoPreviewer文件夹中删除Frameworks文件夹
  • 克隆Mobile-UXSDK-iOS存储库。 git clone https://github.com/dji-sdk/Mobile-UXSDK-iOS
  • 将文件夹Mobile-UXSDK-iOS/Sample Code/DJIWidget复制到*.xcworkspace所在的根文件夹中。确保包括该文件夹的所有内容:

Folder content

  • 然后将DJIWIdget.xcodeprojFFmpeg.framework拖放到Xcode项目的Framework文件夹中,如以下屏幕快照所示:

    tree structure

  • 转到项目设置,在常规标签下,导航至Embedded Binaries并添加 FFmpeg框架,如{{0}下的屏幕截图所示}

  • 然后,无论您在代码<VideoPreviewer/VideoPreviewer.h>中的导入位置,都应将其替换为<DJIWidget/DJIWidget.h>

  • 最后,您必须在代码中用重命名的组件VideoPreviewer替换对DJIVideoPreviewer组件的所有调用。因此,例如[[VideoPreviewer instance] start];现在应该是[[DJIVideoPreviewer instance] start]

就是这样,之后应该编译您的应用,并且您应该获得无人机的视频反馈。

答案 1 :(得分:3)

您似乎错过了引入DJIWidget file的机会-尝试将其集成,可以解决崩溃问题。如果您需要有关如何进行集成的示例,请参见我们的Sample Code。此外,如果您以前使用过ios-videopreviewer项目,则必须将其删除。我们已经使用此技巧更新了发行说明。

答案 2 :(得分:0)

Nacho的回答使我了解了很多,但是我还需要将DJIWidget框架添加到添加了FFMPEG框架的Embedded Binaries部分。将DJIWidget项目拖到您的框架文件夹中后,在按此部分底部的“ +”后,它将显示出来:

enter image description here

DJIWidget项目也已移至其自己的单独URL:https://github.com/dji-sdk/DJIWidget

答案 3 :(得分:0)

在项目的“构建设置”菜单中的“框架”搜索路径下的路径列表中包括“ $ {PODS_ROOT} / DJIWidget / FFmpeg”。您需要将其添加到调试和发布中。