我们的目标是创建一个隐藏我们内部代码的框架,并为我们的客户提供 SDK。我们已经考虑创建满足我们要求的 XCFramework。互联网上也建议使用 Umbrella 框架,但主要建议避免这种方法。我们的框架依赖于我们通过 Pod 使用的一些第三方库。
问题:XCFramework 不编译 pods 框架。我们收到类似“未找到 Xyz(Pod) 模块”的错误消息。即使我们从客户端添加 pod,它也不起作用。
创建 XCFramework 的代码如下
1)为iOS平台创建一个存档
xcodebuild archive -workspace ABC.xcworkspace \
-scheme ABC \
-sdk iphoneos \
-archivePath "./archives/ios_devices.xcarchive" \
BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
SKIP_INSTALL=NO
Run Code Online (Sandbox Code Playgroud)
2) 为 iOS-Simulator 平台创建存档
xcodebuild archive -workspace ABC.xcworkspace \
-scheme ABC \
-sdk iphonesimulator \
-archivePath "./archives/ios_simulators.xcarchive" \
BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
SKIP_INSTALL=NO
Run Code Online (Sandbox Code Playgroud)
3) 从档案创建一个 XCFramework
xcodebuild -create-xcframework \
-framework ./archives/ios_devices.xcarchive/Products/Library/Frameworks/ABC.framework \
-framework ./archives/ios_simulators.xcarchive/Products/Library/Frameworks/ABC.framework \
-output build/ABC.xcframework
Run Code Online (Sandbox Code Playgroud)
我们成功获得了 ABC XCFramework,但 XCFramework 中不包含依赖项。有什么解决办法吗?或者有什么方法可以将框架搜索路径设置为客户端?或任何替代方法?
我们正在开发一个项目,该项目允许我们使用一些低通滤波器和高通滤波器以 5k Hz 采样率从麦克风录制一些声音。
我们正在使用什么
为此,我们使用AvaudioEngine 。
我们使用AVAudioConverter来降低采样率。
我们使用AVAudioUnitEQ作为低通和高通滤波器。
代码
let bus = 0
let inputNode = engine.inputNode
let equalizer = AVAudioUnitEQ(numberOfBands: 2)
equalizer.bands[0].filterType = .lowPass
equalizer.bands[0].frequency = 3000
equalizer.bands[0].bypass = false
equalizer.bands[1].filterType = .highPass
equalizer.bands[1].frequency = 1000
equalizer.bands[1].bypass = false
engine.attach(equalizer) //Attach equalizer
// Connect nodes
engine.connect(inputNode, to: equalizer, format: inputNode.inputFormat(forBus: 0))
engine.connect(equalizer, to: engine.mainMixerNode, format: inputNode.inputFormat(forBus: 0))
engine.connect(engine.mainMixerNode, to: engine.outputNode, format: inputNode.inputFormat(forBus: 0))
let outputFormat = AVAudioFormat(commonFormat: .pcmFormatInt16,
sampleRate: 5000,
channels: 1,
interleaved: …
Run Code Online (Sandbox Code Playgroud) frequency lowpass-filter swift highpass-filter avaudioengine
我们正在开发一个从外部麦克风录制声音的项目。出于分析目的,我们需要大约 5k Hz 的采样率。
我们正在使用AvAudioEngine来录制语音。我们知道 Apple 设备希望能够以特定速率进行录制,因此我们使用AVAudioConverter来降低采样率。
但正如您所知,它与压缩类似,因此我们降低采样率越低,文件大小和文件持续时间影响相同。目前正在发生什么(如果我错了,请纠正我)。
问题
**问题是降低采样率、缩短文件长度及其对计算和分析的影响。例如,1小时的录音被降级为45分钟。所以假设如果我们对 5 分钟的时间间隔进行分析,就会出错
对此最好的解决方案是什么?**
询问
我们在互联网上进行了搜索,但我们无法弄清楚installTap上的缓冲区大小有何影响?在当前代码中,我们将其设置为2688。
谁能澄清一下吗?
代码
let bus = 0
let inputNode = engine.inputNode
let equalizer = AVAudioUnitEQ(numberOfBands: 2)
equalizer.bands[0].filterType = .lowPass
equalizer.bands[0].frequency = 3000
equalizer.bands[0].bypass = false
equalizer.bands[1].filterType = .highPass
equalizer.bands[1].frequency = 1000
equalizer.bands[1].bypass = false
engine.attach(equalizer) //Attach equalizer
// Connect nodes
engine.connect(inputNode, to: equalizer, format: inputNode.inputFormat(forBus: 0))
engine.connect(equalizer, to: engine.mainMixerNode, format: inputNode.inputFormat(forBus: 0))
// call before creating converter because this changes …
Run Code Online (Sandbox Code Playgroud) swift ×2
audio ×1
core-audio ×1
frameworks ×1
frequency ×1
ios ×1
sample-rate ×1
xcframework ×1
xcodebuild ×1