2011-09-10 15 views
6

मैं अभी कुछ समय से इस के साथ संघर्ष कर रहा हूं, और नेट पर इसका कोई कोड उदाहरण नहीं है। क्या कोई मेरी मदद कर सकता है?उद्देश्य-सी/आईओएस: ऑडियो फ़ाइल को पीछे की ओर चलाने का सबसे आसान तरीका

मेरा ऐप ऑडियो रिकॉर्ड करने के लिए AVFoundation का उपयोग करता है। @ 16 बिट गहराई, 2 चैनल, डब्ल्यूएवी

मैं ऑडियो के बाइट्स तक पहुंच सकता हूं, मुझे नहीं पता कि इसे कैसे उलट किया जाए।

उत्तर

7

लहर डेटा नमूने में हस्तक्षेप किया जाता है। इसका मतलब है कि डेटा इस तरह व्यवस्थित है।

Sample 1 Left | Sample 1 Right | Sample 2 Left | Sample 2 right ... Sample n Left | Sample n right 

प्रत्येक नमूने के रूप में 16-बिट (2 बाइट्स) पहले 2 चैनल नमूना (यानी दोनों छोड़ दिया और सही के लिए) आकार में 4 बाइट है।

इस तरह आप जानते लहर डेटा के एक ब्लॉक में पिछले नमूना इस प्रकार है कि:

wavDataSize - 4 

फिर आप प्रत्येक नमूने एक समय में एक अलग बफर में यह कॉपी करके अंत में शुरू करने से लोड कर सकते हैं रिकॉर्डिंग और पीछे पढ़ने के लिए। जब आप लहर डेटा की शुरुआत में जाते हैं तो आपने लहर डेटा को उलट दिया है और खेल को उलट दिया जाएगा।

संपादित करें: यदि आप आईओएस पर लहर फ़ाइलों को पढ़ने के आसान तरीके चाहते हैं तो Audio File Services Reference देखें।

संपादित करें 2:

readPoint = waveDataSize; 
writePoint = 0; 
while(readPoint > 0) 
{ 
    readPoint -= 4; 
    Uint32 bytesToRead = 4; 
    Uint32 sample; 
    AudioFileReadBytes(inFile, false, maxData, &bytesToRead &sample); 
    AudioFileWriteBytes(outFile, false, writePoint, &bytesToRead, &sample); 

    writePoint += 4; 
} 
+0

का उपयोग नहीं कठिनाई यह है कि अगर यह एक वैव फ़ाइल प्रारूप है जिसमें हेडर और भाग हैं। – zaph

+0

@ कोकोआफू: वास्तव में नहीं। ऐप्पल आपको उन कार्यों का पूरा समूह प्रदान करता है जो लहर फ़ाइलों से निपटते हैं। प्रारूप खुद को करना मुश्किल नहीं है। – Goz

+0

@Goz धन्यवाद, अगर यह पूछने में बहुत अधिक परेशानी नहीं है, तो क्या आप मेरी समझ में सहायता के लिए कोड नमूना प्रदान कर सकते हैं? यह कोड-वार कैसे प्राप्त किया जाएगा? – DaveSmith122

0

एक एकल हिस्सा WAV फ़ाइल मानते हुए, फ़ाइल memmapping, और नमूने उलटे क्रम में बाहर को कॉपी, फ़ाइल के अंत से शुरू, ऑडियो कतार या RemoteIO बफ़र्स में कोशिश , कॉलबैक के दौरान, ऑडियो चलाने के लिए उन एपीआई में से एक का उपयोग करते समय। डब्ल्यूएवी/आरआईएफएफ हेडर (आमतौर पर पहले 44 बाइट्स) तक पहुंचने से पहले कॉपी करना बंद करें।

0

एक ऑडियो उलटने के लिए, क्यों MPMediaPlayback में currentPlaybackRate (https://developer.apple.com/library/ios/#DOCUMENTATION/MediaPlayer/Reference/MPMediaPlayback_protocol/Reference/Reference.html)

संबंधित मुद्दे