我刚刚将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
答案 0 :(得分:6)
正如Lisa所说,问题是我没有包含DJIWidget文件。但是,由于包含内容并不容易,并且由于文档尚未更新,因此我将在此处发布在上传至DJI Mobile SDK 4.7时成功编译iOS应用的步骤:
VideoPreviewer
文件夹中删除Frameworks
文件夹Mobile-UXSDK-iOS
存储库。 git clone https://github.com/dji-sdk/Mobile-UXSDK-iOS
Mobile-UXSDK-iOS/Sample Code/DJIWidget
复制到*.xcworkspace
所在的根文件夹中。确保包括该文件夹的所有内容:
然后将DJIWIdget.xcodeproj
和FFmpeg.framework
拖放到Xcode项目的Framework
文件夹中,如以下屏幕快照所示:
转到项目设置,在常规标签下,导航至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项目拖到您的框架文件夹中后,在按此部分底部的“ +”后,它将显示出来:
DJIWidget项目也已移至其自己的单独URL:https://github.com/dji-sdk/DJIWidget
答案 3 :(得分:0)
在项目的“构建设置”菜单中的“框架”搜索路径下的路径列表中包括“ $ {PODS_ROOT} / DJIWidget / FFmpeg”。您需要将其添加到调试和发布中。