| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [С++]Чтение/запись 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" данные. Для удобства Попробую поработать с тем, что по ссылке. Спасибо. |
| Автор: Proger10 12.6.2010, 18:09 |
| Странно, но у меня опять возникла такая потребность и проблема) На тот раз, в качестве решения, я использовал библиотеку libsndfile. На этот раз потребовалось скомпилировать проект под Mac OS X и приплыли. Из-за libsndfile. Насколько я понял он предсобран под i386. Несмотря на то, что я его собирал под 64биткой, видимо что-то осталось для 32бит и на отрез отказывается работать. Вот думаю, может есть какой небольшой исходник чтения и записи wav файла? Обыскал уже весь интернет, толком ничего так и не могу найти.. |
| Автор: Sanaff 12.6.2010, 22:58 | ||
Описание формата файла wav у меня есть, надо - скину. там несложно разобраться и написать самому прогу чтения и записи wav файла [email protected] |
| Автор: Proger10 13.6.2010, 00:02 |
| Ну, в принципе, описание формата найти не очень сложно. Вот здесь красиво расписано 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 и убрать лишние хэдеры. |