[delphi] MediaPlayer za szybko odtwarza.

Forum dotyczące ogólnie pojętego programowania - algorytmów, struktur danych, narzędzi programistycznych, itp - głównie w kontekście komputerów PC.
ODPOWIEDZ
Awatar użytkownika
siekierzyński
Użytkownik
Posty: 482
Rejestracja: 01 cze 2010, 23:12
Lokalizacja: Nareszcie Polska

[delphi] MediaPlayer za szybko odtwarza.

Post autor: siekierzyński » 09 wrz 2010, 11:36

Mam taki problem, mam MediaPlayer i jak odtwarzam film, to film leci w straasznie szybkim tempie (chyba co 1000 parę klatek). Co zrobić, żeby film normalnie się odtwarzał?

Użycie WindowsMediaPlayer raczej nie wchodzi w grę, bo potrzebuję móc przenosić po formie Panel z filmem, zmieniać jego rozmiar itp. Potrzebuję też informację o tym która klatka jest odtwarzana.

Chce sobie robić własny program do odtwarzania filmów z napisami.

EDIT:

Znalazłem TVideoGrabber ale to jest Trial. Czy ktoś zna coś podobnego?

Awatar użytkownika
Ertew
Użytkownik
Posty: 1414
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Post autor: Ertew » 09 wrz 2010, 15:06

Korzystam z programu Tiny Player.
Sam program nie odtwarza filmów, ale wraz z kodekami (korzystam z K-lite Codec Pack) działa całkiem sprawnie.
Dodatkowo umożliwia korekcje czasową napisów i prędkości odtwarzania.
Autor udostępnia kody źródłowe, więc możesz się na nich wzorować.

Awatar użytkownika
siekierzyński
Użytkownik
Posty: 482
Rejestracja: 01 cze 2010, 23:12
Lokalizacja: Nareszcie Polska

Post autor: siekierzyński » 09 wrz 2010, 19:09

Język C - kiepsko u mnie, nic z niego nie umiem.

Edit:
A jak stworzyć dynamicznie TWindowsMediaPlayer?

Passage
Użytkownik
Posty: 187
Rejestracja: 16 sie 2005, 22:46
Lokalizacja: Cambridge / UK
Kontakt:

Post autor: Passage » 09 wrz 2010, 22:52


Awatar użytkownika
siekierzyński
Użytkownik
Posty: 482
Rejestracja: 01 cze 2010, 23:12
Lokalizacja: Nareszcie Polska

Post autor: siekierzyński » 10 wrz 2010, 8:39

Wiem, tylko jak daje:

Kod: Zaznacz cały

procedure TForm1.FormCreate(Sender: TObject);
  var
    przycisk: TWindowsMediaPlayer;
  begin
    przycisk:=TWindowsMediaPlayer.Create(self);
    przycisk.Left:=10; // pozycja X przycisku na formularzu
    przycisk.Top:=10; // pozycja Y przycisku na formularzu
    przycisk.Width:=140; // szerokość przycisku
    przycisk.Height:=40; // wysokość przycisku
    przycisk.Caption:='Przycisk dynamiczny'; // podpis przycisku
    przycisk.Parent:=self; // rodzic przycisku
    przycisk.Visible:=True; // czy przycisk widoczny?
  end;
to wywala bład przy

Kod: Zaznacz cały

var
    przycisk: TWindowsMediaPlayer;

Passage
Użytkownik
Posty: 187
Rejestracja: 16 sie 2005, 22:46
Lokalizacja: Cambridge / UK
Kontakt:

Post autor: Passage » 10 wrz 2010, 13:49

siekierzyński pisze: to wywala bład przy

Kod: Zaznacz cały

var
    przycisk: TWindowsMediaPlayer;
Jaki bląd?
W tym przypadku na 99% będzie to "undeclared identifier", czyli kompilator nie wie co to i gdzie szukać identifikatora TWindowsMediaPlayer.

Dodaj do sekcji uses WMPLib_TLB

pozdrawiam.

Awatar użytkownika
siekierzyński
Użytkownik
Posty: 482
Rejestracja: 01 cze 2010, 23:12
Lokalizacja: Nareszcie Polska

Post autor: siekierzyński » 10 wrz 2010, 15:47

Super, działa. nie przyszło mi to do głowy, choć widziałem 'WMPLib_TLB ' w uses.

Ostatnią rzeczą jaką potrzebuję to pobranie numeru aktualnie odtwarzanej klatki. Nie mam pomysłu jak do tego dojść, o ile jest taka możliwość.

ODPOWIEDZ