我正在尝试使用 AudioQueue 从服务器播放 PCM 流数据。
PCM数据格式:
Sample rate = 48000, num of channel = 2, Bit per sample = 16
Run Code Online (Sandbox Code Playgroud)
并且,服务器不会将固定字节流式传输到客户端。(可变字节。)(例如: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 …Run Code Online (Sandbox Code Playgroud) 我正在尝试开发app从服务器播放流式PCM数据.
我使用过AudioQueue,但效果不好.
PCM数据格式(来自服务器):
Sample rate = 48000, num of channel = 2, Bit per sample = 16
Run Code Online (Sandbox Code Playgroud)
并且,服务器不会将固定字节流式传输到客户端.
(流变量字节.例如:30848,128,2764,......字节)
我的源代码:
在这里,ASBD结构我已经设置并创建了音频队列对象(语言:Swift)
// 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, …Run Code Online (Sandbox Code Playgroud)