【问题标题】:Inter-App Audio : can't even connect my node应用间音频:甚至无法连接我的节点
【发布时间】:2014-01-16 20:16:12
【问题描述】:

好吧,我正在尝试在我的 iOS 应用程序中实现 IAA,并为此仔细研究了 Apple“InterAppAudioSuite”以及 WWDCXIII 602 视频。我的应用程序的行为类似于 Apple InterAppAudioSampler,并且我在此示例中使用了尽可能多的代码。

我的应用程序启动,我在日志窗口中收到一条“AudioOutputUnitPublish 存根调用”消息 - 我猜 - 一切正常。然后我从 Apple 启动“InterAppAudioHost”应用程序并尝试连接我的应用程序(充当音频远程乐器)。我的应用程序在应用程序列表中可用。但后来它无法连接,我得到以下日志:

2014-01-16 11:10:27.556 DM1[141:60b] Could not search: {
    NSNetServicesErrorCode = "-72000";
    NSNetServicesErrorDomain = 10;
}
2014-01-16 11:10:27.558 DM1[141:60b] Could not publish service: {
    NSNetServicesErrorCode = "-72000";
    NSNetServicesErrorDomain = 10;
}

(我的应用程序中没有调用任何与 IAA 相关的方法。)

然后“InterAppAudioHost”退出,它的日志显示:

2014-01-16 11:10:47.555 IAA Host[150:60b] 11:10:47.554 ERROR:     [0x3b2e718c] 168: Timed out waiting for app to launch
2014-01-16 11:10:47.557 IAA Host[150:60b] 11:10:47.557 ERROR:     [0x3b2e718c] >audiocomp> 59: null from factory proc
2014-01-16 11:10:47.559 IAA Host[150:60b] error -1 from AUGraphAddNode (hostGraph, &desc, &instrumentNode)

我仔细检查了我的 plist,它是这样的:

<plist version="1.0">
<dict>
    <key>AudioComponents</key>
    <array>
        <dict>
            <key>type</key>
            <string>aurg</string>
            <key>subtype</key>
            <string>fld1</string>
            <key>manufacturer</key>
            <string>fglb</string>
            <key>name</key>
            <string>appName<string>
            <key>version</key>
            <integer>1</integer>
        </dict>
        <dict>
            <key>type</key>
            <string>auri</string>
            <key>subtype</key>
            <string>fld1</string>
            <key>manufacturer</key>
            <string>fglb</string>
            <key>name</key>
            <string>appName</string>
            <key>version</key>
            <integer>1</integer>
        </dict>
    </array>

...

我的发布方式:

- (void) publishOutputAudioUnit {
    OSStatus result;
    const UInt32 version = 1;
    //-----------------------
    //    Publish as Remote Generator
    //-----------------------
    AudioComponentDescription IAAGeneratorDesc = { kAudioUnitType_RemoteGenerator,'fld1','fglb',0,0 };
    result = AudioOutputUnitPublish(&IAAGeneratorDesc, CFSTR("CompanyName : AppName"),version, auRemoteIO);
    if (result != noErr)
        NSLog(@"AudioOutputUnitPublish generator result: %d", (int)result);
    //-----------------------
    //    Publish as Remote Instrument
    //-----------------------
    AudioComponentDescription IAARemoteDesc = { kAudioUnitType_RemoteInstrument,'fld1','fglb',0,0 };
    result = AudioOutputUnitPublish(&IAARemoteDesc, CFSTR("CompanyName : AppName"),version,auRemoteIO);
    if (result != noErr)
         NSLog(@"AudioOutputUnitPublish instrument result: %d", (int)result);
}

主机和节点之间似乎存在一些 URL 问题,但我就是想不通。

任何帮助都会非常、非常、非常受欢迎,因为我真的被困住了。非常感谢。

安德烈

【问题讨论】:

    标签: ios core-audio


    【解决方案1】:

    最终成功了。不知道我是怎么到那里的。这是我当前的代码:

    - (void) publishOutputAudioUnit {
        OSStatus result;
        const UInt32 version = 1;
        SoundEngine *se = [SoundEngine instance];
        //-----------------------
        //  Publish as Remote Instrument
        //-----------------------
        AudioComponentDescription remoteDesc = { kAudioUnitType_RemoteInstrument,IAA_SUB_TYPE,IAA_MANUFACTURER,0,0 };
        result = AudioOutputUnitPublish(&remoteDesc, CFSTR(IAA_NAME),version,se->auRemoteIO);
        if (result != noErr) NSLog(@"AudioOutputUnitPublish instrument result: %d", (int)result);
    }
    

    您现在还可以使用包含 IAA 连接的 Audiobus SDK。这比做自己要容易得多。

    【讨论】:

      【解决方案2】:

      还有我目前的 plist:

      <plist version="1.0">
      <dict>
          <key>AudioComponents</key>
          <array>
              <dict>
                  <key>manufacturer</key>
                  <string>fglb</string>
                  <key>name</key>
                  <string>DM1 - The Drum Machine</string>
                  <key>subtype</key>
                  <string>dm1a</string>
                  <key>type</key>
                  <string>auri</string>
                  <key>version</key>
                  <integer>1</integer>
              </dict>
          </array>
          <key>CFBundleDevelopmentRegion</key>
          <string>English</string>
          <key>CFBundleDisplayName</key>
          <string>DM1</string>
          <key>CFBundleDocumentTypes</key>
          <array>
              <dict>
                  <key>CFBundleTypeName</key>
                  <string>DM1 File</string>
                  <key>LSHandlerRank</key>
                  <string>Owner</string>
                  <key>LSItemContentTypes</key>
                  <array>
                      <string>net.fingerlab.beat.file</string>
                  </array>
                  <key>LSTypeIsPackage</key>
                  <false/>
              </dict>
          </array>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-06-15
        • 1970-01-01
        • 1970-01-01
        • 2021-04-13
        • 2023-03-11
        • 2014-07-13
        • 1970-01-01
        • 2019-03-26
        相关资源
        最近更新 更多