我正在为一个文字转语音软件产品编写iOS客户端,该产品要求音频以PCM格式发送,44100hz采样率,16位,单声道,因此我正在使用LPCM进行录制。 要求用户可以在播放时听到自己的语音后方病房,因此服务器会像录制时那样发送音频。
现在,在播放时我正在使用AudioStreamer:https://github.com/mattgallagher/AudioStreamer,而且我一直在玩缓冲区大小等等。截至目前,我正在使用64kbytes缓冲区并在满足至少三个缓冲区时开始播放,而总数量为16个缓冲区以避免耗尽空闲缓冲区。
事情就是这样:在WiFi下播放时,填充缓冲区所需的时间比使用3G或4G时要快..疯了!这是我添加的日志,用于查看缓冲区是如何填充的,您可以看到数据包不超过几千字节。我想知道这是否正常。使用3G,它们比WIFI更顺畅......
2013-09-16 23:50:35.997< AudioStreamer.m:(1855)>处理输入数据,1382字节,带有bytesFilled 19340 2013-09-16 23:50:36.017< AudioStreamer.m:(1415)> AudioFile Stream Parse Bytes 2013-09-16 23:50:36.018< AudioStreamer.m:(1855)>处理输入数据,5528字节,带有bytesFilled 20722 2013-09-16 23:50:36.020< AudioStreamer.m:(1415)> AudioFile Stream Parse Bytes 2013-09-16 23:50:36.021< AudioStreamer.m:(1855)>处理输入数据,1382字节,字节填充26250 2013-09-16 23:50:36.031< AudioStreamer.m:(1415)> AudioFile Stream Parse Bytes 2013-09-16 23:50:36.032< AudioStreamer.m:(1855)>处理输入数据,1382字节,带有bytesFilled 27632 2013-09-16 23:50:36.034< AudioStreamer.m:(1415)> AudioFile Stream Parse Bytes
这使缓冲区在Wifi下再花几秒钟。
64千字节 - 3个缓冲区。没有差距,WIFI
2013-09-17 19:29:48:553 AudioStreamer等待数据
2013-09-17 19:29:52:094开始使用缓冲区播放音频队列3
64千字节 - 3个缓冲区。没有差距,在3G上:
2013-09-17 19:27:33:680 AudioStreamer等待数据
2013-09-17 19:27:35:954开始使用缓冲区播放音频队列3
正如你所看到的,3G的速度似乎快了两倍......任何线索?