Clique para saber mais...
  Home     Download     Produtos / Cursos     Revista     Vídeo Aulas     Fórum     Contato   Clique aqui para logar | 22 de Julho de 2026
  Login

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
44 Usuários Online

  Revista ActiveDelphi
 Assine Já!
 Edições
 Sobre a Revista

  Conteúdo
 Apostilas
 Artigos
 Componentes
 Dicas
 News
 Programas / Exemplos
 Vídeo Aulas

  Serviços
 Active News
 Fórum
 Produtos / Cursos

  Outros
 Colunistas
 Contato
 Top 10

  Publicidade

  [Artigos]  Delphi e Multimídia
Publicado por Juniorhugo : Terça, Janeiro 03, 2006 - 10:05 GMT-3 (7689 leituras)
Comentários 3 Comentários   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
Valdomiro Jr. O objeto TMediaPlayer, encontrado na Component Pallety na página System, permite o acesso aos arquivos multimídia. O controle é extremamente simples. De fato, é fácil criar aplicações que envolvam som ou imagens em movimento com apenas uma ou duas linhas de código.

    Através deste objeto você tem acesso e controle a rotinas mais internas através da MCI (Media Control Interface). Essas rotinas podem ser programadas para acessar toda a possibilidade do mundo multimídia. Com estes objetos estas rotinas se tornam extremamente simples e intuitivas para seu uso, como veremos a seguir.

 

Objeto TMediaPlayer

 

    Para criar uma simples aplicação multimídia crie um novo projeto, e arraste o objeto para o formulário, automaticamente é criado uma barra de tarefas multimídia.

    Clique no objeto e altere a propriedade FileName para C:\WINDOWS\CHIMES.WAV esta propriedade associa a arquivos tipo AVI, MIDI ou WAVE altere também a propriedade AutoOpen para True, esta propriedade inicia automaticamente o arquivo. Depois de completos estes simples passos você já pode rodar o programa. Pressione o botão verde para ouvir o som do arquivo selecionado. Mas de repente você não ouviu nada, não se desespere a causa pode ser um destes problemas

 

1. Você entrou com o nome do arquivo inválido.

2. Seu sistema de multimídia não está correto.

3. A propriedade AutoOpen não está true. Obs: Resultados idênticos ocorrem com arquivos MIDI ou AVI.

 

Colocando as propriedades em modo Runtime

 

    Dependendo das circunstâncias é preferível que o arquivo não esteja sempre aberto mas apenas quando o usuário clicar em um determinado botão. Isto pode ser obtido facilmente modificando a propriedade AutoOpen para False e no evento OnClick do botão insira o seguinte comando:

 

procedure TForm1.Button1Click(Sender: TObject);

begin

  MediaPlayer1.Open;

end;

 

    Podemos também alterar o arquivo a qual queremos ouvir, para isto insira o objeto OpenDialog, encontrado na Component Palette na página Dialogs, e um objeto BitBtn:

    Para o evento onClick do objeto Seleciona insira o seguinte código:

 

procedure TForm1.SelecionaClick(Sender: TObject);

begin

  MediaPlayer1.Close;

  if OpenDialog1.Execute then

  begin

    MediaPlayer1.FileName := OpenDialog1.FileName; MediaPlayer1.Open;

  end;

end;

 

    Um ajuste pode ser feito para permitir que o objeto seleção tenha acesso apenas as extensões AVI , WAV, or MID.

 

    Podendo ser colocado de duas maneiras diferentes, na propriedade Filter do objeto OpenDialog1:

1. Arquivos Multimídia (*.avi; *wav; *.mid) | *.avi;*.wav;*.mid

2. Arquivo AVI (*.avi) | *.avi

3. Arquivo WAVE (*.wav) | *.wav

4. Arquivo MIDI (*.MID) | *.mid

    Obs: As barras ( | ) são utilizadas para dividir duas seções: Filter Name e Filter.

 

Pesquisando variáveis em modo RunTime

 

    Logo abaixo venho mostrando como fazer uma aplicação multimídia com vários controles, ótimo para quem esta aprendendo a programar com multimídia.

    Antes de iniciarmos vamos fazer uma pequena observação, principalmente relativo a dois pontos: Para alguns programadores que procuram coisas úteis, as informações aqui presentes contém o essencial para transformá-los em programadores multimídia.

    Outra observação seria a respeito de alguns controles a arquivos multimídia.

    Dê uma olhada no arquivo [DiretórioDelphi]\SOURCE\RTL\WIN\MMSYSTEM.PAS, é uma biblioteca de funções que contém todas as chamada de acesso a baixo nível de comandos Windows para aplicações multimídia. As técnicas de acessos estão contidas no próprio documento. Com estes dois pontos frescos em nossa mente, podemos iniciar o nosso estudo sobre os aspectos do objeto TMediaPlayer. Dê uma olhada na Objeto Inspector na página de Eventos do objeto TMediaPlayer você encontrará dois métodos:

    O evento OnClick que ocorre quando é pressionado qualquer botão do controle. Por instância, através do parâmetro enviado Button é possível saber se o botão pressionado foi o OnPlay.

    Um segundo evento consiste no OnNotify por conter a mensagem mm_MciNotify que são as chamadas do Windows para o inicio ou o termino de uma execução, com seus eventuais erros. Ambos os eventos serão discutidos nos próximos parágrafos.

    É possível identificar o botão pressionado através do evento OnClick, aqui estão todos os tipos gerados pelo TMPBtnType:

 

btPlay: Quando pressionado o botão verde, Iniciar.

btPause: Quando pressionado o botão amarelo, Pausa.

btStop: Quando pressionado o botão vermelho, Parar.

btBack: Quando pressionado o botão azul, Avança a imagem.

btStep: Quando pressionado o botão azul, Retorna a imagem.

btNext: Quando pressionado o botão azul, Avanço rápido.

btPrev: Quando pressionado o botão azul, Retorno rápido.

btRecord: Quando pressionado o botão vermelho, Gravação.

btEject: Quando pressionado o botão azul, Retirar.

 

    Inicialmente vamos determinar qual foi o tipo de botão pressionado, para tanto, crie para o evento OnClick o seguinte código:

 

procedure TForm1.MediaPlayer1Click(Sender: TObject; Button: TMPBtnType; var DoDefault: Boolean);

begin

  case Button of btPlay: Edit1.Text := 'Tocando';

    btPause: Edit1.Text := 'Pausado';

    btStop: Edit1.Text := 'Parado';

    btNext: Edit1.Text := 'Próximo';

    btPrev: Edit1.Text := 'Anterior';

    btStep: Edit1.Text := 'Avançando';

    btBack: Edit1.Text := 'Retornando';

    btRecord: Edit1.Text := 'Gravando';

    btEject: Edit1.Text := 'Retirando';

  end;

end;

 

    Para encontrar o que aconteceu com o processo, necessitamos do evento OnNotify. Aqui estão as mensagens enviadas pelo sistema operacional:

 

mci_Notify_Successful: Comando completado com êxito

mci_Notify_Superseded: Comando suspenso por outra função

mci_Notify_Aborted: Função corrente foi interrompida

mci_Notify_Failure: Algum erro ocorreu.

 

    O Delphi não reconhece estas diretivas de mensagem, mas ele converte para constantes do tipo:

 

nvSuccessful indicando o êxito.

nvSuperseded indicando que está suspenso, provavelmente por causa de uma pausa.

nvAborted messages indicando que foi pressionado o botão parar, ou causa devido ao fechamento do arquivo.

 

Click no evento OnNotify e coloque o seguinte código:

 

procedure TForm1.MediaPlayer1Notify(Sender: TObject);

var S: String; Total: Integer

begin

  case MediaPlayer1.NotifyValue of nvSuccessful:

  begin

    Inc(Total);

    S := 'mci_Notify_Successful ' + IntToStr(Total);

  end;

    nvSuperseded: S := 'mci_Notify_Superseded';

    nvAborted: S := 'mci_Notify_Aborted';

    nvFailure: S := 'mci_Notify_Failure';

  else

    S := 'Não consigo identificar a mensagem';

  end;

  Edit2.Text := S;

  if (MediaPlayer1.NotifyValue = nvSuccessful) and (MediaPlayer1.Mode = mpStopped) then

    Edit1.Text := 'Arquivo finalizado';

end;

    Estes eventos verificam os acontecimentos mais significativos que ocorreram com o dispositivo MCI. O modo corrente com que o dispositivo MCI é especificado também pode ser utilizado pelo objeto TMediaPlayer. Aqui uma listagem dos valores mais comuns designados:

 

mci_Mode_Not_Ready

mci_Mode_Stop

mci_Mode_Play

mci_Mode_Record

mci_Mode_Seek

mci_Mode_Pause

mci_Mode_Open

 

    Estes valores são auto-explicativos. Por exemplo, o modo do campo é fixado em mci_Mode_Stop, o dispositivo está parado. Se fixado em mci_Mode_Play, o dispositivo está tocando.

    Crie uma nova procedure Private chamada SetMode, e insira o seguinte código:

 

procedure TForm1.SetMode;

begin

  Edit4.Text := MediaPlayer1.FileName;

  case MediaPlayer1.Mode of mpNotReady:

    Edit3.Text := 'mci_Mode_Not_Ready';

    mpStopped: Edit3.Text := 'mci_Mode_Stop';

    mpPlaying: Edit3.Text := 'mci_Mode_Play';

    mpRecording: Edit3.Text := 'mci_Mode_Record';

    mpSeeking: Edit3.Text := 'mci_Mode_Seek';

    mpPaused: Edit3.Text := 'mci_Mode_Pause';

    mpOpen: Edit3.Text := 'mci_Mode_Open';

  else

  begin

    Edit1.Text := 'Dispositivo Inativo';

    Edit2.Text := 'Sem messagens';

    Edit3.Text := 'Não identificado';

    Edit4.Text := 'Não há arquivo selecionado';

  end;

end;

end;

 

    Para a chamada desta rotina click no objeto Ttimer e chame o evento OnTimer e insira o seguinte código:

 

procedure TForm1.Timer1Timer(Sender: TObject);

begin

  SetMode;

end;

 

    Com a propriedade Interval deste objeto fixada em 1000, significa que a cada 1000 milisegundos será disparada a rotina de verificação que informará o estado para o objeto TMediaPlayer.

    Execute o projeto e atente para os seguintes detalhes:

    Toda a vez que for usado um botão da barra multimídia, será disparado o evento onClick marcando deste modo o tipo de botão pressionado;

    As mensagens da mm_MciNotify ocorrem durante toda a execução da aplicação, tente utilizar os botões Pausa e Parar no meio de uma execução.

    Quando for selecionar um novo arquivo, afaste um pouco a janela de diálogo e observe como estão os campos edit.

 

Obs: Observe e estude também o arquivo [DiretórioDelphi]\SOURCE\VCL\MPLAYER .PAS ele é a unidade principal de criação do objeto TMediaPlayer. Espero ter ajudado, qualquer outra dúvida, entre em contato comigo.

 

Valdomiro Farias de Andrade Júnior

Analista de Sistemas

procompanysistemas@infonet.com.br 



Comentários Comentários
   Ordem:  
Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos.


por: acvodark : Jan 14, 2006 - 12:05
(Informações sobre o membro | Enviar uma mensagem)
Júnior esse é meu primeiro comentário aqui, confesso que ainda não testei o código, mas gostei, quando testar comento novamente.


por: mkla87 : Jun 11, 2006 - 03:14
(Informações sobre o membro | Enviar uma mensagem)
Gostei Muito do aritgo sou iniciante e vc explicou claramete muito legal .....
  Edição 112

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

Copyright© 2001-2016 – Active Delphi – Todos os direitos reservados