Partilhar via


Gravação

[O recurso associado a esta página, MCI, é um recurso legado. Foi substituído por MediaPlayer. MediaPlayer foi otimizado para Windows 10 e Windows 11. A Microsoft recomenda vivamente que o novo código utilize MediaPlayer em vez de MCI, sempre que possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

A especificação geral MCI suporta gravação com vídeo digital, sequenciador MIDI, gravador de vídeo (VCR) e dispositivos de áudio em forma de onda; no entanto, apenas dispositivos de áudio de forma de onda e VCR atualmente implementam recursos de gravação. Você pode inserir ou substituir informações gravadas em um arquivo ou registro existente em um novo arquivo. Para gravar num ficheiro existente, abra um dispositivo de áudio de forma de onda e um ficheiro como faria normalmente. Para gravar em um novo arquivo, quando você abrir o dispositivo, especifique "novo" como o nome do dispositivo se estiver usando a interface de cadeia de comando. Se você estiver usando a interface de mensagem de comando, especifique um nome de arquivo de comprimento zero.

Quando a MCI cria um novo arquivo para gravação, o formato de dados é definido como um formato padrão especificado pelo driver de dispositivo. Para usar um formato diferente do formato padrão, você pode usar o comando set (MCI_SET).

Para iniciar a gravação, use o comando record (ou MCI_RECORD e a estrutura MCI_RECORD_PARMS).

Se gravar em modo de inserção num ficheiro existente, pode utilizar as opções "de" (MCI_FROM) e "para" (MCI_TO) do comando record para especificar as posições inicial e final da gravação. Por exemplo, se você gravar em um arquivo com 20 segundos de duração e começar a gravar em 5 segundos e terminar a gravação em 10 segundos, o arquivo resultante terá 25 segundos. O arquivo terá um segmento de 5 segundos inserido 5 segundos na gravação original.

Se você gravar com o modo de substituição em um arquivo existente, poderá usar os sinalizadores "de" e "para" para especificar os locais iniciais e finais da seção que será substituída. Por exemplo, se gravar num ficheiro com 20 segundos de duração e começar a gravar a 5 segundos e terminar a gravação a 10 segundos, ainda terá uma gravação de 20 segundos, mas a secção que começa em 5 segundos e termina em 10 segundos terá sido substituída.

Se você não especificar um local final, a gravação continuará até que você envie um comando stop (MCI_STOP) ou até que o driver fique sem espaço livre em disco. Se você gravar em um novo arquivo, poderá omitir o sinalizador "de" ou defini-lo como zero para iniciar a gravação no início de um novo arquivo. Você pode especificar um local final para encerrar a gravação ao gravar em um novo arquivo.

O comando de registro às vezes é preciso a apenas 1 segundo do local inicial, como acontece com os dispositivos de vídeo cassete (VCR). Para gravar com mais precisão, você deve usar o comando cue (MCI_CUE). Este comando é reconhecido por dispositivos de vídeo digital, videocassete e áudio em forma de onda. Para obter mais informações sobre como gravar com dispositivos VCR, consulte VCR Services.

Guardar um ficheiro gravado

Quando a gravação estiver concluída, use o comando salvar (ou MCI_SAVE e a estrutura MCI_SAVE_PARMS) para salvar a gravação antes de fechar o dispositivo.

Observação

Se você fechar o dispositivo sem salvar, os dados gravados são perdidos.

 

Verificando os níveis de entrada (somente PCM)

Para obter o nível do sinal de entrada antes de gravar em um dispositivo de entrada de áudio de forma de onda PCM (Pulse Code Modulation), use o comando status (MCI_STATUS). Especifique o sinalizador "level", ou o sinalizador MCI_STATUS_ITEM, e defina o valor do dwItem membro da estrutura MCI_STATUS_PARMS como MCI_WAVE_STATUS_LEVEL. O nível médio do sinal de entrada é retornado. O valor do canal esquerdo está na palavra de ordem alta e o valor do canal direito ou monocanal está na palavra de ordem baixa.

O nível de entrada é representado como um valor não assinado. Para amostras de 8 bits, esse valor está no intervalo de 0 a 127 (0x7F). Para amostras de 16 bits, está no intervalo de 0 a 32.767 (0x7FFF).