|
|
|
wav format files
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуйста, как правильно осуществить запись с детальным описанием формата после прочтения этого файла? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 15:18 |
|
||
|
wav format files
|
|||
|---|---|---|---|
|
#18+
WavesqlПодскажите пожалуйста, как правильно осуществить запись с детальным описанием формата после прочтения этого файла? Т.е. как подабрать WaveFormat? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 15:33 |
|
||
|
wav format files
|
|||
|---|---|---|---|
|
#18+
после открытия файла <file.wav>, нужно записать в новый файл прочитанную информацию о wav-файле и вот как бы записать эту ниформацию о нем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 15:44 |
|
||
|
wav format files
|
|||
|---|---|---|---|
|
#18+
Wavesqlпосле открытия файла <file.wav>, нужно записать в новый файл прочитанную информацию о wav-файле и вот как бы записать эту ниформацию о нем? Текстом, или скопируй заголовок... Не понял, что требуется. При чем здесь wav файл? При чем открытие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 15:48 |
|
||
|
wav format files
|
|||
|---|---|---|---|
|
#18+
Имеется ввиду разобрать заголовок и записать в файл? Тогда смотрим формат файла и считываем в соответствии с форматом и расшифровываем в файл или что спросили то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 15:54 |
|
||
|
wav format files
|
|||
|---|---|---|---|
|
#18+
Den_diИмеется ввиду разобрать заголовок и записать в файл? Тогда смотрим формат файла и считываем в соответствии с форматом и расшифровываем в файл или что спросили то? После первого уточнения вопроса стало понятно, что записать необходимо не на звуковое устройство. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 15:59 |
|
||
|
wav format files
|
|||
|---|---|---|---|
|
#18+
Да, необходимо разобрать заголовок файла .wav и полученную информацию записать в файл. Просто не совем понятно как это осуществляется... Например объявляю след. структуру: typedef struct{ WORD wFormatTag; WORD nChannels; DWORD nSamplesPerSec; DWORD nAvgBytesPerSec; WORD nBlockAlign; WORD wBitsPerSample; WORD cbSize; } WAVEFORMAT; Затем открыть файл *.wav, считать его и можно записывать в файл значения полей структуры? так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2006, 12:16 |
|
||
|
wav format files
|
|||
|---|---|---|---|
|
#18+
W A V - формат Это RIFF файл фирмы Microsoft. Он используется в Windows. Поэтому весьма "популярен". Он похож на AIFF - формат Apple, который используется для хранения высококачественного звука инструментов, он так же используется на SGI. Он похож, но не совместим. Вначале идет заголовок RIFF файла: typedef struct { char id[4]; - идентификатор файла = "RIFF" = 0x46464952 long len; - длина файла без этого заголовка } IDRiff; Сам WAV-файл может состоять из нескольких кусков, а эти куски, могут содержать по несколько выборок, или какую-то другую информацию. Но чаще всего, пока - всегда, часть одна и выборка одна. Заголовок куска WAV: typedef struct { char id[4]; - идентификатор = "WAVE" = 0x45564157 char fmt[4]; - идентификатор = "fmt " = 0x20746D66 long len; - длина этого куска WAV - файла, } IDChuckWave; За ним не посредственно кусок WAV: typedef struct { int type; - тип звуковых данных, бывает - !!! 1 - просто выборка; 0x101 - IBM mu-law; 0x102 - IBM a-law; 0x103 - ADPCM. int channels; - число каналов 1/2 - !!! long SamplesPerSec; - частота выборки - !!! long AvgBytesPerSec; - частота выдачи байтов int align; - выравнивание int bits; - число бит на выборку - !!! } IDWave; Помеченные - особо необходимы. Далее идентификатор выборки: typedef struct { char id[4]; - идентификатор ="data" =0x61746164 long len; - длина выборки ( кратно 2 ) } IDSampleWave; Выборок в куске может быть несколько. Пример программы для просмотра WAV: #include #include typedef struct { char id_riff[4]; long len_riff; char id_chuck[4]; char fmt[4]; long len_chuck; int type; int channels; long freq; long bytes; int align; int bits; char id_data[4]; long len_data; } TitleWave; void main ( int argc, char * argv[] ) { FILE * f; TitleWave tw; if ( argc<2 ) { printf("Укажи имя .wav файла\n"); return ; } f=fopen(argv[1],"rb"); if ( f==0 ) { printf("Не открыть файл - %s\n",argv[1]); return; } fread(&tw,sizeof(TitleWave),1,f); fclose(f); printf("LEN RIFF\t - %ld\n", tw.len_riff ); if ( strncmp(tw.id_riff,"RIFF",4)!=0 ) printf("Не совпал идентификатор RIFF\n"); printf("LEN Chuck\t - %ld\n", tw.len_chuck ); if ( strncmp(tw.id_chuck,"WAVE",4)!=0 ) printf("Не совпал идентификатор CHUCK\n"); if ( strncmp(tw.fmt,"fmt ",4)!=0 ) printf("Не совпал идентификатор FMT\n"); printf("Type\t\t - %d\n", tw.type ); printf("Channels\t - %d\n", tw.channels ); printf("Sample Per Sec\t - %d\n", tw.freq ); printf("Bytes Per Sec\t - %d\n", tw.bytes ); printf("Bits\t\t - %d\n", tw.bits ); printf("Aligned\t\t - %d\n", tw.align ); printf("LEN Data\t - %ld\n", tw.len_data ); if ( strncmp(tw.id_data,"data",4)!=0 ) printf("Не совпал идентификатор DATA\n"); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2006, 12:26 |
|
||
|
wav format files
|
|||
|---|---|---|---|
|
#18+
Я, вообще-то использую mmio: например, тута ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2006, 12:28 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34074473&tid=2030211]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
57ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 368ms |

| 0 / 0 |
