Swift AudioToolbox无法播放音频文件或填充音频缓冲区

时间:2018-08-22 22:58:15

标签: ios swift audio audiotoolbox audioqueueservices

我正在尝试使用AudioToolbox播放音频文件。我是根据Apple网站上的一个古老的目标C示例编写并迅速编写的。它可以编译并运行,但是一旦CFRunLoop启动,回调函数就永远不会触发。 (在设置过程中会调用它,但是我手动调用它,所以不算在内。)

我对这应该如何工作的理解是当调用此行时:

<div class="wrapper">
  <div class="content">
    <div class="main">
      <div class="profile">
        <div class="description">
          <div class="name">Name One -- targetted</div>
        </div>
        <div class="name">Name Two - not targetted</div>
      </div>
    </div>
  </div>
</div>

应该创建一个AudioQueue对象,将其放置在CFRunLoop中,设置名为“ callback”的回调函数,然后再给我提供对队列对象的引用。回调函数或者位于AudioQueue内部(位于CFRunLoop中),或者回调函数直接位于CFRunLoop中。不确定。

设置完毕后,我会打电话给: 状态= AudioQueueStart(aqData.mQueue !, nil) 可以“启动”队列。

然后我打电话:

status = AudioQueueNewOutput(&dataFormat, callback, &aqData, CFRunLoopGetCurrent(), commonModes, 0, &queue)

我的理解是,这应该触发音频队列,从而调用我的回调函数。但是,从这一点上讲,回调函数永远不会被命中。我想可能有一种检查音频队列或检查CFRunLoop的方法。我可能在某个地方的一个指针上犯了一个错误。

结果是应用程序只播放静音。

  repeat {
       CFRunLoopRunInMode(CFRunLoopMode.defaultMode, 0.1, false)
  }

0 个答案:

没有答案