AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi TMediaplayer: Ruckeln bei XVid
Thema durchsuchen
Ansicht
Themen-Optionen

TMediaplayer: Ruckeln bei XVid

Ein Thema von GlobalImpact · begonnen am 19. Jan 2007 · letzter Beitrag vom 23. Jan 2007
Antwort Antwort
GlobalImpact

Registriert seit: 5. Jan 2007
9 Beiträge
 
#1

TMediaplayer: Ruckeln bei XVid

  Alt 19. Jan 2007, 00:36
Hallo,
ich möchte ein kleines Programm schreiben um meine Facharbeit, einen gerenderten Film zu verpacken.
Mein Film liegt aus Platzgründen als Xvid vor.
Um den Film in einem Panel abzuspielen verwende ich TMediaplayer.
Klappt soweit auch alles ganz gut, nur nun kommt das eigentliche Problem, das ich mir eigentlich nicht erklären kann. In jedem Player von VLC bis WindowsMediaPlayer lässt sich mein Film problemlos und absolut ruckelfrei (hat 27fps) abspielen, nur über TMediaplayer ruckelt er, gerade so, als würden nur noch 15 fps angezeigt werden.
Ich habe festgestellt, je stärker ich die Kompression in XVid stelle, genauer gesagt besonders die "Motion Search Precision" desto stärker ist das Ruckeln ausgeprägt. Eine hohe "Motion Search Precision" ist aber notwendig, da die Qualität sonst sehr stark leidet.
Gibt es irgendeine Möglichkeit den Film in Delphi anständig (und möglichst unkompliziert) zum Laufen zu kriegen?


Danke für die Antwort

mfg

Global Impact


PS:
Meine Delphiversion ist Turbodelphi Explorer

Mein Computer:
2BG Ram, 3800+ X2 Dualcore und Geforce 7900 GT

Ich sollte also eigentlich in der Lage sein einen Film mit der Auflösung 640 * 480 und 27 fps kodiert in XVid ruckelfrei über Delphi abzuspielen.
Ich habs auch bei meinem Bruder mal probiert, er hat 3 Ghz, und auch da isses nur über Delphi ruckelig.
  Mit Zitat antworten Zitat
Gandalfus

Registriert seit: 19. Apr 2003
407 Beiträge
 
Delphi 2006 Professional
 
#2

Re: TMediaplayer: Ruckeln bei XVid

  Alt 19. Jan 2007, 22:47
TMediaplayer ist so langsam weil er auf einer veralteten api basiert. Videos muss man mit directX oder vergleichbarem abspielen bzw mit DSpack wenn man nicht sobviel Aufwand betreiben will.
Besucht doch mal meine Homepage
  Mit Zitat antworten Zitat
loetmann

Registriert seit: 21. Dez 2003
Ort: Rostock
33 Beiträge
 
Delphi 3 Standard
 
#3

Re: TMediaplayer: Ruckeln bei XVid

  Alt 20. Jan 2007, 02:46
Hallo,

eine andere Möglichkeit währe den VLC-Player über ActiveX einzubinden.

Ein Gruß
  Mit Zitat antworten Zitat
GlobalImpact

Registriert seit: 5. Jan 2007
9 Beiträge
 
#4

Re: TMediaplayer: Ruckeln bei XVid

  Alt 20. Jan 2007, 03:25
Hallo,
erstmal danke für die Antworten!
Gibt es denn eine Möglichkeit, mit Standard-Delphi-Komponenten Filme über DirectX abzuspielen? (Habe leider TurobDelphi Explorer, kann also keine externen Komponenten installieren)

mfg

Global Impact
  Mit Zitat antworten Zitat
Ydobon

Registriert seit: 3. Mär 2006
261 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: TMediaplayer: Ruckeln bei XVid

  Alt 20. Jan 2007, 09:02
Zumindest brauchst du die DX-Header Übersetzungen bzw. gleich mit Komponenten das DSPack. Es sollte nicht sehr aufwendig sein, die Komponenten erst zur Laufzeit zu erstellen.
Eine primitivst Wiedergabe ohne Komponenten könnte so aussehen. Opendialog, Panel oben, darauf 2 Button und 2 Label, das Video wird einfach auf das Formular geknallt (bzw. per put_Owner() auf eine passende Komponente). Wie es sich für DirectShow gehört, schluckt es dann jede Mediendatei, die der Computer wiedergeben kann.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var pGraph: IGraphBuilder;
    pMediaControl: IMediaControl;
    pEvent: IMediaEvent;
    pSeek: IMediaSeeking;
    pVidWin: IVideoWindow;
    evCode, x, y, lpParam1, lpParam2: Integer;
    tim, dim: Int64;
begin
  if Not OpenDialog1.Execute then exit;
  CoCreateInstance(CLSID_FilterGraph, Nil, CLSCTX_INPROC_SERVER,
                    IID_IGraphBuilder, pGraph);
  pGraph.QueryInterface(IID_IMediaControl, pMediaControl);
  pGraph.QueryInterface(IID_IMediaEventEx, pEvent);
  pGraph.RenderFile(PWideChar(WideString(OpenDialog1.FileName)), Nil);
  pGraph.QueryInterface(IID_IMediaSeeking, pSeek);
  pSeek.GetDuration(tim);
  Label1.Caption:=IntToStr(tim div 10000000);
  pGraph.QueryInterface(IID_IVideoWindow, pVidWin);
  pVidWin.put_Owner(Handle);
  pVidWin.put_WindowStyle(WS_CHILD);
  pVidWin.get_Width(x);
  pVidWin.get_Height(y);
  pVidWin.SetWindowPosition(2, Panel1.Height+2, x, y);
  weiter:=true;
  pMediaControl.Run;
  while weiter do
  begin
    if pEvent.GetEvent(evCode, lpParam1, lpParam2, 0)<>E_ABORT then
    begin
      if evCode=EC_COMPLETE then weiter:=false;
      pEvent.FreeEventParams(evCode, lpParam1, lpParam2);
    end;
    pSeek.GetPositions(tim, dim);
    Label2.Caption:=IntToStr(tim div 10000000);
    Application.ProcessMessages;
  end;
  pVidWin.put_Visible(FALSE);
  pVidWin.put_Owner(0);
  pVidWin._Release;
  Pointer(pVidWin):=Nil;
  pMediaControl._Release;
  Pointer(pMediaControl):=Nil;
  pEvent._Release;
  Pointer(pEvent):=Nil;
  pGraph._Release;
  Pointer(pGraph):=Nil;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  weiter:=false;
end;
Welche Späße damit noch angestellt werden können, gibt es bei der MSDN Library
  Mit Zitat antworten Zitat
GlobalImpact

Registriert seit: 5. Jan 2007
9 Beiträge
 
#6

Re: TMediaplayer: Ruckeln bei XVid

  Alt 20. Jan 2007, 15:49
Puhhh,danke für die Antwort.
Ich habe nur irgendwie Verständnisschwierigkeiten bei denem Code!
Ich hab ne Delphi 5 Version aufgetrieben, und habs mal mit der probiert, doch auch da hab ich Schwierigkeiten:

Mein Code zum abspielen:

Delphi-Quellcode:
videowindow1.FilterGraph := filtergraph1;
filtergraph1.Active := true;
filtergraph1.ClearGraph;
filtergraph1.RenderFile('..\Filme\Intro.avi');
filtergraph1.Play;
Es erscheint imemr eine Meldung, der Vorgang kann nicht fortgesetzt werden, da die Filteranschlüsse nicht verbunden sind.
Habe ich Filtergraph und Videowindow nicht über:

videowindow1.FilterGraph := filtergraph1;

miteinander verbunden?


Danke für die Antwort


mfg

Global Impact
  Mit Zitat antworten Zitat
GlobalImpact

Registriert seit: 5. Jan 2007
9 Beiträge
 
#7

Re: TMediaplayer: Ruckeln bei XVid

  Alt 20. Jan 2007, 21:58
Habs hinbekommen, das Ding kommt scheinbar nicht gut mit XVid zurecht.
Abspielen tut ers jetz, nur das Ruckeln is nach wie vor, woran kann das nur liegen?
  Mit Zitat antworten Zitat
loetmann

Registriert seit: 21. Dez 2003
Ort: Rostock
33 Beiträge
 
Delphi 3 Standard
 
#8

Re: TMediaplayer: Ruckeln bei XVid

  Alt 22. Jan 2007, 18:21
Hallo,

wird die Datei den im normalen Player normal abgespielt?

Hast Du noch irgendwas anderes rechenintensives im Programm laufen?

Ein Gruß
  Mit Zitat antworten Zitat
GlobalImpact

Registriert seit: 5. Jan 2007
9 Beiträge
 
#9

Re: TMediaplayer: Ruckeln bei XVid

  Alt 23. Jan 2007, 23:46
Im normalen Player wird sie absolut ruckelfrei abgespielt.
Ich hab nichts anderes nebenbei laufen (immer maximal 3 % cpu last) und noch locker 1,5 gb ram frei.
Das ganze is bei XVid eben nur, wenn diese Motion Search Precision eingestellt is, wenn ich das ausstelle isses ruckelfrei, aber dann wird die Datei so gross, dass ich gleich auf xvid verzichten kann.
Es muss doch wohl möglich sein, eine XVid Datei ruckelfrei abzuspielen.
Ich dachte erst, dass Delphi vllt den falschen Codec nimmt oder so, weil ich in letzter Zeit viele verschiedene Codecs ausprobiert hab und auch immer wieder verschiedene XVid-Versionen installiert und deinstalliert hab, habs dann bei meinem Bruder (3GHz, Computer vor ner woche erst frisch aufgesetzt) und noch nem Computer mit 1,7 Ghz ausprobiert, selbes Problem, je langsamer der Computer, desto ruckeliger die Wiedergabe. Aber meiner Meinung nach sollte ein 1,7 Ghz Computer oder zumindest eienr mit 3Ghz doch in der Lage sein einen Film flüssig darzustellen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz