如何设置音频队列中的比特率

发布于 2024-11-03 14:59:41 字数 102 浏览 0 评论 0原文

我正在使用“speak here”代码进行音频格式 kAudioFormatMPEG4AAC 的音频录制。 如何将比特率更改为 96K、128K 或 320K?

问候, 约翰

I'm using speak here code for audio recording with audio format kAudioFormatMPEG4AAC.
How can i change bit rate to 96K, 128K or 320K?

Regards,
John

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

笑忘罢 2024-11-10 14:59:41

我不确定您是否可以通过设置参数直接使用 AudioQueue 来完成此操作。但是,我认为以下方法会起作用:

  • 设置 AudioQueue 以录制线性 PCM
  • 设置 ExtAudioFile,其客户端数据格式与 AudioQueue 匹配,文件数据格式为 AAC
  • 通过获取与 ExtAudioFile 关联的 AudioConverter 设置所需的 AAC 比特率( kExtAudioFileProperty_AudioConverter)并设置转换器的比特率(kAudioConverterEncodeBitRate)。

我还没有在 iOS 上尝试过这个,但如果 AAC 编码器使用硬件编解码器,我怀疑你是否能够设置比特率。 AudioFormat.h 提供了一些方法来确定哪些编解码器是硬件还是软件,以及请求一种实现与另一种实现的方法。

I'm not sure if you can do this directly using AudioQueue by setting a parameter. However, I think the following approach will work:

  • Setup your AudioQueue to record to linear PCM
  • Setup an ExtAudioFile with a client data format matching the AudioQueue and a file data format of AAC
  • Set the desired AAC bitrate by getting the AudioConverter associated with the ExtAudioFile (kExtAudioFileProperty_AudioConverter) and set the converter's bitrate (kAudioConverterEncodeBitRate).

I haven't tried this on iOS, but if the AAC encoder is using a hardware codec I doubt you will be able to set the bitrate. AudioFormat.h gives some methods to determine which codecs are hardware vs. software and ways to request one implementation vs. another.

凉栀 2024-11-10 14:59:41

事实上,AudioQueue 使用与 AudioConverter 相同的后端,尽管 AudioQueueProperty enom 中没有 bitRate 的键,但您仍然可以从转换器借用它们。获取比特率如下:

AudioQueueGetProperty(mQueue, kAudioConverterEncodeBitRate, &bitRate, &propertySize);

并设置如下:

AudioQueueSetProperty(mQueue, kAudioConverterEncodeBitRate, &bitRate, propertySize);

The fact is, AudioQueue is using the same backend as AudioConverter, although there is no key for bitRate in AudioQueueProperty enom, you can still borrow them from converter. Get the bit rate like this:

AudioQueueGetProperty(mQueue, kAudioConverterEncodeBitRate, &bitRate, &propertySize);

and set it like this:

AudioQueueSetProperty(mQueue, kAudioConverterEncodeBitRate, &bitRate, propertySize);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文