小编sha*_*yan的帖子

IOS AudioUnit播放裂纹问题(swift)

我正在尝试在 IOS 中播放来自 Android 设备的 UDP 字节。我正在使用 TPCircularBuffer 来播放字节。我的代码如下:

let success = initCircularBuffer(&circularBuffer, 1024)
        if success {
            print("Circular buffer init was successful")
        } else {
            print("Circular buffer init not successful")
        }



func udpReceive() {
        receivingQueue.async {
            repeat {
                do {
                    let datagram = try self.tcpClient?.receive()
                    let byteData = datagram?["data"] as? Data
                    let dataLength = datagram?["length"] as? Int
                    self.dataLength = dataLength!

                    let _ = TPCircularBufferProduceBytes(&self.circularBuffer, byteData!.bytes, UInt32(dataLength! * MemoryLayout<UInt8>.stride * 2))

                } catch {
                    fatalError(error.localizedDescription)
                }
            } while true
        }


    } …
Run Code Online (Sandbox Code Playgroud)

core-audio playback audiounit ios swift

1
推荐指数
1
解决办法
660
查看次数

在 Android 上使用 opus 剪辑从 IOS 发送的声音

我正在 IOS 中从 audioUnit 录制音频,用 opus 编码字节并通过 UDP 将其发送到 android 端。问题是播放的声音有点削波。我还通过将原始数据从 IOS 发送到 Android 来测试声音,效果非常完美。

我的 AudioSession 代码是

      try audioSession.setCategory(.playAndRecord, mode: .voiceChat, options: [.defaultToSpeaker])
        try audioSession.setPreferredIOBufferDuration(0.02)
        try audioSession.setActive(true)
Run Code Online (Sandbox Code Playgroud)

我的录音回调代码是:

func performRecording(
    _ ioActionFlags: UnsafeMutablePointer<AudioUnitRenderActionFlags>,
    inTimeStamp: UnsafePointer<AudioTimeStamp>,
    inBufNumber: UInt32,
    inNumberFrames: UInt32,
    ioData: UnsafeMutablePointer<AudioBufferList>) -> OSStatus
 {
var err: OSStatus = noErr

err = AudioUnitRender(audioUnit!, ioActionFlags, inTimeStamp, 1, inNumberFrames, ioData)

if let mData = ioData[0].mBuffers.mData {
    let ptrData = mData.bindMemory(to: Int16.self, capacity: Int(inNumberFrames))
    let bufferPtr = UnsafeBufferPointer(start: ptrData, count: Int(inNumberFrames)) …
Run Code Online (Sandbox Code Playgroud)

core-audio audiounit ios opus swift

0
推荐指数
1
解决办法
529
查看次数

标签 统计

audiounit ×2

core-audio ×2

ios ×2

swift ×2

opus ×1

playback ×1