新的 XCode/Swift 版本带来了使用二进制依赖项的能力。在我看来,这是为 FFMpeg 创建 SPM 包的理想时机。
然而,虽然我去年花了一年时间学习使用 Swift 编写代码,但实际上我并不完全熟悉如何构建库,尤其是那些像 FFmpeg 这样复杂的库,具有所有可配置库和第三方依赖项。
有 kewlbear's iOS build scripts ,但这些适用于 iOS/tvOS,理想情况下,FFMpeg SPM 包也可用于 MacOS。它也没有针对最新的 Xcode 和 Swift 版本进行更新。
我个人的兴趣只是音频,我不需要太多花里胡哨的东西,但我认为理想的情况是一个完整的包,包含完整的源代码和它需要的任何依赖项,然后当它被用作包依赖项,编译器将只使用它需要的部分。
我想我的问题是......我将如何理想地为此目的编译 ffmpeg 代码。我正在尝试 follow the directions for compiling yourself , 但我在编译 gettext
时卡住了,因为我不确定是否应该按照说明(在 gettext
源代码中)编译一个胖二进制文件对于多种架构,当我尝试运行时:
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
CPP="gcc -E" CXXCPP="g++ -E"
我收到以下错误:
checking whether the C compiler works... no configure: error: in
`/Users/nolainecrusher/Downloads/FFMpeg-source/gettext-0.21/gettext-runtime':
configure: error: C compiler cannot create executables See
`config.log' for more details configure: error: ./configure failed for
gettext-runtime
和 config.log
并没有真正告诉我任何有用的信息:
这是我在日志末尾看到的:
mkdir_p='$(MKDIR_P)' oldincludedir='/usr/include' pdfdir='${docdir}'
prefix='/usr/local' program_transform_name='s,x,x,' psdir='${docdir}'
sbindir='${exec_prefix}/sbin' sharedstatedir='${prefix}/com' subdirs='
gettext-runtime libtextstyle gettext-tools' sysconfdir='${prefix}/etc'
target_alias=''
我觉得我的做法可能是错误的,但我不确定正确的方法是什么。
最佳答案
请参阅以下内容:
A Swift wrapper package for FFmpeg和 A C wrapper package for FFmpeg
SwiftFFmpeg 假定 ffmpeg 已安装在本地并将与这些库链接。此外,SwiftFFmpeg 使用 CFFmpeg 作为包依赖项,您的应用程序可以使用 SwiftFFmpeg 作为依赖项。
如果您想查看用于编译 ffmpeg(x86_64 和 arm64)的构建脚本,请查看 my own audio player project .
关于ios - 构建用于 Swift 的 FFmpeg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64507539/