Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[C++] Обработка сообщений звуковой карты... 19.10.03 18:12
Автор: CrazyPitbull Статус: Незарегистрированный пользователь
|
Стоит задача записать в файл звук от микрафона. Я определил ID Devis'a (звуковухи), заполнил все необходимые структуры отвечающие за качество звука, открыл устройство waveInOpen(...) затем его запустил waveInStart(). Теперь нужно считать данные в файл. Как я понимаю это нужно делать посредством сообщения MM_WIM_DATA... Если нет, прошу меня поправить и подсказать как надо потаму, что ничего у меня не получается!!!! Если есть какие исходнячки или где в сети информация, прошу поделитесь...
|
|
[C++] Direct to disk recorder 20.10.03 11:12
Автор: amirul <Serge> Статус: The Elderman
|
> Стоит задача записать в файл звук от микрафона. Я > определил ID Devis'a (звуковухи), заполнил все необходимые > структуры отвечающие за качество звука, открыл устройство > waveInOpen(...) затем его запустил waveInStart(). Теперь > нужно считать данные в файл. Как я понимаю это нужно делать > посредством сообщения MM_WIM_DATA... Если нет, прошу меня Все верно :-)
> поправить и подсказать как надо потаму, что ничего у меня > не получается!!!! Если есть какие исходнячки или где в сети > информация, прошу поделитесь... Сабж в KB от микрософты: http://download.microsoft.com/download/platformsdk/sample9/3.1/W31/EN-US/Ddrec.exe
Есть чтение/запись wav файла в/из произвольного звукового устройства с произвольным кодеком.
Если нужно больше инфы, советую посмотреть архивы форума. Здесь пролетало довольно детальное обсуждение этого вопроса. Правда в контексте voice-modem-а, что не меняет сути, т.к. там нужно найти звуковое устройство этого самого модема и работать с ним самым обычным образом.
http://download.microsoft.com/download/platformsdk/sample9/3.1/W31/EN-US/Ddrec.exe
|
| |
Вопрос по заголовкам wav файла 20.10.03 23:27
Автор: CrazyPitbull Статус: Незарегистрированный пользователь
|
Создаю wav файл, проблемм с данными нет, проблемма в заполнении заголовков. Непонятны некоторые пункты:
typedef struct {
char id[4]; - идентификатор файла = "RIFF" = 0x46464952
long len; - длина файла без этого заголовка
} IDRiff;
Что есть len? как я понял это = длинна файла - sizeof(данная структуры).
typedef struct {
char id[4]; - идентификатор = "WAVE" = 0x45564157
char fmt[4]; - идентификатор = "fmt " = 0x20746D66
long len; - длина этого куска WAV - файла,
} IDChuckWave;
Что есть len здесь? Как я понял это длинна файла без предыдущих двух структур.
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;
Что есть AvgBytesPerSec и откуда берётся, зависит ли она от SamplesPerSec?
Непонятно, что align должен содержать?
Описание формата взято с http://codenet.ru/progr/formt/rawsam.php
|
| | |
Не трогай их и будет тебе счастье :-) 21.10.03 07:49
Автор: amirul <Serge> Статус: The Elderman
|
> Создаю wav файл, проблемм с данными нет, проблемма в > заполнении заголовков. Непонятны некоторые пункты: > typedef struct { > char id[4]; - идентификатор файла = "RIFF" = > 0x46464952 > long len; - длина файла без этого заголовка > } IDRiff; > Что есть len? как я понял это = длинна файла - > sizeof(данная структуры). Length - длина данных для данного chunk-f. В чанке RIFF содержится весь файл.
> typedef struct { > char id[4]; - идентификатор = "WAVE" = 0x45564157 > char fmt[4]; - идентификатор = "fmt " = 0x20746D66 > long len; - длина этого куска WAV - файла, > } IDChuckWave; > Что есть len здесь? Как я понял это длинна файла без > предыдущих двух структур. А в чанке WAVE/fmt - звуковой формат (WAVEFORMAT/WAVEFORMATEX) и его длина будет равна полю cbSize из этой структуры.
> 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; Не смотри сюда смотри в MSDN. На самом деле эта структура WAVEFORMAT как я уже написал. Сохраняется в файл один к одному как была получена из ACM. Как получить нужный формат или смотри пример или догадайся сам (MSDN в помощь).
> Что есть AvgBytesPerSec и откуда берётся, зависит ли она от > SamplesPerSec? > Непонятно, что align должен содержать? Читай MSDN.
> Описание формата взято с > http://codenet.ru/progr/formt/rawsam.php А потому как не фиг :-)
Похоже, ты очень невнимательно читал пример, который я тебе дал. Там есть работа с wav файлами.
Вкратце это выглядит так: заходишь в chunk (mmioDescend), делаешь в нем всю необходимую работу (например создаешь другие chunk-и или записываешь данные), выходишь из chunk-а (mmioAscend) - поле Length заполняется автоматически.
И не надо изобретать велосипедов и работать с wav форматом напрямую. Иначе я предложу работать напрямую и с файловой системой или еще ниже - с дисковым контроллером, а также похерить ACM и написать свой кодек mp3.
|
| | | |
Вопрос на отвлечённую тему (про модем) 21.10.03 21:40
Автор: CrazyPitbull Статус: Незарегистрированный пользователь
|
Слушай, ты подкинул мне классный пример для работы со звуковухой, а нет такого же только по работе с модемом? Если есть подкинь линку, буду очень благодарен. Как я понимаю отличеие в них немного, работа с устройством осуществляется подобным образом, только используются TAPI функции(аналоги работы со звуковым устройством).
|
| | | | |
Нету :-( 21.10.03 22:30
Автор: amirul <Serge> Статус: The Elderman
|
> Слушай, ты подкинул мне классный пример для работы со > звуковухой, а нет такого же только по работе с модемом? В свое время долго и нудно разбирался по юзнетовским архивам (groups.google.com). Советую для начала поискать в форуме - там я довольно подробно расписал все. А если будут вопросы - обращайся, может чего и вспомню (было это года два назад).
> Если есть подкинь линку, буду очень благодарен. Как я > понимаю отличеие в них немного, работа с устройством > осуществляется подобным образом, только используются TAPI > функции(аналоги работы со звуковым устройством). Не совсем. Тапи действительно используется, но только для инициализации войс-режима и получения хендла звукового устройства. А дальше в ход идут совершенно те же методы и функции, что и для обычных звуковых устройств.
|
| |
ТО, что надо!!! 20.10.03 11:41
Автор: CrazyPitbull Статус: Незарегистрированный пользователь
|
|
|
|