![]() |
|
|
#1 (permalink) |
|
Адски вкусный
|
Народ выручайте!!!!!!!!!!!!!!!!
Все кто знают, как можно в С++ открывать wav файлы, находящиеся в оперативной памяти, обрабатывать их пишите в эту тему я буду рад любой помощи. |
|
|
|
|
|
#2 (permalink) |
|
Местный
Регистрация: 03.03.2007
Адрес: Москва, Люблино
Возраст: 33
Сообщений: 946
|
Формат wav-файла очень прост и выдрать оттуда информацию сможет даже пьяный первокурсник, а уж где они находятся - в памяти или в файле - не суть важно, в любом случае это всего лишь адрес.
typedef struct { char id_riff[4]; // "RIFF" DWORD len_riff; char id_chuck[4]; // "WAVE" char fmt[4]; // "fmt " DWORD len_chuck; WORD type; WORD channels; DWORD freq; DWORD bytes; WORD align; WORD bits; char id_data[4]; // "data" DWORD len_data; } TWaveHeader; Расшифровка каждой позиции, в принципе, не обязательна, главное, что нас интересует, - это число каналов "channels" (в зависимости от этого числа будем по-разному читать данные) и, собственно, битрейт - bits (количество бит на кодирование одного сэмпла). (Чтобы посчитать длительность выборки понадобится еще и freq). Как нетрудно посчитать, вся структура занимает ровно 44 байта, следовательно, в любом файле, начиная, с 45-го байта идут данные, которые тебе и надо выдрать в зависимости от указанных выше параметров (channels, bits). Не забываем, что char - это 1 байт, WORD - 2, DWORD - 4! |
|
|
|
|
|
#3 (permalink) |
|
Адски вкусный
|
Спасибо
, но мне не нужно выдирать ничего из wav файла, мне просто нужно его открыть в двоичке, с возможностью дальнейшего изменения данных, желательно чтобы я смог открыть его кусками, потому что файл весит гиг с лишним, от этого сишник может зависнуть![]() |
|
|
|
![]() |
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
| Опции темы | |
| Опции просмотра | |
|
|