2011-12-09 23 views
5

पर रिकॉर्ड किया गया ऑडियो मैं एक आईफोन से दूसरे आईफोन में संचारित करना चाहता हूं। मैंने टीसीपी का उपयोग करके दो आईफोनों के बीच कनेक्शन स्थापित किया है और मैंने आईफोन पर आवाज रिकॉर्ड करने और ऑडियो कतार सेवाओं का उपयोग करके इसे चलाने में कामयाब रहा है। मैंने दो आईफोन के बीच डेटा भेजने में भी कामयाब रहा है। मैं NSData संकुल भेजकर ऐसा करता हूं।ऑडियो क्यूई सेवाओं का उपयोग डेटा

मेरा अगला कदम ऑडियो डेटा को अन्य आईफोन पर रिकॉर्ड करना है क्योंकि इसे रिकॉर्ड किया जा रहा है। मुझे विश्वास है कि मुझे इसे AudioInputCallback में करना चाहिए। मेरा AudioQueueBufferRefinBuffer कहलाता है और ऐसा लगता है कि मैं inBuffer->mAudioData को एनएसडीटा में परिवर्तित करना चाहता हूं और फिर एनएसडीटा को अन्य डिवाइस पर भेजना चाहता हूं और फिर इसे अनपैक करना चाहता हूं।

क्या किसी को पता है कि यह करने का तरीका होगा और मैं अपने 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); 
} 

उत्तर

2

आप ऑडियो डेटा की बचत विचार करना चाह सकते हैं (अपने उदाहरण से पता चलता ऑडियो नमूना सूचक और बाइट गिनती) ऑडियो कॉलबैक से दूसरी कतार या फीफो तक, फिर एक अलग नेटवर्किंग थ्रेड होने से ऑडियो बाइट्स से एनएसडीटा बनाते हैं और इसे भेजते हैं।

+0

आपके उत्तर के लिए धन्यवाद। मुझे यकीन नहीं है कि मुझे दूसरी कतार का उपयोग क्यों करना चाहिए। क्या आप इसे विस्तारित कर सकते हैं? और आपके पास डेटा को एनएसडीटा में परिवर्तित करने के लिए कुछ नमूना कोड नहीं है? – simonbs

+0

http://stackoverflow.com/a/8486682/486845 पर hotpaw2 से उत्तर देखें – simonbs