मेरी पहली सिफारिश आपको मदद करने के लिए किसी प्रकार की लाइब्रेरी का उपयोग करना होगा। अधिकतर ध्वनि समाधान ओवरकिल लगते हैं, इसलिए एक साधारण लाइब्रेरी (जैसे आपके प्रश्न की टिप्पणी में अनुशंसित एक, libsndfile) चाल चलाना चाहिए।
यदि आप सिर्फ डब्ल्यूएवी फाइलों को पढ़ने के बारे में जानना चाहते हैं तो आप अपना खुद का लिख सकते हैं (क्योंकि आपका स्कूल किसी अन्य नियमित व्यक्ति की तरह लाइब्रेरी का उपयोग करने पर नाक बदल सकता है), एक त्वरित Google खोज आपको देगी आपको जिस जानकारी की आवश्यकता है plus some people who have already wrote many tutorials on reading the .wav format।
यदि आपको अभी भी यह नहीं मिलता है, तो यहां मेरा कुछ कोड है जहां मैंने हेडर और WAV/RIFF डेटा फ़ाइल के अन्य सभी हिस्सों को तब तक पढ़ा जब तक कि मैं डेटा खंड में नहीं जाता। यह exclusively off the WAV Format Specification पर आधारित है। वास्तविक ध्वनि डेटा निकालना बहुत कठिन नहीं है: आप या तो इसे कच्चे पढ़ सकते हैं और कच्चे का उपयोग कर सकते हैं या उस प्रारूप में रूपांतरण कर सकते हैं, जिसमें आपको आंतरिक रूप से अधिक आराम मिलेगा (32-बिट पीसीएम असम्पीडित डेटा या कुछ)।
नीचे दिए गए कोड को देखते समय, reader.Read...(...)
को fread
समकक्ष मानों और संकेत प्रकार के बाइट आकार के लिए कॉल करें। WavChunks
एक enum एक WAV फ़ाइल हिस्सा के अंदर है कि आईडी की लिटल एन्डियन मान है, और format
चर WAV प्रारूप प्रकार जिस प्रकार की WAV फ़ाइल स्वरूप में निहित किया जा सकता है में से एक है:
enum class WavChunks {
RiffHeader = 0x46464952,
WavRiff = 0x54651475,
Format = 0x020746d66,
LabeledText = 0x478747C6,
Instrumentation = 0x478747C6,
Sample = 0x6C706D73,
Fact = 0x47361666,
Data = 0x61746164,
Junk = 0x4b4e554a,
};
enum class WavFormat {
PulseCodeModulation = 0x01,
IEEEFloatingPoint = 0x03,
ALaw = 0x06,
MuLaw = 0x07,
IMAADPCM = 0x11,
YamahaITUG723ADPCM = 0x16,
GSM610 = 0x31,
ITUG721ADPCM = 0x40,
MPEG = 0x50,
Extensible = 0xFFFE
};
int32 chunkid = 0;
bool datachunk = false;
while (!datachunk) {
chunkid = reader.ReadInt32();
switch ((WavChunks)chunkid) {
case WavChunks::Format:
formatsize = reader.ReadInt32();
format = (WavFormat)reader.ReadInt16();
channels = (Channels)reader.ReadInt16();
channelcount = (int)channels;
samplerate = reader.ReadInt32();
bitspersecond = reader.ReadInt32();
formatblockalign = reader.ReadInt16();
bitdepth = reader.ReadInt16();
if (formatsize == 18) {
int32 extradata = reader.ReadInt16();
reader.Seek(extradata, SeekOrigin::Current);
}
break;
case WavChunks::RiffHeader:
headerid = chunkid;
memsize = reader.ReadInt32();
riffstyle = reader.ReadInt32();
break;
case WavChunks::Data:
datachunk = true;
datasize = reader.ReadInt32();
break;
default:
int32 skipsize = reader.ReadInt32();
reader.Seek(skipsize, SeekOrigin::Current);
break;
}
}
http://www.mega-nerd.com/libsndfile/ http://ccrma.stanford.edu/software/snd/sndlib/ दो पुस्तकालय हैं जो आपको डब्ल्यूएवी – Patashu