[英]Audio recorded using Audio Queue Services to data
我想將語音從一個iPhone傳輸到另一個iPhone。 我已經使用TCP建立了兩個iPhone之間的連接,我已經設法在iPhone上錄制語音並使用音頻隊列服務播放它。 我還設法在兩個iPhone之間發送數據。 我這樣做是通過發送NSData包。
我的下一步是將音頻數據發送到正在錄制的其他iPhone。 我相信我應該在AudioInputCallback
這樣做。 我的AudioQueueBufferRef
被稱為inBuffer
,似乎我想將inBuffer->mAudioData
轉換為NSData,然后將NSData發送到另一個設備,然后將其解壓縮。
有誰知道這是否可以做到這一點以及如何將我的inBuffer->mAudioData
轉換為NSData? 其他方法也受到歡迎。
這是我的回調方法,我相信我應該“抓住”數據並將其發送到其他iPhone:
void AudioInputCallback(void *inUserData, AudioQueueRef inAQ, AudioQueueBufferRef inBuffer, const AudioTimeStamp *inStartTime, UInt32 inNumberPacketDescriptions, const AudioStreamPacketDescription *inPacketDescs)
{
RecordState *recordState = (RecordState *)inUserData;
if(!recordState->recording)
return;
OSStatus status = AudioFileWritePackets(recordState->audioFile,
false,
inBuffer->mAudioDataByteSize,
inPacketDescs,
recordState->currentPacket,
&inNumberPacketDescriptions,
inBuffer->mAudioData);
if(status == 0)
{
recordState->currentPacket += inNumberPacketDescriptions;
}
AudioQueueEnqueueBuffer(recordState->queue, inBuffer, 0, NULL);
}
您可能需要考慮將音頻數據(您的示例顯示音頻樣本指針和字節數)從音頻回調保存到另一個隊列或FIFO,然后使用單獨的網絡線程從音頻字節創建NSData並發送它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.