Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Запись WAVE

7.8K
03 мая 2007 года
ilich
17 / / 04.05.2005
Доброго времени суток!
Проблема в следующем: надо записать wav файл. Пишу так (c builder):
Код:
SndLen = 44100 * 4 * 2 * ceil(fsize / (44100 * (4) * 2));
       SndLen = 0;

       strcat( wh1.riff, "RIFF" );
       wh1.filesize = SndLen + 38;
       strcat( wh1.rifftype, "WAVE" );
       strcat( wh1.chunk_id1, "fmt ");
       wh1.chunksize1 = 16;
       wh1.wFormatTag = 1;
       wh1.nChannels = 2;
       wh1.nSamplesPerSec = 44100;
       wh1.nAvgBytesPerSec = wh1.nSamplesPerSec * wh1.wBitsPerSample % 8 * wh1.nChannels;
       wh1.nBlockAlign = wh1.nChannels * wh1.wBitsPerSample % 8;
       wh1.wBitsPerSample = 16;
       strcat( wh1.chunk_id2, "data" );
       wh1.chunksize2 = SndLen;


       of = fopen( "d.wav", "r" );
       
       wavFile = fopen( "2.wav", "w" );
       fwrite( &wh1, sizeof( wh1 ), 1, wavFile );

                     int ss;
                     char buf[1024];

       while( !feof( of ) )
       {
                ss = fread( &buf, 1024, 1, of );
                fwrite( &buf, 1024, 1, wavFile );
       }
       fclose( of );

       fclose( wavFile );


немного кривовато :). Видимо, что-то не так в заголовке, винамп пишет что файл поврежден. Кто поможет? Или есть рабочий пример?
25K
07 мая 2008 года
Mein
17 / / 09.08.2007
Цитата:
wavFile = fopen( "2.wav", "w" );



Проверь метод записи. У меня была подобная проблема пару лет назад. Что-то не то было с символом конца строки

9.4K
07 мая 2008 года
AIGrifon
165 / / 13.11.2007
Напомню (а тем, кто не знал - расскажу), что функция fopen по-молчанию открывает указанный файл в ТЕКСТОВОМ режиме.
Для записи wav файлов больше подходит двоичный режим.
Для его использования требуется заменть код

 
Код:
of = fopen( "d.wav", "r" );
...
wavFile = fopen( "2.wav", "w" );


на

[highlight=C]
of = fopen( "d.wav", "rb" );

wavFile = fopen( "2.wav", "wb" );
[/highlight]
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог