首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将音频从Mac上的麦克风流式传输到iPhone

将音频从Mac上的麦克风流式传输到iPhone
EN

Stack Overflow用户
提问于 2011-10-05 03:01:20
回答 1查看 1.6K关注 0票数 3

我正在做一个个人项目,其中iPhone连接到一个运行在Mac上的服务器类型的应用程序。iPhone通过标准套接字发送和接收文本/ASCII数据。我现在需要将麦克风从Mac传输到iPhone。我以前在AudioServices上做过一些工作,但我想在深入了解之前先检查一下我的想法。

我想我可以:

  1. 在Mac上的标准Cocoa应用程序中创建音频队列。
  2. 在我的音频队列回调函数中,不是将其写入文件,而是将其写入我为音频流打开的另一个套接字。
  3. 在iPhone上,从TCP流接收原始采样/编码的音频数据,并将其转储到输出到headphone/speaker.

的音频队列播放器中

我知道这不是一个小任务,我已经大大简化了我需要做的事情,但它能这么简单吗?

感谢你能提供的任何帮助,

有状态

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-05 05:48:48

这看起来很合理,但您几乎肯定需要做更多的事情:

  • 缓冲。在“录制”端,如果缓冲区已满,您可能不想阻塞音频队列。在“回放”这一端,我不认为你可以简单地将缓冲区传递到队列中(IIRC你需要缓冲它直到你得到一个callback).
  • Concurrency.我非常确定AQ回调发生在它们自己的线程上,所以如果内存分配最终是一个大的overhead.
  • Compression.,那么您将需要在缓冲区accesses.
  • Buffer池周围设置某种类型的锁定/屏障AQ也许能够给你提供"IMA4“帧(IMAADPCM4:1,或者更多);我不确定它是否在iPhone.
  • Packetization,上做了硬件MP3解压,例如,如果你需要在语音聊天中插入文本chat.
  • EDIT:播放同步(或者你应该叫它什么)。您需要能够处理不同的有效音频时钟速率,无论是由于延迟的变化还是其他原因。Skype通过改变播放速度来做到这一点(具有pitch-correction).
  • EDIT:数据包丢失。您也许能够在短链路上使用TCP,但这在很大程度上取决于无线网络的质量。UDP是正确的小问题(特别是当你必须检测MTU漏洞时)。

根据您的数据速率,可能值得使用低级(BSD)套接字API,甚至可以使用readv()/writev()。

如果你想要的只是一个“在线广播”服务,而你不关心所使用的协议,那么使用AVPlayer/MPMoviePlayer来播放来自URL的音频可能会更容易一些。这涉及到实现一个使用Apple的HTTP流协议的服务器;我相信Apple有一些示例代码可以做到这一点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7652784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档