Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [С++]Чтение/запись wave файла на


Автор: Proger10 16.11.2009, 01:49
Ищу исходники функций записи и чтений Wave несжатых файлов (у меня данные в raw формате).
Странно, но по инету я не смог найти казалось бы распространённых вещей. Может есть у кого?

Автор: Static 17.11.2009, 14:35
http://www.thisisnotalabel.com/How-to-Read-and-Write-WAV-Files---in-C-and-VB.php не поможет? Я так понимаю, что тебе надо просто соответствующий header для своих raw-данных сделать.

Автор: Proger10 17.11.2009, 23:23
Ну да, дело в принципе только в хедере, чтобы постоянно не задавать количество каналов, битрейт при проигрывании файлов. Да и чтобы проигрывателями играли мои "raw" данные. Для удобства smile

Попробую поработать с тем, что по ссылке. Спасибо.

Автор: Proger10 12.6.2010, 18:09
Странно, но у меня опять возникла такая потребность и проблема) На тот раз, в качестве решения, я использовал библиотеку libsndfile. На этот раз потребовалось скомпилировать проект под Mac OS X и приплыли. Из-за libsndfile. Насколько я понял он предсобран под i386. Несмотря на то, что я его собирал под 64биткой, видимо что-то осталось для 32бит и на отрез отказывается работать.

Вот думаю, может есть какой небольшой исходник чтения и записи wav файла? Обыскал уже весь интернет, толком ничего так и не могу найти..

Автор: Sanaff 12.6.2010, 22:58
Цитата(Proger10 @ 12.6.2010,  16:09)
Вот думаю, может есть какой небольшой исходник чтения и записи wav файла? Обыскал уже весь интернет, толком ничего так и не могу найти..

Описание формата файла wav у меня есть, надо - скину.
там несложно разобраться и написать самому прогу чтения и записи wav файла
[email protected]

Автор: Proger10 13.6.2010, 00:02
Ну, в принципе, описание формата найти не очень сложно. Вот здесь красиво расписано smile
https://ccrma.stanford.edu/courses/422/projects/WaveFormat/

Попробую поработать в этом направлении пока..

Автор: Sanaff 13.6.2010, 12:27
На русском есть:

Ниже приведено описание формата WAVe файлов в его простейшем варианте.
Файл состоит из "кусочков" (англ. "chunks"), каждый "кусочек" предваряется 4-х байтным идентификатором "кусочка" и 4-х байтным полем, содержащим длину "кусочка" в байтах. 
Смещение Размер Содержимое
0        4      'RIFF'
4        4      размер RIFF-данных // должно быть на 4 меньше размера файла
8        4      'WAVE' // какие именно данные, WAVE означает звук
12       4      'fmt ' // начало "кусочка" описания формата
16       4      размер области описания формата в байтах
20       2      категория формата // для Microsoft PCM - 0x0001
22       2      число каналов // 1 - моно, 2 - стерео
24       4      частота дискретизации (sampling rate)
28       4      средняя скорость потока (байт/сек)
32       2      размер блока данных 

Следующее поле только для категории Microsoft PCM ...
34       2      число бит на отсчет // например, 8 или 16

36       4      'data' // начало "кусочка" непосредственно аудио-данных
40       4      размер аудио-данных в байтах
44       .....  аудио-данные // для Microsoft PCM отсчеты рассматриваются 
                как беззнаковые целые числа

Автор: ИванМ 15.6.2010, 19:08
Proger10, делал когда-то давно для direct sound. Во вложении исходный код. Правда, не очень написано, и, причем, для C++ Builder'а. Но суть, думаю, будет понятна.
Чтобы работало под все компиляторы нужно вместо String использовать std::string и убрать лишние хэдеры.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)