我如何将音频从iOS设备流式传输到其他设备(如Mac或其他iOS设备)?我只能在谷歌上找到像AirPlay这样的解决方案,而不是在你自己的应用程序中如何做到这一点。我认为你必须通过某种服务器。
要明确,我不打算复制AirPlay。我希望做非常基本的VoIP。
答案 0 :(得分:2)
原始VOIP使用案例:
步骤1.使用压缩编码器使用AV Foundation录制音频
步骤2.将数据包流式传输到另一个设备(即RTP)
第3步。解码&播放远程设备上的音频数据包
更复杂的VOIP用例包括发现用户,建立连接。
这些链接可能会帮助您入门
答案 1 :(得分:2)
编辑 - 2011年8月12日
我没有意识到你想通过音频从一个设备到另一个设备。您始终可以使用CFNetwork并简单地插入设备。诀窍是检测它。了解bonjour服务。您仍然需要使用AudioToolbox将音频处理成缓冲区,并通过bonjour或socket。
结束修改
@greg AVFoundation为您提供了像AVAudioRecorder这样的东西,但它并不能让您像他想要的那样流出数据包。
我来看看AudioToolbox。如果使用AudioQueue,则可以指定流式传输的格式。然后,添加一个输入队列回调,您就可以访问录制音频的原始数据包。
看看iLBC的编解码器。它足够小,可以让你做超过3克的一切。
这是关于AudioQueue编程的一个很棒的苹果参考: http://developer.apple.com/library/mac/#documentation/MusicAudio/Conceptual/AudioQueueProgrammingGuide/AQRecord/RecordingAudio.html
祝你好运!答案 2 :(得分:0)
您说您不想使用AirPlay。要做到这一点,您需要在iOS设备上运行自己的服务器。这当然是可能的,并且有些应用程序可以运行各种服务器来执行各种任务。但是,我对这个主题并不是很熟悉,看来你在网上没有太多关于这方面的信息是正确的。
那就是说,我建议看看Darwin Streaming Server。它看起来有点旧,但它是开源的,可能对你有用。
答案 3 :(得分:0)
我认为一个好的开始是理解CoreAudio的旧示例: SpeakHere(它使用低级C API记录和播放声音.CoreAudio是AVFoundation的优势之一)
正如@DexterW所说,你需要了解AudioQueue等等。
之后,您可以开始考虑将服务器/数据包传输到:)
希望它有所帮助。
答案 4 :(得分:0)
你会这样做:
https://drive.google.com/open?id=1tKgVl0X92SYvgpvbljRzilXNQ6iBcjqM
在两台iOS设备上运行此应用;它会自动将两个设备连接到您的网络和开始在它们之间传输音频。
该界面由单个UI组件组成,具体而言,是记录应用程序事件的文本字段。它可以让您轻松理解应用程序的架构。
您需要Xcode 9和iOS 11的最新测试版本。
如果您有任何问题,请与我们联系。