【发布时间】:2016-10-25 12:16:44
【问题描述】:
我正在尝试使用 AudioQueue 播放来自服务器的 PCM 流数据。
PCM数据格式:
Sample rate = 48000, num of channel = 2, Bit per sample = 16
而且,服务器没有将固定字节流式传输到客户端。 (可变字节。) (例如:30848、128、2764、...字节)
如何设置 ASBD ?
我不知道如何设置 mFramesPerPacket, mBytesPerFrame, mBytesPerPacket 。
我已经阅读了 Apple 参考文档,但没有详细说明。
请给我任何想法。
新增: 这里,ASBD 结构是我设置的。 (语言:斯威夫特)
// Create ASBD structure & set properties.
var streamFormat = AudioStreamBasicDescription()
streamFormat.mSampleRate = 48000
streamFormat.mFormatID = kAudioFormatLinearPCM
streamFormat.mFormatFlags = kLinearPCMFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked
streamFormat.mFramesPerPacket = 1
streamFormat.mChannelsPerFrame = 2
streamFormat.mBitsPerChannel = 16
streamFormat.mBytesPerFrame = (streamFormat.mBitsPerChannel / 8) * streamFormat.mChannelsPerFrame
streamFormat.mBytesPerPacket = streamFormat.mBytesPerFrame
streamFormat.mReserved = 0
// Create AudioQueue for playing PCM streaming data.
var err = AudioQueueNewOutput(&streamFormat, self.queueCallbackProc, nil, nil, nil, 0, &aq)
...
我已经像上面那样设置了 ASBD 结构。
AudioQueue 可以很好地播放流式传输的 PCM 数据几秒钟,
但很快播放就停止了。我能做什么?
(仍在流式传输和排队 AudioQueue)
请给我任何想法。
【问题讨论】:
标签: ios pcm audioqueue