2010-04-14 19 views
5

हमारे ऐप को लोड होने वाली ऑडियो फ़ाइलों की नमूना गणना जानने की आवश्यकता है। जिस लाइब्रेरी का हम उपयोग कर रहे हैं वह विश्वसनीय रूप से नमूना दर निर्धारित कर सकता है, लेकिन नमूना गणना नहीं। क्या हमारे लिए फ़ाइल आकार और नमूना दर से नमूना गणना की गणना करना संभव है?एक डब्ल्यूएवी फ़ाइल, इसकी फ़ाइल आकार और नमूना दर को देखते हुए, क्या नमूना गणना की गणना करना संभव है?

उत्तर

4

डब्ल्यूएवी फ़ाइल मानना ​​पीसीएम है, आप डेटा खंड के आकार का उपयोग करके इसकी गणना कर सकते हैं। प्रति नमूना बाइट्स की संख्या केवल प्रति नमूना बिट्स की संख्या आठ से विभाजित है। नमूना प्रति बिट्स की संख्या WAVEFORMAT संरचना में मौजूद होगी। इसका उपयोग नमूना गिनती को सटीक रूप से प्राप्त करने के लिए किया जा सकता है।

+0

मैं फ़ाइल आकार से डेटा हिस्सा के आकार काम कर सकते हैं, या मुझे पता है कि अधिक की जरूरत है - जैसे हेडर आकार? – Simon

+0

डब्ल्यूएवी फाइलों में हमेशा एक प्रारूप खंड और डेटा खंड होता है। उनके पास अन्य भाग हो सकते हैं। डेटा खंड आकार के बारे में सुनिश्चित करने का एकमात्र तरीका यह है कि इसे ढूंढें और इसका आकार पैरामीटर पढ़ें। आप किस भाषा और पुस्तकालय का उपयोग कर रहे हैं? –

+0

सी # और MediaInfoLib। – Simon

5

क्या मार्क ने कहा। नहीं, आम तौर पर आपको हेडर की व्याख्या करने की आवश्यकता होती है। लेकिन यदि प्रारूप, चैनलों की संख्या, और नमूने प्रति बिट्स की संख्या ज्ञात है और सभी फ़ाइलों के लिए वही है जो आप सैद्धांतिक रूप से फ़ाइल आकार से इसकी गणना कर सकते हैं।

डब्ल्यूएवी एक साधारण प्रारूप है, दुर्भाग्यवश वर्षों से बड़े और छोटे हार्डवेयर और सॉफ्टवेयर डेवलपर्स के स्वरूप के कई अजीब बदलाव हुए हैं। आम तौर पर यदि आप एक आधुनिक मुख्यधारा के लहर संपादक से फाइलें आ रहे हैं तो आप कोशेर के प्रारूप पर भरोसा कर सकते हैं। इसलिए, यदि नमूने को वेवलैब या इसी तरह से निर्यात करके मानकीकृत किया जाता है, तो आप हेडर-दुभाषिया के लिए (छोटा) कोड लिखना सहेज सकते हैं।

सबसे आसान-पढ़ने-पढ़ने के लिए .wav प्रारूप विवरण here है। StripWav नमूने मानकीकृत करने के लिए एक छोटा सा कार्यक्रम है; एक कमांड लाइन उपकरण भी है जो अधिक सक्षम है: sox। सॉक्स बैच नौकरियों का समर्थन करता है, इसलिए यह एक लहर संपादक का उपयोग करने से बेहतर होगा - मानते हैं कि .wav फ़ाइलों का सेट एक दिया गया है और 'गतिशील' नहीं है।

तो: यदि आप उन्हें एक बार और सभी के लिए सोक्स बैच नौकरी के साथ मानकीकृत कर सकते हैं, तो यह संभव होना चाहिए। मैंने इस प्रारूप का विवरण और सॉक्स को कई बार शानदार प्रभाव के लिए उपयोग किया है, शुभकामनाएं :)

1

पीसीएम वैव प्रारूप में हेडर में अवरोधक नामक जानकारी होती है जिसमें एक नमूना कितने बाइट्स लेता है।

आमतौर पर यदि आपके पास मानक आरआईएफएफ पीसीएम वैव फ़ाइल है जिसमें कोई मेटाडेटा संलग्न नहीं है (सामान्य मामला)। ब्लॉकलाइन साइन ऑफ 32 पर 2-बाइट-इंटीजर है (WAV फ़ाइल की शुरुआत से 33 वें से 34 वें बाइट्स)। और डेटासाइज नामक डेटा का फ़ाइल आकार ऑफसेट 40 पर 4-बाइट पूर्णांक है (41 वें से 44 वें बाइट्स Wav फ़ाइल की शुरुआत)।

अब डेटासाइज/ब्लॉकलाइन जो आप चाहते हैं वह है।

पुनश्च

मामले में आप (कुछ अन्य हिस्सा आप की जरूरत नहीं हो सकता है के साथ) एक और अधिक जटिल wav प्रारूप है, अगर यह RIFF है, प्रारूप जानकारी और डेटा अलग "हिस्सा" में डाल दिया जाता है, और उपरोक्त बात की गई ऑफसेट सही नहीं हो सकती है, तो आपको भाग में देखना चाहिए। आपके मामले में, आपको एफएमटी और डेटा खंड खोजने की जरूरत है।

प्रत्येक भाग 4 बाइट ASCII कोडित डेटा के साथ शुरू होता है जिसे चारसीसी कहा जाता है, 'एफएमटी' इंगित करता है कि खंड में प्रारूप जानकारी और 'डेटा' डेटा डेटा को इंगित करता है। चार सीसीसी के बाद एक 4-बाइट-इंटीजर है जो आकार के बाद (बाइट्स में) आकार को बताता है (चौथाई और यह 4 बाइट गिनती नहीं है)।

संदर्भ:

A simple wav header reference HERE

More general RIFF wav format HERE

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