0

我正在开发一个应用程序,该应用程序涉及在一台设备上录制音频并在另一台通过套接字连接连接的设备上播放。

我正在使用 Audioqueues 在一台对等设备上记录数据,并通过 OTA 流式传输该数据,如 SpeakHere 示例中所示。

我正在尝试使用另一端的 AudioFileStream 和 AudioQueue 在接收设备上播放该数据以进行播放,如 Matt Gallagher 的 AudioStreamer 示例。

对 AudioFileStreamParseBytes 的调用返回“pty?” 错误。因此,与此调用关联的任何回调(用于属性和音频数据包)都不会被调用。

在线流式传输 mp3 和 HTTP 流等有大量示例代码。但是,如果我想流式传输使用 AudioQueue 录制的音频,我可能会遗漏一些东西吗?可能与 AudioQueue 属性相关的东西?

有人还可以建议一种方法来检查我收到的数据是否实际上是合理的音频数据?

一小段代码:

void AQPlayer::StreamDataAvailable(MediaPacket* packet)
{
    OSStatus err = 0;
    err = AudioFileStreamParseBytes(mAudioFileStream, packet->msizeInBytes, packet->mVoiceData, 0);
    if (err) 
    { 
        NSLog(@"AudioFileStreamParseBytes Error");
    }
} 

此外,我已经检查了 packet->mVoiceData 有大约 44Kbytes 的数据(尽管不确定它是否是有意义的数据)并且 packet->msizeInBytes 反映了这个数字。

任何帮助表示赞赏。谢谢!

4

1 回答 1

0

看起来 AudioFileStreams 不支持 LPCM 格式。这似乎是我收到此错误的原因。我的猜测是,因为 LPCM 是原始数据,不需要解析。

事实证明,在这种情况下根本不需要使用 AudioFileStreams。只需使用 AudioQueues 就足够了。

我已经能够单独使用 AudioQueues 来记录、传输和发送数据。

于 2012-02-29T06:08:54.820 回答