Buscar

Trabalhando com vídeos no Delphi

nome

Jose Bernardo

Colunista ainda sem descrição. Caro colunista, por favor envie-nos sua descrição.

A utilização de arquivos de vídeo no Delphi pode incrementar suas aplicações tornando-as mais atraentes e interativas.

Exemplo 1 – Executando um vídeo em um componente:

Procedure Executar_Video;
Begin
  with MediaPlayerVideo do
  begin
    //Informamos qual é o arquivo de vídeo que será executado
    MediaPlayerVideo.FileName := GetCurrentDir+'\Videos\Video_Teste.mpg';

    //Abrimos o Media Player
    Open;

    //Informamos em qual componente será exibido o vídeo
    //Se omitimos onde o vídeo será exibido o delphi cria uma nova janela com a mesma resolução do vídeo
    Display := Nome_Componente;

    //Informamos que o vídeo será redimensionado para ocupar todo o componente
    //Se omitimos esta declaração o delphi executa o vídeo com sua resolução original
    MediaPlayerVideo.DisplayRect := Nome_Componente.ClientRect;

    //Executamos o vídeo
    Play;
  end;
End;


Com o exemplo 1 conseguimos executar com sucesso um arquivo de vídeo em um componente do delphi como, por exemplo, um Panel. Porém não conseguimos alterar o volume do vídeo que esta sendo exibido.

Exemplo 2 – Controlando o áudio de seu vídeo:

Vamos declarar em uses MMSystem. Adicione também:

const
   MCI_SETAUDIO = $0873;
   MCI_DGV_SETAUDIO_VOLUME = $4002;
   MCI_DGV_SETAUDIO_ITEM = $00800000;
   MCI_DGV_SETAUDIO_VALUE = $01000000;
   MCI_DGV_STATUS_VOLUME = $4019;

type
   MCI_DGV_SETAUDIO_PARMS = record
     dwCallback: DWORD;
     dwItem: DWORD;
     dwValue: DWORD;
     dwOver: DWORD;
     lpstrAlgorithm: PChar;
     lpstrQuality: PChar;
   end;

type
   MCI_STATUS_PARMS = record
     dwCallback: DWORD;
     dwReturn: DWORD;
     dwItem: DWORD;
     dwTrack: DWORD;
   end;


Vamos adicionar uma procedure e uma function:

procedure MPSetVolume(MP: TMediaPlayer; Volume: Integer) ;
var
   p: MCI_DGV_SETAUDIO_PARMS;
begin
   p.dwCallback := 0;
   p.dwItem := MCI_DGV_SETAUDIO_VOLUME;
   p.dwValue := Volume;
   p.dwOver := 0;
   p.lpstrAlgorithm := nil;
   p.lpstrQuality := nil;
   mciSendCommand(MP.DeviceID, MCI_SETAUDIO, MCI_DGV_SETAUDIO_VALUE or MCI_DGV_SETAUDIO_ITEM, Cardinal(@p)) ;
end;

function MPGetVolume(MP: TMediaPlayer): Integer;
var
   p: MCI_STATUS_PARMS;
begin
   p.dwCallback := 0;
   p.dwItem := MCI_DGV_STATUS_VOLUME;
   mciSendCommand(MP.DeviceID, MCI_STATUS, MCI_STATUS_ITEM, Cardinal(@p)) ;
   Result := p.dwReturn;
end;


Para saber qual é o volume atual do MediaPlayer usamos a function MPGetVolume.

Ex:

Edit.Text := inttostr(MPGetVolume(Nome_do_Componente_MediaPlayer).


E para alterar usamos a procedure MPSetVolume. Onde informamos o nome do componente MediaPlayer que terá seu volume alterado e o novo valor. O volume pode ser alterado entre 0 e 1000.

Ex:

MPSetVolume(Nome_do_Componente_MediaPlayer,100).


Para verificar se o vídeo já terminou de ser exibido pode-se adicionar um ProgressBar a aplicação e através de um timer sincronizar a propriedade Position de ambos durante a exibição do vídeo.

Um abraço a todos,

José Bernardo Junior
E-mail: giuseppe@qtech.com.br
Msn: z-bernardo@hotmail.com

Publicidade

Vote no artigo




Quantidade de votos: 1 voto
Aceitação: 20%


Detalhes do artigo

Categoria: Windows
Adicionado dia: 14/07/09
Por: Jose Bernardo
Visualizado: 21844 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009