- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用 AudioQueue 从服务器播放 PCM 流数据。
PCM 数据格式:
Sample rate = 48000, num of channel = 2, Bit per sample = 16
并且,服务器不会将固定字节流式传输到客户端。 (可变字节。)(例如:30848、128、2764,...字节)
如何设置ASBD?我不知道如何设置 mFramesPerPacket
, mBytesPerFrame
, mBytesPerPacket
。看过苹果的引用文档,但是没有详细的说明。
请给我任何想法。
新添加: 在这里,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, nil, 0, &aq)
...
我已经像上面那样设置了 ASBD 结构。
AudioQueue 可以很好地播放流式 PCM 数据几秒钟,
但很快播放就停止了。我能做什么?
(仍在流式传输,并排队 AudioQueue)
请给我任何想法。
最佳答案
ASBD 只是一个定义如下的结构:
struct AudioStreamBasicDescription
{
Float64 mSampleRate;
AudioFormatID mFormatID;
AudioFormatFlags mFormatFlags;
UInt32 mBytesPerPacket;
UInt32 mFramesPerPacket;
UInt32 mBytesPerFrame;
UInt32 mChannelsPerFrame;
UInt32 mBitsPerChannel;
UInt32 mReserved;
};
typedef struct AudioStreamBasicDescription AudioStreamBasicDescription;
您可以像这样设置结构的变量:
AudioStreamBasicDescription streamFormat;
streamFormat.mFormatID = kAudioFormatLinearPCM;
streamFormat.mFormatFlags = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagsNativeEndian | kAudioFormatFlagIsPacked;
streamFormat.mSampleRate = sampleRate;
streamFormat.mBitsPerChannel = bitsPerChannel;
streamFormat.mChannelsPerFrame = channelsPerFrame;
streamFormat.mFramesPerPacket = 1;
int bytes = (bitsPerChannel / 8) * channelsPerFrame;
streamFormat.mBytesPerFrame = bytes;
streamFormat.mBytesPerPacket = bytes;
关于ios - 如何设置 AudioStreamBasicDescription 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40239745/
我正在尝试了解 AudioStreamBasicDescription 结果。实际上,我能得到的东西对我来说都没有意义。例如: AudioStreamBasicDescription(mSampleR
我正在尝试使用 AudioQueue 从服务器播放 PCM 流数据。 PCM 数据格式: Sample rate = 48000, num of channel = 2, Bit per sample
这些是我传入的值,这是我可以使用的唯一值组合。 dataFormat.mSampleRate = 44100; dataFormat.mFormatID = kAudioFormatLinear
与 EZAudio我想尽可能创建单光音频缓冲区列表。在过去,我每个 audioBuffer 达到 46 个字节,但 bufferDuration 相对较小。首先,如果我使用下面的 AudioStrea
在 AudioStreamBasicDescription 结构中: struct AudioStreamBasicDescription { Float64 mSampleRate;
我正在尝试在 iOS 上播放一个简单的 PCM 文件,但我无法理解 AudioStreamBasicDescription 和这个 link没有提供足够的信息。 我从终端获取这些值 afinfo Bl
我尝试使用更多的 AudioStreamBasicDescription 来处理 m4a 文件格式。我仍然遇到一些问题。 请任何人告诉我 m4a 文件格式的确切 AudioStreamBasicDes
CAStreamBasicDescription 和 AudioStreamBasicDescription 有什么区别?谢谢。 最佳答案 CAStreamBasicDescription 只是 Au
我需要帮助理解以下 ASBD。这是分配给 RemoteIO 的新实例的默认 ASBD (我通过在 AudioUnitGetProperty(..., kAudioUnitProperty_Stream
我想知道如何创建 [String:AnyObject] 的字典来自 UnsafePointer 我想我不明白如何使用 UnsafePointer在Swift .这是我的起点 - AVAudioFile
在 Objective-C 中,您应该始终将新音频流基本描述结构的字段初始化为零,如下所示: AudioStreamBasicDescription myAudioDataFormat = {0};
我正在使用音频单元录制一些 PCM 音频。在回调中,当我有 30 秒的音频时,我想将一个 8000Hz AAC 编码的文件写入磁盘,比特率为 12kb/s。 这是我使用的 AudioStreamBas
由于关于 MTAudioProcessingTap 的文档非常少(实际上几乎没有),我使用的是 Apple's demo app from WWDC 2012 . 我正在尝试在 MTAudioProc
我有这段代码 var dataFormat: AudioStreamBasicDescription? var propSize: UInt32 = UInt32(Me
这是我们用来设置 AudioStreamBasicDescription (ASBD) 的函数。整个类(class)都深受 SpeakHere 的影响。 Apple 的示例应用程序。 这适用于在 iO
我正在编写一个使用 CoreAudio 的音频单元 API 的 iOS 应用程序,并且在某个时候我执行了一个 AudioUnitGetProperty(audioUnit, kAudioUnitPro
我在为上述格式创建描述时遇到了问题,并且尝试了很多方法,但在尝试记录时总是收到无效参数。 有没有人有如何创建这种格式的示例? var audioFileOutputDescription : Audi
我是一名优秀的程序员,十分优秀!