Запись

Общая спецификация MCI поддерживает запись с помощью цифровых видео, MIDI sequencer, видеокассетных записей (VCR) и звуковых устройств с волновым форматом; однако только устройства waveform-audio и VCR в настоящее время реализуют возможности записи. Вы можете вставить или перезаписать записанные данные в существующий файл или запись в новый файл. Чтобы записать данные в существующий файл, откройте устройство waveform-audio и файл, как обычно. Чтобы записать данные в новый файл, при открытии устройства укажите "new" в качестве имени устройства, если используется интерфейс командной строки. Если вы используете интерфейс командного сообщения, укажите имя файла нулевой длины.

Когда MCI создает новый файл для записи, формат данных устанавливается в формат по умолчанию, заданный драйвером устройства. Чтобы использовать формат, отличный от формата по умолчанию, можно использовать команду set (MCI_SET).

Чтобы начать запись, используйте команду record (или MCI_RECORD и структуру MCI_RECORD_PARMS ).

Если запись выполняется в режиме вставки в существующий файл, можно использовать флаги "from" (MCI_FROM) и "to" (MCI_TO) команды record , чтобы указать начальную и конечную позиции записи. Например, если запись в файл длиной 20 секунд и запись начинается с 5 секунд, а запись заканчивается через 10 секунд, итоговый файл будет иметь длину 25 секунд. В файл будет вставлен 5-секундный сегмент в исходную запись через 5 секунд.

При записи в режиме перезаписи в существующий файл можно использовать флаги "from" и "to", чтобы указать начальное и конечное расположения перезаписываемого раздела. Например, если запись выполняется в файл длиной 20 секунд, а запись начинается с 5 секунд и заканчивается в 10 секунд, запись по-прежнему сохраняется на 20 секунд, но раздел, начинающийся с 5 секунд и заканчивающийся на 10 секунд, будет заменен.

Если вы не укажете конечное расположение, запись продолжается до тех пор, пока не будет отправлена команда остановки (MCI_STOP) или пока в драйвере не закончится свободное место на диске. При записи в новый файл можно опустить флаг "from" или задать для него нулевое значение, чтобы начать запись в начале нового файла. Вы можете указать конечное расположение для завершения записи при записи в новый файл.

Команда record иногда является точной в пределах 1 секунды от начального расположения, например с устройствами VCR. Для более точной записи следует использовать команду подсказки (MCI_CUE). Эта команда распознается устройствами цифрового видео, VCR и waveform-audio. Дополнительные сведения о записи с помощью устройств VCR см. в разделе Службы VCR.

Сохранение записанного файла

После завершения записи используйте команду сохранения (или MCI_SAVE и структуру MCI_SAVE_PARMS ), чтобы сохранить запись перед закрытием устройства.

Примечание

Если закрыть устройство без сохранения, записанные данные будут потеряны.

 

Проверка уровней ввода (только PCM)

Чтобы получить уровень входного сигнала перед записью на устройстве ввода волнового звука PCM (Pulse Code Modulation), используйте команду состояния (MCI_STATUS). Укажите флаг "level" (или флаг MCI_STATUS_ITEM и задайте для элемента dwItem структуры MCI_STATUS_PARMS значение MCI_WAVE_STATUS_LEVEL). Возвращается средний уровень входного сигнала. Значение левого канала — в слове высокого порядка, а значение правого или моноканала — в слове нижнего порядка.

Входной уровень представлен в виде неподписаного значения. Для 8-разрядных выборок это значение находится в диапазоне от 0 до 127 (0x7F). Для 16-разрядных выборок он находится в диапазоне от 0 до 32 767 (0x7FFF).