swift - 如何获取用于在 Swift 中设置 AudioUnitSetProperty 的 inDataSize?

标签 swift core-audio audiounit

我在 Swift 中大致有以下代码:

var inputFileURL : NSURL
var inputFile : AudioFileID
inputFileURL = NSURL.fileURLWithPath("/Bird.wav")
status = AudioFileOpenURL(inputFileURL, Int8(kAudioFileReadPermission), 0, &inputFile)
status = AudioUnitSetProperty( inUnit: AudioFilePlayerAU, inID: kAudioUnitProperty_ScheduledFileIDs, inScope: kAudioUnitScope_Global, inElement: 0, inData: self.inputFile, inDataSize: sizeof(inputFile) )

问题是我不能使用 sizeof() [如大多数核心音频示例中所示] 来设置 AudioUnitSetProperty 函数的参数。

我得到错误:

173:37: error: 'AudioFileID' is not convertible to 'T.Type'
            inDataSize: sizeof(self.inputFile) )
                                    ^
Swift.sizeof:1:6: note: in call to function 'sizeof'
func sizeof<T>(_: T.Type) -> Int

我应该如何在 Swift 中获取音频文件的数据大小?

谢谢

最佳答案

Swift 中的

sizeof() 采用类型作为参数,而不是变量。试试 sizeof(AudioFileID)。您还需要将结果从 Int 转换为 UInt32 for inDataSizeUInt32(sizeof(AudioFileID))

关于swift - 如何获取用于在 Swift 中设置 AudioUnitSetProperty 的 inDataSize?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25311084/

相关文章:

iOS Firebase Stripe Integration with/Cloud Functions,相当于 iOS 中的 push() 和 push Id

audio - openal:获取源的当前播放位置

ios - Apple 的 speakhere 项目,不同的 UI

ios - 用于播放和录制的音频单元,无需过滤器

ios - 使用音频单元播放多个重叠的短音频文件

ios - 父 View 位于 subview 后面

ios - Alamofire Swift 4 无聊的 SSL

swift - 两点之间的正弦波 UIBezierPath

ios - 解码AudioStreamBasicDescription的mFormatFlags编号(ASBD.mFormatFlags)

ios - 如何确保在 iOS 上的时间限制内呈现音频?