从iOS流式传输音频

20

我该如何将iOS设备上的音频流式传输到另一个设备,例如Mac或另一个iOS设备?在Google上只能找到像AirPlay这样的解决方案,没有关于如何在自己的应用程序中实现它的内容。我认为您需要通过某种类型的服务器来进行传输。

要明确一点,我不是想复制AirPlay。我只是想做非常基本的VoIP。


是的,这非常正确。令人惊讶的是,苹果编写的iOS软件API允许您将iOS设备用作AirPlay服务器(发送器),向AirPlay客户端(接收器)发送数据,从而使您能够执行刚才所说的操作。因此,您可以为自己许可AirPlay技术,或者您可以复制iOS AirPlay技术的功能,并说服iOS...我想您知道我要说什么了。你想做什么?难道所有iOS设备都有耳机插孔吗?它们都是用于个人媒体消费的吗? - jcolebrand
5个回答

2

我能使用这种方法流式传输电话吗? - user924

1

编辑 - 2011年8月12日

我没有意识到你想要在设备之间传递音频。你可以随时使用CFNetwork并简单地将其插入设备中。关键是要检测它。还可以考虑一下Bonjour服务。您仍然需要使用AudioToolbox将音频处理为缓冲区,并通过Bonjour或套接字进行传输。

结束编辑

@greg AVFoundation提供了像AVAudioRecorder这样的功能,但它不能完全按照他的要求进行数据流传输。

我建议你看看AudioToolbox。如果你使用AudioQueue,你可以指定一个用于数据流传输的格式。然后,添加一个输入队列回调函数,你就可以访问录制的音频的原始数据包。

你可以查看iLBC编解码器。它的占用空间足够小,可以让你在3G网络上完成所有操作。

这里有一个很好的苹果参考文档,关于AudioQueue编程的内容: http://developer.apple.com/library/mac/#documentation/MusicAudio/Conceptual/AudioQueueProgrammingGuide/AQRecord/RecordingAudio.html

祝你好运!


0

你说你不想使用AirPlay。如果这样,你需要在iOS设备上运行自己的服务器。这当然是可能的,有一些应用程序可以运行各种任务的服务器。然而,我对这个主题不是很熟悉,似乎你正确地指出了网上关于这方面的信息不多。

话虽如此,我建议你看看Darwin Streaming Server。它似乎有点老旧,但是它是开源的,可能对你有用。


0

我认为一个好的开始是理解CoreAudio示例,例如SpeakHere(它使用低级C APIs记录和播放声音。CoreAudio是AVFoundation的祖先之一)

正如@DexterW所说,您需要了解AudioQueue等知识。

在那之后,您可以考虑用于流式传输的服务器/数据包 :)

希望能有所帮助。


0
你可以像这样做:

https://m.box.com/intent/open?type=shared_item&shared_link=https%3A%2F%2Fapp.box.com%2Fs%2Fta353zq58bgoj5d7j6kndkhpxa02banz

在两个iOS设备上运行此应用程序;它将自动连接两个设备到您的网络,并在它们之间开始流式传输音频。

界面由单个UI组件组成,具体来说是一个文本字段,用于记录应用程序事件。这将使您更容易理解应用程序的架构。

enter image description here

您需要最新的 Xcode 9 和 iOS 11 的 beta 版本。

如果您有任何问题,请告诉我。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接