quarta-feira, 3 de junho de 2009

Executando video no Delphi

Já pensou em fazer seu próprio sistema para reprodução de vídeos? Poder programar o palyer da forma como você quiser? Ao usar o componente MediaPlayer do Delphi, isto pode ser possível, ele além de reproduzir vários formatos de audio é também capaz de reproduzir videos.

Em um novo projeto no Delphi, adicione ao formulário os seguintes componentes:
- Panel: que será utilizado como
Display para a reprodução do vídeo.
- MediaPlayer: que fará a execução do vídeo.
- TrackBar: linha do tempo da execução do vídeo.
- Button1: altere o
Caption para "abrir".
- Button2: altere para "Pause".
- Button3: altere para "Stop".
- Timer: para atualizar a linha do tempo.
- OpenDialog: para localizar e abrir o arquivo de vídeo.

Adicione o seguinte código ao evento
OnClick do botão abrir:
procedure TForm1.Button1Click(Sender: TObject);
var
TheLength: LongInt;
begin
if OpenDialog1.Execute then
begin
with MediaPlayer1 do
begin
DeviceType := dtAVIVideo;
TimeFormat := tfFrames;
FileName := OpenDialog1.FileName;
Open;
TrackBar1.Max := Frames;
TheLength := Length;
Display := Panel1;
DisplayRect := Rect(10,10, Panel1.Width-20,Panel1.Height-20);
Play;
end;
end;
end;


Adicione o seguinte código ao evento OnClick do Button2 (Pause):
procedure TForm1.Button2Click(Sender: TObject);
begin
If Button2.Caption = 'Pause' Then
Button2.Caption := 'Continue'
else
Button2. Caption := 'Pause';
MediaPlayer1.Pause;
end;

Adicione o seguinte código ao evento OnClick do Button3 (Stop):
procedure TForm1.Button3Click(Sender: TObject);
begin
MediaPlayer1.Stop;
MediaPlayer1.Frames := 0;
TrackBar1.Position := 0;
Panel1.Refresh;
end;

Adicione o evento a seguir ao evento OnTimer do componente Timer1 para atualizar a linha do tempo de acordo com o avanço do video:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if MediaPlayer1.Frames > 0 then
begin
TrackBar1.Position := MediaPlayer1.Position;
end;
end;

Adicione o código a seguir ao evento OnChange do TrackBar1 para atualizar o vídeo no Display caso o usuário avance ou recue a linha do tempo:
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
With MediaPlayer1 do
Begin
StartPos := TrackBar1.Position;
Play;
End;
end;

Salve o projeto em seu computador, compile e execute sua aplicação. Clique no botão "abrir", e localize um arquivo de vídeo no formato "*.avi" para que seja executado. Abraço e até o próximo post.

12 comentários:

Unknown disse...

cara tem certeza q naum falta nada nesse codigo pq eu naoi consegui fazer funcionar?

posta o link de download do codigo fonte do teu pra min ver ?

ou da uma revisada nesse codigo ai

quais formatos ele abre?

Maikel Scheid disse...

Funciona perfeitamente... roda videos compativeis com o Windows Media Player.

Segue link para download dos fontes:
http://www.4shared.com/file/124758497/2d0a862c/Video_no_Delphi.html

Hugo disse...

Amigo, me desculpa, mas não funcionou, baixei o fonte, verifiquei o meu código, e nada, testei pelo seu executavel e tambm naum deu

Maikel Scheid disse...

Olá Hugo, você chegou a reinstalar os codecs do windows necessários? Quando vc usa o Windows Media Player, ele consegue rodar o mesmo vídeo? Att

Matheus disse...

Eu coloco pra reproduzir o video e a track bar vai pro final e não reproduz nada

Unknown disse...

a parte do codigo abixo, falha:
TheLength := Length;

Marcelo disse...

Oi amigo to com o mesmo problema dos outros acima

quando clico em abrir eu escolho o video em formato Avi o TrackBar vai em um piscar de olhos para o final e nao reproduz nada =\
ou seja da esquerda pra direita em menos de um segundo

Anônimo disse...

bom..ta funcionando perfeitamente...
vlww

Eduardo disse...

1° você não ensino como faz pro arquivo executar no panel

2° se maximizar o programa ele fica deslocado

3° faça um tutorial com fotos

Maikel Scheid disse...

Eduardo, só pode ser brincadeira de 1° de abril, você nem leu o artigo, o código está todo lá... Display := Panel1; se quiser que maximize mexa na propriedade Align e fotos, monte você mesmo seu aplicativo, você deve ter lido as 5 primeiras linhas, não ter aberto o delphi e queria que fosse aparecer uma aplicação pronta na sua frente... vai estudar rapaz, pra ser programador não é só um estalo de dedos.

Durukar disse...

infelizmente estou com o mesmo problema, o video não carrega, ele pula do 0 a 100 em 1 segundo, acredito que seja algum detalhe minimo esquecido no codigo, pois codecs estão em perfeito estado!
abraços e obrigado!

Gabriela disse...

Alguém Resolveu o problema do trackbar1, que vai do 0 ao 100 logo que abre o arquivo ?