2013-03-19 79 views
1

我试图通过蓝牙从一个iOS设备发送音乐到另一个。我一直在使用this构建像Ray Wenderlich的SNAP教程中的数据包,但我一直无法在接收电话上重构数据包信息。我尝试过使用https://github.com/abbood/iphoneAudioSyncer,但我认为这对我的需求来说太复杂了(因为我不需要同步播放)。说明丢失/乱序数据包等最简单的缓冲方法是什么?我已经阅读了很多CoreAudio的内容,但它非常密集,所以我希望能够帮助解决这类问题的人。iPhone音乐流

回答

4

当你谈论los /乱序数据包..你在谈论的话题Packet Loss Concealment ..这是一个非常密集的话题(我的意思是如果你认为核心音频密集..等到你潜入PLC)。

简而言之,有很多方法可以解决丢包问题..但最简单的方法(我建议你这样做)是用沉默来替换丢失的数据包(同样是乱序数据包.. if一个数据包出故障了,就放弃它)。

这就是说..你正在处理音频流式传输给你(即通过蓝牙/无线网络发送)..这意味着几乎100%的时间它是压缩音频你得到(即变量比特率音频VBR)..如果你只是尝试用沉默替代丢失的VBR数据包..你会遇到this问题。您必须以与您正在处理的VBR音频相同的压缩格式插入静音数据包,否则您将不得不将VBR压缩音频转换为非压缩音频(无损PCM),然后插入零来代替丢失的数据包。

+0

您会注意到,虽然您使用了我创建的两个示例应用程序,但您仍然会发现它非常困难。不幸的是,这是一般的核心音频/实时应用程序的现实。有没有简单的方法或即插即用的解决方案,你可以简单地在网上找到(如果有的话,只要了解它们是一项非常困难的任务,如你已经发现的)。 – abbood 2013-03-19 06:41:39

+1

所以,这是我给每个尝试进入核心音频/实时应用程序(用于商业或学术目的的天气,而且你不是第一个)的建议:您可能需要重新评估项目的范围,因为这样的项目看起来似乎很容易,但一旦你挖掘出来,你会发现兔子的洞延伸得比你预想的要深得多。换句话说,这个问题的解决方案从软件开发生命周期的开始就开始:在规划和需求收集阶段。 – abbood 2013-03-19 06:42:58

+0

你会推荐什么替代品? Spotify高级版是明显的首选,但如何将歌曲上传/下载到服务器上。基本上我们如何让人们提出音乐建议并让歌曲在主持电话上播放? – tancik 2013-03-19 15:36:53