Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Mediaplayer - Langsamer Bild-Update
Sy- - Di 04.07.06 11:03
Titel: Mediaplayer - Langsamer Bild-Update
Hi all,
versuche grade eine Zeitlupe einzubauen und hänge grade daran, dass das Bild viel länger zum aufbauen braucht, wenn man selber via .position:=x arbeitet.
Kurz für die Übersicht:
Habe ein Timer, welcher selber im Prinzip die Steuerung führt und dem Player die Position sagt.
So gesehen ist die Framerate bei etwa 1sek weil der absolut langsam ein Bild aufbaut, wo hingegen bei einem normalen Play eine viel größere Framerate besteht.
-> Kennt jemand eine Methode mit der es auch fließend nachgeladen wird, sprich ohne Umweg die Position bestimmt wird?
Gruß
Gausi - Di 04.07.06 11:38
Wie ist denn dein Timer.Interval? Und wie zeigst du das Bild an? Zeig mal etwas Code, den man dann ggf. umbauen kann ;-)
Sy- - Di 04.07.06 11:49
Irgendwie habe ich geahnt dass die frage mit dem interval kommt ;)
natürlich habe ich es umgestellt, ist immo 5ms, habs auch mit 1ms versucht ist aber völlig egal, weil der sowieso nicht nachkommt mit der darstellung.
So, etwas code:
Delphi-Quelltext
1:
| control.position:=control.position+speed.position; |
Gausi - Di 04.07.06 12:03
Sowas hab ich mir schon gedacht ;-)
Überleg doch mal: Ein normales Video hat eine Framerate von vielleicht 24 oder 25 Bilder pro Sekunde. Mehr ist da einfach nicht. D.h. wenn du die Position 200 mal (oder sogar 1000 mal) pro Sekunde neu setzen willst, ist das komplett unsinnig. Ein Interval von 40ms wäre also vollkommen ausreichend.
Generell halte ich aber das Vorgehen, während des Abspielens ständig die Position neu zu setzen für sub-optimal. Stell dir vor, du willst dein Auto dadurch langsamer machen, dass du beim gasgeben ständig jemanden neben dir laufen hast, der dein Auto ständig ein paar Meter zurückträgt...ist doch Quatsch :lol: Besser wäre es, direkt langsamer zu fahren...
Schau mal, ob du andere Wiedergabe-Komponenten findest, die Zeitlupe als Funktion mitliefern. Such mal nach DSPack, vielleicht geht das damit :nixweiss:
Sy- - Di 04.07.06 12:19
anfangs war es ja 50ms, bin aber weiter runter gegangen damit ich auf jeden fall ein unterschied sehe, falls es klappen sollte ^^
Das ist schade, ich schau mal weiter...
alias5000 - Di 04.07.06 13:09
Man soolte nochmal auf die Langsamkeit von TTimer hinweisen, dessen tatsächliches Maximum, je nach Windows-Version, irgendo beo 25-45 ms liegt :!:
Sy- - Mi 05.07.06 13:01
DS Pack ist nur bis Delphi 7 vertreten, ich nutze D2006 :(
Kennt da sonst noch jemand ein Player?
jakobwenzel - Mi 05.07.06 13:20
Lad dir einfach die Siebener, das ganze sollte aufwärtskompatibel sein (hat bei meiner 2005 PE geklappt)
Sy- - Mi 05.07.06 13:51
Bei mir kommt:
[Pascal Fehler] DirectDraw.pas(359): E2154 Typ 'IDirectDrawSurface' benötigt Finalization - nicht im varianten Record erlaubt
Sy- - Mi 05.07.06 15:44
Oha! das war eine lange Geburt.
Haufen Fehler und kompatibilitätsprobleme...
Habs mal umgeschrieben und anders angeordnet,
wird jedoch höchstverscheinlich auf sehr alten Delphi-versionen nicht laufen.
Ich habe jedoch die Demos und die C++ Fassung rausgeschmisse, diese könnt ihr aber hier saugen:
http://www.progdigy.com/modules.php?name=DSPack
(wäre sonst zu groß um hier hochzuladen)
Viel Spaß auch euch damit :wink:
Gruß
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!