Programowanie w języku Delphi » Gotowce

Odtwarzacz multimediów

  • 2007-07-03 12:39
  • 13 komentarzy
  • 1242 odsłony
  • Oceń ten tekst jako pierwszy
Elo wam, artykuł kieruje do początkujących programistów. Do zrobienia odtwarzacza potrzebny jest komponent DSPack, który dodałem w załączniku. Już z samego początku dodalemy dodajemy drugą forme którą zajmiemy się na początku.

Form 2
Na formie umieszczamy komponent DSVideoWindowEx2 z zakładki DSPack, ustawiamy właściwość Caption na Wideo czy Video jak kto woli, albo inaczej. I przypisujemy formie wartość Autosize na ture.
<image>http://members.lycos.co.uk/testowyatestowya/Obrazkidoarta/Autosize.bmp</image>

Form 1
Teraz zajmiemy się główną formą programu. Dodajemy na forme komponenty MainMenu z zakładki standard, dwie etykiedy label z zakładki standard , OpenDialog z zakładki Dialogs, FilterGraph z zakładki DSPack, i pasek postępu DSTrackBar z zakładki DSPack.

Teraz zajmiemy się komponentem MainMenu, który jest na naszej formie. Klikamy na niego dwa razy i powinno się pokazać okienko z paskiem<image>http://members.lycos.co.uk/testowyatestowya/Obrazkidoarta/MainMenu.bmp</image>Piewszemu okienku wpisujemy wartość caption Plik, i powinno nam się pokazać się puste pole zmieniamy właściwość caption tego pola na Otwórz. Kikamy dwa razy na przycisk Otwórz który przedchwilą stworzyliśmy powinno pokazać nam się okienko w którym wpisujemy kod:

procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
  if(Form2=nil) then Form2:=TForm2.Create(Form1);
if OpenDialog1.Execute then
 begin
   FilterGraph1.ClearGraph;
   FilterGraph1.RenderFile(OpenDialog1.FileName); 
 
   if (OpenDialog1.FilterIndex = 1) then  \\Pokazuje po otwarciu formatu wideo forme z okienkiem wideo
      Form2.Show
      else
      Form2.Hide;
 
      Label2.Caption := OpenDialog1.FileName; \\Pokazuje ścieżke pliku
      FilterGraph1.Play; \\Po otwarciu pliku nasz program automatycznie zaczyna odtwarzać
   end;
end;


Teraz zajmiemy się komponentem OpenDialog klikamy na niego i patrzymy na okienko obiects inspektor <image>http://members.lycos.co.uk/tes[...]a/Obrazkidoarta/OpenDialog.bmp</image> i klikamy na filter <image>http://members.lycos.co.uk/tes[...]/Obrazkidoarta/OpenDialog2.bmp</image> później klikamy na przycisk z kropkami, i powinno pokazać nam się okienko <image>http://members.lycos.co.uk/tes[...]/Obrazkidoarta/OpenDialog1.bmp</image>, wpisujemy filtry tak jak na obrazku.

Teraz zajmijmy się  DSTrackBar'em

Kilkamy na niego, w okienku objects inspector zaznazamy zakładke events i Szukamy pozycji  FilterGraph <image>http://members.lycos.co.uk/tes[...]zkidoarta/Obiectsinspector.bmp</image> klikamy na nią i wybieramy Pozycje FilterGraph1, następnie szukamy pozycji on timer<image>http://members.lycos.co.uk/tes[...]kidoarta/Obiectsinspector1.bmp</image> klikamy na nią dwukrotnie i wpisujemy procedurę

Label1.Caption := format('%s / %s',
         [TimeToStr(CurrentPos / (24*3600*1000)),
          TimeToStr(StopPos / (24*3600*1000))]);


Zabawmy się w głównej formie

Klikamy na główną forme i w okienku objects inspector zaznaczamy zakładke events i szukamy pozycji OnClose , kilkamy na tą pozycje dwa razy i wpisujemy procedurę

FilterGraph1.ClearGraph;
FilterGraph1.Destroy;


Przejdzmy do Okienka wideo

Przejdzmy do okienka wideo tylko że teraz zajmiemy się komponentę który tam umieściliśmy. Klikamy na komponent wideo (DSVideoWindowEx21) i ustawiamy tam jak jest poniżej ustawione na rysunku(ustawiamy podkreślone na czerwono Punkty).

1. AspectRatio ustawiamy na rmStretched
2. FilterGraph  wpisujemy tak Form1.FilterGraph1
3. No ScrenSaver ustawiamy na true

<image>http://members.lycos.co.uk/testowyatestowya/Obrazkidoarta/video.bmp</image>

No i dodajemy trzy buttony (przyciski) mogą to być SpeedButtony jak i zwykłe (różnią się tym że SpeedButtom może mieć obrazek a zwykły nie). Więc mamy trzy przyciski Stop, Pause i Play, teraz je zaprogramujmy:

Do play piszemy taką definicje
FilterGraph1.Play;

Do stop
FilterGraph1.Stop;

I do pause
FilterGraph1.Pause;


www.members.lycos.co.uk/testowyatestowya/Obrazkidoarta/odtwarzacz.php | Tu znajdziecie ten sam artykuł ze zdjęciami (które tutaj nie chodzą) i DSPackiem do ściągnięcia http://sourceforge.net/projects/dspack

zapraszam www.force.rox.pl

13 komentarzy

OldShaterhan 2010-09-19 19:08

U mnie to nie działa -

[Error] Unit2.pas(12): Unsatisfied forward or external declaration: 'TForm2.DSVideoWindowEx21Click'

hera 2010-01-14 19:00

Proszę o wrzucenie screenów lub podanie linku z takim samym artykułem.

hera 2010-01-08 22:45

Ja rozumiem, że dawno to było dodane ale może ktoś wrzucić jeszcze raz screeny?

swirq 2008-02-19 18:27

viruzzo
[delphi]FilterGraph1.Previous;[/delphi]

viruzzo 2007-07-22 18:13

sochalewski masz rację!!!
ejj mam problem.Przycisk Stop zamiast stopować odtwarzanie tylko je pauzuje.Jaki kod trzeba mieć żeby Trackbar wracał na początek?Pomóżcie!

mediaxproject 2007-04-30 08:44

na www.mediaxproject.y0.pl jest lepszy odtwarzacz. try it!

orck 2007-04-25 08:46

Label1.Caption := format('%s / %s',
         [TimeToStr(CurrentPos / (24*3600*1000)),
          TimeToStr(StopPos / (24*3600*1000))])

niestety ten kod odwołuję się tylko do plików Wav i mp3, za jakiś czas spróbuje dopracować kod.

sochalewski 2007-02-06 12:30

ech, ten sam art był z rok temu w EKSPERCIE... MASOWY PLAGIAT.

Tommalla 2006-08-13 21:40

Jeśli ktoś chce, żeby pasek działał- musi dać jeszcze przed renderowaniem taki kod:

FilterGraph1.Active:=False;
FilterGraph1.Active:=True;

Nie pytajcie czemu- tak było w przykładach i tak działa :P . Jeśli ktoś wymaga potwierdzenia- moja wersja playera: www.tomsoft.freehost.pl/tommediaplayer110.rar

patrol_x 2005-11-13 00:04

dobra wszystko działa, sorry za klopoty

migajek 2005-11-12 22:51

patrol_x : dalej bmp :/

patrol_x 2005-11-12 19:23

ok, thx za podpowiedz. macie tutaj z obrazkami www.members.lycos.co.uk/testowyatestowya/Obrazkidoarta/odtwarzacz.php nie chce mi się myśleć więc zamieszczam na serwerze dokument :D

Marooned 2005-11-12 15:13

zmień .bmp na .jpg lub .gif