0 / 0 / 0
Регистрация: 23.12.2016
Сообщений: 2
1

Отображение формата кодирования RIFF Wav файла

23.12.2016, 23:39. Показов 986. Ответов 2
Метки нет (Все метки)

Доброго времени суток!

Возникла такая проблема (простите нуба). При чтении Riff информации из Wav файла нужно чтобы формат кодирования отображался не просто номером(Как на скриншоте), а полноценным текстом, как в представленном файле. () И было бы идеально подключить этот файл, дабы брать информацию для отображения прямо из него.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
using System;
using System.IO;
using System.Runtime.InteropServices;
 
namespace WavRiffAnalayzer
{
    [StructLayout(LayoutKind.Sequential)]
        internal class WavHeader
    {
        public UInt32 ChunkId;
        public UInt32 ChunkSize;
        public UInt32 Format;
        public UInt32 Subchunk1Id;
        public UInt32 Subchunk1Size;
        public UInt16 AudioFormat;
        public UInt16 NumChannels;
        public UInt32 SampleRate;
        public UInt32 ByteRate;
        public UInt16 BlockAlign;
        public UInt16 BitsPerSample;
        public UInt32 Subchunk2Id;
        public UInt32 Subchunk2Size;
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            var header = new WavHeader();
            
            var headerSize = Marshal.SizeOf(header);
 
            System.Console.WriteLine("Введите путь к файлу.");
            string a = Console.ReadLine();
 
            var fileStream = new FileStream(a, FileMode.Open, FileAccess.Read);
            var buffer = new byte[headerSize];
            fileStream.Read(buffer, 0, headerSize);
 
            var headerPtr = Marshal.AllocHGlobal(headerSize);
          
            Marshal.Copy(buffer, 0, headerPtr, headerSize);
           
            Marshal.PtrToStructure(headerPtr, header);
 
            ushort wf = header.AudioFormat; //тут я присвоил число из riff файла к переменной wf
 
            //Console.WriteLine(wf); //энто я проверял прочиталось ли число
            
           
            Console.WriteLine("Формат Кодирования: {0}", header.AudioFormat);  
            Console.WriteLine("Число каналов: {0}", header.NumChannels);
            Console.WriteLine("Частота дискретизации: {0}", header.SampleRate);
            Console.WriteLine("Битность файла: {0}", header.BitsPerSample);
         
                    
            var Seconds = 1.0 * header.ChunkSize / (header.BitsPerSample / 8.0) / header.NumChannels / header.SampleRate;
            var Minutes = (int)Math.Floor(Seconds / 60);
            Seconds = Seconds - (Minutes * 60);
            Console.WriteLine("Продолжительность звучания: {0:00}:{1:00}", Minutes, Seconds);
 
            Console.ReadKey();
 
            Marshal.FreeHGlobal(headerPtr);
        }
    }


Авось кто подскажет решение.

Заранее спасибо!
Миниатюры
Отображение формата кодирования RIFF Wav файла  
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2016, 23:39
Ответы с готовыми решениями:

Как создать звук в формате WAV (RIFF)?
Здравствуйте, уважаемые форумчане! Очень необходимо создать системный звук в формате WAV (RIFF), но...

Преобразование списка текстовых значений АЦП в звуковой файл (PCM, WAV, RIFF)
Доброго здравия, кодеры! Я уже лет 20 ни на чём не писал, поэтому прошу помощи уважаемых, возможно...

Открыть файл формата WAV, воспроизвести его и отобразить график амплитуды и времени этого сигнала (файла), а также спектр сигнала
Здравствуйте ! Помогите пожалуйста с программой на Delphi 7. Не могу написать программу которая...

Работа с файлами формата .Wav и .FLAC
Здравствуйте, у меня состоит проблема в написаном мной аудио проигрывателе. Не могу понять каким...

2
0 / 0 / 0
Регистрация: 23.12.2016
Сообщений: 2
24.12.2016, 00:55  [ТС] 2
не дал ссылку на TXT файл с примером того как должна в результате выглядеть строчка, прошу прощения.
пример будет ниже. самое жуткое, что вариантов кодирования около 150 штук, и в ручную прописывать будет долгим занятием.

WAVE_FORMAT_UNKNOWN 0x0000 /* Microsoft Corporation */
WAVE_FORMAT_PCM 0x0001 /* Microsoft Corporation */
WAVE_FORMAT_ADPCM 0x0002 /* Microsoft Corporation */
WAVE_FORMAT_IEEE_FLOAT 0x0003 /* Microsoft Corporation */
WAVE_FORMAT_VSELP 0x0004 /* Compaq Computer Corp. */
WAVE_FORMAT_IBM_CVSD 0x0005 /* IBM Corporation */
WAVE_FORMAT_ALAW 0x0006 /* Microsoft Corporation */
WAVE_FORMAT_MULAW 0x0007 /* Microsoft Corporation */
WAVE_FORMAT_DTS 0x0008 /* Microsoft Corporation */
WAVE_FORMAT_DRM 0x0009 /* Microsoft Corporation */
WAVE_FORMAT_OKI_ADPCM 0x0010 /* OKI */
0
229 / 112 / 79
Регистрация: 17.10.2016
Сообщений: 312
24.12.2016, 01:05 3
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
using System;
using System.IO;
using System.Runtime.InteropServices;
class Program
{
 
    public enum WavFormats : UInt16
    {
        WAVE_FORMAT_UNKNOWN = 0x0000, /* Microsoft Corporation */
        WAVE_FORMAT_PCM = 0x0001, /* Microsoft Corporation */
        WAVE_FORMAT_ADPCM = 0x0002, /* Microsoft Corporation */
        WAVE_FORMAT_IEEE_FLOAT = 0x0003, /* Microsoft Corporation */
        WAVE_FORMAT_VSELP = 0x0004, /* Compaq Computer Corp. */
        WAVE_FORMAT_IBM_CVSD = 0x0005, /* IBM Corporation */
        WAVE_FORMAT_ALAW = 0x0006, /* Microsoft Corporation */
        WAVE_FORMAT_MULAW = 0x0007, /* Microsoft Corporation */
        WAVE_FORMAT_DTS = 0x0008, /* Microsoft Corporation */
        WAVE_FORMAT_DRM = 0x0009, /* Microsoft Corporation */
        WAVE_FORMAT_OKI_ADPCM = 0x0010, /* OKI */
        WAVE_FORMAT_DVI_ADPCM = 0x0011, /* Intel Corporation */
        WAVE_FORMAT_IMA_ADPCM = (WAVE_FORMAT_DVI_ADPCM), /* Intel Corporation */
        WAVE_FORMAT_MEDIASPACE_ADPCM = 0x0012, /* Videologic */
        WAVE_FORMAT_SIERRA_ADPCM = 0x0013, /* Sierra Semiconductor Corp */
        WAVE_FORMAT_G723_ADPCM = 0x0014, /* Antex Electronics Corporation */
        WAVE_FORMAT_DIGISTD = 0x0015, /* DSP Solutions, Inc. */
        WAVE_FORMAT_DIGIFIX = 0x0016, /* DSP Solutions, Inc. */
        WAVE_FORMAT_DIALOGIC_OKI_ADPCM = 0x0017, /* Dialogic Corporation */
        WAVE_FORMAT_MEDIAVISION_ADPCM = 0x0018, /* Media Vision, Inc. */
        WAVE_FORMAT_CU_CODEC = 0x0019, /* Hewlett-Packard Company */
        WAVE_FORMAT_YAMAHA_ADPCM = 0x0020, /* Yamaha Corporation of America */
        WAVE_FORMAT_SONARC = 0x0021, /* Speech Compression */
        WAVE_FORMAT_DSPGROUP_TRUESPEECH = 0x0022, /* DSP Group, Inc */
        WAVE_FORMAT_ECHOSC1 = 0x0023, /* Echo Speech Corporation */
        WAVE_FORMAT_AUDIOFILE_AF36 = 0x0024, /* Virtual Music, Inc. */
        WAVE_FORMAT_APTX = 0x0025, /* Audio Processing Technology */
        WAVE_FORMAT_AUDIOFILE_AF10 = 0x0026, /* Virtual Music, Inc. */
        WAVE_FORMAT_PROSODY_1612 = 0x0027, /* Aculab plc */
        WAVE_FORMAT_LRC = 0x0028, /* Merging Technologies S.A. */
        WAVE_FORMAT_DOLBY_AC2 = 0x0030, /* Dolby Laboratories */
        WAVE_FORMAT_GSM610 = 0x0031, /* Microsoft Corporation */
        WAVE_FORMAT_MSNAUDIO = 0x0032, /* Microsoft Corporation */
        WAVE_FORMAT_ANTEX_ADPCME = 0x0033, /* Antex Electronics Corporation */
        WAVE_FORMAT_CONTROL_RES_VQLPC = 0x0034, /* Control Resources Limited */
        WAVE_FORMAT_DIGIREAL = 0x0035, /* DSP Solutions, Inc. */
        WAVE_FORMAT_DIGIADPCM = 0x0036, /* DSP Solutions, Inc. */
        WAVE_FORMAT_CONTROL_RES_CR10 = 0x0037, /* Control Resources Limited */
        WAVE_FORMAT_NMS_VBXADPCM = 0x0038, /* Natural MicroSystems */
        WAVE_FORMAT_CS_IMAADPCM = 0x0039, /* Crystal Semiconductor IMA ADPCM */
        WAVE_FORMAT_ECHOSC3 = 0x003A, /* Echo Speech Corporation */
        WAVE_FORMAT_ROCKWELL_ADPCM = 0x003B, /* Rockwell International */
        WAVE_FORMAT_ROCKWELL_DIGITALK = 0x003C, /* Rockwell International */
        WAVE_FORMAT_XEBEC = 0x003D, /* Xebec Multimedia Solutions Limited */
        WAVE_FORMAT_G721_ADPCM = 0x0040, /* Antex Electronics Corporation */
        WAVE_FORMAT_G728_CELP = 0x0041, /* Antex Electronics Corporation */
        WAVE_FORMAT_MSG723 = 0x0042, /* Microsoft Corporation */
        WAVE_FORMAT_MPEG = 0x0050, /* Microsoft Corporation */
        WAVE_FORMAT_RT24 = 0x0052, /* InSoft, Inc. */
        WAVE_FORMAT_PAC = 0x0053, /* InSoft, Inc. */
        WAVE_FORMAT_MPEGLAYER3 = 0x0055, /* ISO/MPEG Layer3 Format Tag */
        WAVE_FORMAT_LUCENT_G723 = 0x0059, /* Lucent Technologies */
        WAVE_FORMAT_CIRRUS = 0x0060, /* Cirrus Logic */
        WAVE_FORMAT_ESPCM = 0x0061, /* ESS Technology */
        WAVE_FORMAT_VOXWARE = 0x0062, /* Voxware Inc */
        WAVE_FORMAT_CANOPUS_ATRAC = 0x0063, /* Canopus, co., Ltd. */
        WAVE_FORMAT_G726_ADPCM = 0x0064, /* APICOM */
        WAVE_FORMAT_G722_ADPCM = 0x0065, /* APICOM */
        WAVE_FORMAT_DSAT_DISPLAY = 0x0067, /* Microsoft Corporation */
        WAVE_FORMAT_VOXWARE_BYTE_ALIGNED = 0x0069, /* Voxware Inc */
        WAVE_FORMAT_VOXWARE_AC8 = 0x0070, /* Voxware Inc */
        WAVE_FORMAT_VOXWARE_AC10 = 0x0071, /* Voxware Inc */
        WAVE_FORMAT_VOXWARE_AC16 = 0x0072, /* Voxware Inc */
        WAVE_FORMAT_VOXWARE_AC20 = 0x0073, /* Voxware Inc */
        WAVE_FORMAT_VOXWARE_RT24 = 0x0074, /* Voxware Inc */
        WAVE_FORMAT_VOXWARE_RT29 = 0x0075, /* Voxware Inc */
        WAVE_FORMAT_VOXWARE_RT29HW = 0x0076, /* Voxware Inc */
        WAVE_FORMAT_VOXWARE_VR12 = 0x0077, /* Voxware Inc */
        WAVE_FORMAT_VOXWARE_VR18 = 0x0078, /* Voxware Inc */
        WAVE_FORMAT_VOXWARE_TQ40 = 0x0079, /* Voxware Inc */
        WAVE_FORMAT_SOFTSOUND = 0x0080, /* Softsound, Ltd. */
        WAVE_FORMAT_VOXWARE_TQ60 = 0x0081, /* Voxware Inc */
        WAVE_FORMAT_MSRT24 = 0x0082, /* Microsoft Corporation */
        WAVE_FORMAT_G729A = 0x0083, /* AT&T Labs, Inc. */
        WAVE_FORMAT_MVI_MVI2 = 0x0084, /* Motion Pixels */
        WAVE_FORMAT_DF_G726 = 0x0085, /* DataFusion Systems (Pty) (Ltd) */
        WAVE_FORMAT_DF_GSM610 = 0x0086, /* DataFusion Systems (Pty) (Ltd) */
        WAVE_FORMAT_ISIAUDIO = 0x0088, /* Iterated Systems, Inc. */
        WAVE_FORMAT_ONLIVE = 0x0089, /* OnLive! Technologies, Inc. */
        WAVE_FORMAT_SBC24 = 0x0091, /* Siemens Business Communications Sys */
        WAVE_FORMAT_DOLBY_AC3_SPDIF = 0x0092, /* Sonic Foundry */
        WAVE_FORMAT_MEDIASONIC_G723 = 0x0093, /* MediaSonic */
        WAVE_FORMAT_PROSODY_8KBPS = 0x0094, /* Aculab plc */
        WAVE_FORMAT_ZYXEL_ADPCM = 0x0097, /* ZyXEL Communications, Inc. */
        WAVE_FORMAT_PHILIPS_LPCBB = 0x0098, /* Philips Speech Processing */
        WAVE_FORMAT_PACKED = 0x0099, /* Studer Professional Audio AG */
        WAVE_FORMAT_MALDEN_PHONYTALK = 0x00A0, /* Malden Electronics Ltd. */
        WAVE_FORMAT_RHETOREX_ADPCM = 0x0100, /* Rhetorex Inc. */
        WAVE_FORMAT_IRAT = 0x0101, /* BeCubed Software Inc. */
        WAVE_FORMAT_VIVO_G723 = 0x0111, /* Vivo Software */
        WAVE_FORMAT_VIVO_SIREN = 0x0112, /* Vivo Software */
        WAVE_FORMAT_DIGITAL_G723 = 0x0123, /* Digital Equipment Corporation */
        WAVE_FORMAT_SANYO_LD_ADPCM = 0x0125, /* Sanyo Electric Co., Ltd. */
        WAVE_FORMAT_SIPROLAB_ACEPLNET = 0x0130, /* Sipro Lab Telecom Inc. */
        WAVE_FORMAT_SIPROLAB_ACELP4800 = 0x0131, /* Sipro Lab Telecom Inc. */
        WAVE_FORMAT_SIPROLAB_ACELP8V3 = 0x0132, /* Sipro Lab Telecom Inc. */
        WAVE_FORMAT_SIPROLAB_G729 = 0x0133, /* Sipro Lab Telecom Inc. */
        WAVE_FORMAT_SIPROLAB_G729A = 0x0134, /* Sipro Lab Telecom Inc. */
        WAVE_FORMAT_SIPROLAB_KELVIN = 0x0135, /* Sipro Lab Telecom Inc. */
        WAVE_FORMAT_G726ADPCM = 0x0140, /* Dictaphone Corporation */
        WAVE_FORMAT_QUALCOMM_PUREVOICE = 0x0150, /* Qualcomm, Inc. */
        WAVE_FORMAT_QUALCOMM_HALFRATE = 0x0151, /* Qualcomm, Inc. */
        WAVE_FORMAT_TUBGSM = 0x0155, /* Ring Zero Systems, Inc. */
        WAVE_FORMAT_MSAUDIO1 = 0x0160, /* Microsoft Corporation */
        WAVE_FORMAT_UNISYS_NAP_ADPCM = 0x0170, /* Unisys Corp. */
        WAVE_FORMAT_UNISYS_NAP_ULAW = 0x0171, /* Unisys Corp. */
        WAVE_FORMAT_UNISYS_NAP_ALAW = 0x0172, /* Unisys Corp. */
        WAVE_FORMAT_UNISYS_NAP_16K = 0x0173, /* Unisys Corp. */
        WAVE_FORMAT_CREATIVE_ADPCM = 0x0200, /* Creative Labs, Inc */
        WAVE_FORMAT_CREATIVE_FASTSPEECH8 = 0x0202, /* Creative Labs, Inc */
        WAVE_FORMAT_CREATIVE_FASTSPEECH10 = 0x0203, /* Creative Labs, Inc */
        WAVE_FORMAT_UHER_ADPCM = 0x0210, /* UHER informatic GmbH */
        WAVE_FORMAT_QUARTERDECK = 0x0220, /* Quarterdeck Corporation */
        WAVE_FORMAT_ILINK_VC = 0x0230, /* I-link Worldwide */
        WAVE_FORMAT_RAW_SPORT = 0x0240, /* Aureal Semiconductor */
        WAVE_FORMAT_ESST_AC3 = 0x0241, /* ESS Technology, Inc. */
        WAVE_FORMAT_IPI_HSX = 0x0250, /* Interactive Products, Inc. */
        WAVE_FORMAT_IPI_RPELP = 0x0251, /* Interactive Products, Inc. */
        WAVE_FORMAT_CS2 = 0x0260, /* Consistent Software */
        WAVE_FORMAT_SONY_SCX = 0x0270, /* Sony Corp. */
        WAVE_FORMAT_FM_TOWNS_SND = 0x0300, /* Fujitsu Corp. */
        WAVE_FORMAT_BTV_DIGITAL = 0x0400, /* Brooktree Corporation */
        WAVE_FORMAT_QDESIGN_MUSIC = 0x0450, /* QDesign Corporation */
        WAVE_FORMAT_VME_VMPCM = 0x0680, /* AT&T Labs, Inc. */
        WAVE_FORMAT_TPC = 0x0681, /* AT&T Labs, Inc. */
        WAVE_FORMAT_OLIGSM = 0x1000, /* Ing C. Olivetti & C., S.p.A. */
        WAVE_FORMAT_OLIADPCM = 0x1001, /* Ing C. Olivetti & C., S.p.A. */
        WAVE_FORMAT_OLICELP = 0x1002, /* Ing C. Olivetti & C., S.p.A. */
        WAVE_FORMAT_OLISBC = 0x1003, /* Ing C. Olivetti & C., S.p.A. */
        WAVE_FORMAT_OLIOPR = 0x1004, /* Ing C. Olivetti & C., S.p.A. */
        WAVE_FORMAT_LH_CODEC = 0x1100, /* Lernout & Hauspie */
        WAVE_FORMAT_NORRIS = 0x1400, /* Norris Communications, Inc. */
        WAVE_FORMAT_SOUNDSPACE_MUSICOMPRESS = 0x1500, /* AT&T Labs, Inc. */
        WAVE_FORMAT_DVM = 0x2000 /* FAST Multimedia AG */
    }
 
 
 
   [StructLayout(LayoutKind.Sequential)]
    public class WavHeader
    {
        public UInt32 ChunkId;
        public UInt32 ChunkSize;
        public UInt32 Format;
        public UInt32 Subchunk1Id;
        public UInt32 Subchunk1Size;
        public WavFormats AudioFormat;
        public UInt16 NumChannels;
        public UInt32 SampleRate;
        public UInt32 ByteRate;
        public UInt16 BlockAlign;
        public UInt16 BitsPerSample;
        public UInt32 Subchunk2Id;
        public UInt32 Subchunk2Size;
    }
 
  
        static void Main(string[] args)
        {
            var header = new WavHeader();
 
            var headerSize = Marshal.SizeOf(header);
 
            System.Console.WriteLine("Введите путь к файлу.");
            string a = Console.ReadLine();
 
            var fileStream = new FileStream(a, FileMode.Open, FileAccess.Read);
            var buffer = new byte[headerSize];
            fileStream.Read(buffer, 0, headerSize);
 
            var headerPtr = Marshal.AllocHGlobal(headerSize);
 
            Marshal.Copy(buffer, 0, headerPtr, headerSize);
 
            Marshal.PtrToStructure(headerPtr, header);
 
           WavFormats wf = header.AudioFormat; //тут я присвоил число из riff файла к переменной wf
 
            //Console.WriteLine(wf); //энто я проверял прочиталось ли число
 
 
            Console.WriteLine("Формат Кодирования: {0}", header.AudioFormat);
            Console.WriteLine("Число каналов: {0}", header.NumChannels);
            Console.WriteLine("Частота дискретизации: {0}", header.SampleRate);
            Console.WriteLine("Битность файла: {0}", header.BitsPerSample);
 
 
            var Seconds = 1.0 * header.ChunkSize / (header.BitsPerSample / 8.0) / header.NumChannels / header.SampleRate;
            var Minutes = (int)Math.Floor(Seconds / 60);
            Seconds = Seconds - (Minutes * 60);
            Console.WriteLine("Продолжительность звучания: {0:00}:{1:00}", Minutes, Seconds);
 
            Marshal.FreeHGlobal(headerPtr);
        
        Console.ReadKey(true);
 
    }
 
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.12.2016, 01:05

Запись аудио-файлов формата wav
Здравствуйте, ситуация такая,занимаюсь распознаванием речи, в матлабе записывал слова с помощью...

скрытие информации в аудио файлах формата WAV
Как реализовать скрытие информации в аудио файлах формата WAV??? может у кого-то есть какие-то...

VB 6 Возможно ли определить считывают ли файл формата test.wav
Например есть звуковой файл test.wav Можно ли с помощью vb 6 узнать используют ли его сейчас в...

Написать функцию вычисляющую амплитудный спектр отсчетов звукового сигнала формата WAV
Нужно написать функцию вычисляющую амплитудный спектр отсчетов звукового сигнала формата WAV....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.