【问题标题】:Web audio on ios conflicting with audio queue, only on deviceios上的网络音频与音频队列冲突,仅在设备上
【发布时间】:2014-09-19 14:18:27
【问题描述】:

我有一个使用 CoreAudio 录制音频的 Cordova 插件。它处理音频样本,并重放录制的音频,仍然使用 CoreAudio。该应用程序还使用网络音频播放一些音频。

在 ios 模拟器中一切正常,但在设备上,问题如下:录制/重播正常工作,直到对网络音频进行一次调用,在这种情况下,对 CoreAudio 的后续调用失败。

如果我重新使用 AudioQueue,并在它停止后尝试重新启动它(以及在使用网络音频播放一些音频之后),对 AudioQueueStart 的调用会返回 560034163,即“!aqs”。我找不到那是什么意思。

for (i = 0; i < kNumberBuffers; ++i) {
    XThrowIfError(AudioQueueEnqueueBuffer(audioQueue, audioBuffers[i], 0, NULL),
          "AudioQueueEnqueueBuffer failed");
  }
// That returns !aqs
XThrowIfError(AudioQueueStart(audioQueue, NULL), "AudioQueueStart failed");

或者如果我在录制停止时处理队列,然后如果我重新创建一个新队列,对 AudioQueueStart 的调用将返回 -50,我读到这意味着某些参数无效。唯一的参数是显然创建成功的队列。同样,仅当我播放网络音频时才会出现此错误。

XThrowIfError(AudioQueueNewInput(&recordFormat, RecordingCallback,
              this /* userData */, NULL /* run loop */, NULL /* run loop mode */,
              0 /* flags */, &audioQueue), "AudioQueueNewInput failed");

  int bufferByteSize = 2 * 1024;
  int i;
  for (i = 0; i < kNumberBuffers; ++i) {
    XThrowIfError(AudioQueueAllocateBuffer(audioQueue, bufferByteSize, audioBuffers[i]),
                  "AudioQueueAllocateBuffer failed");
    XThrowIfError(AudioQueueEnqueueBuffer(audioQueue, audioBuffers[i], 0, NULL),
                  "AudioQueueEnqueueBuffer failed");
  }
  XThrowIfError(AudioQueueStart(audioQueue, NULL), "AudioQueueStart failed");

正如我所说,所有这些都运行良好,除非我在设备上并且在我使用网络音频播放一些音频之后。另外,重播录制的音频,使用另一个 AudioQueue 进行播放,在使用网络音频播放音频后仍然可以正常工作。

知道发生了什么吗?或者关于如何进一步调试的任何想法?

【问题讨论】:

    标签: ios cordova core-audio web-audio-api


    【解决方案1】:

    问题似乎在于需要在 AVAudioSessionCategoryPlayAndRecord 设置的音频会话类别和 AVPlayer(这可能是内部用于使用媒体插件或网络音频 API 从 URL 播放音频的内容)。显然用 AVAudioPlayer 没有这个问题,但是我需要在网络上播放一个文件。

    不幸的是,设置

    [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayAndRecord error: nil]; 
    

    在我的插件中没有解决这个问题,所以我必须在我的插件中实现播放功能,使用 AVPlayer,并确保在插件初始化时设置了类别。

    这些解决了我的问题。感谢that SO issue

    【讨论】:

    • 我也面临同样的问题。 Webaudio 和媒体插件似乎有一些冲突。使用 webaudio 录制后就失败了。该问题仅在 ios8 及更高版本中发生。在 6 到 7 中,该设备完全没有问题。我提交了错误报告并等待反馈。
    • 我遇到了同样的问题,WebAudioApi 或
    猜你喜欢
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多