Seite 1 von 2

Fehler PlayMovie, MovieInfo, ResizeImage, DrawImage ...

Verfasst: 31.05.2005 00:47
von sharkpeter
Hallo,

sobald ich ein Movie mit StopMovie() anhalte und neu starte, wird es in die Breite gezogen. :freak:
Die Höhe ändert sich dabei nicht.

Einzige Abhilfe ist im Moment, FreeMovie(#MNR) und neu laden. /:->

Weiterhin gibt es mit *.gif ein Problem, manche werden abgespielt und andere wiederum nicht.
Da gibt es dann diesen netten Fehler, "... hat einen Fehler verursacht und..."

Wer von euch kennt das Problem oder hat eine Lösung, die anders ist als neu zu laden
für den Ersten Fall. Für den Zweiten sind sicher andere Damen und Herren zuständig.

Danke Jens

Verfasst: 31.05.2005 12:01
von Falko
Ich habe hier mal ein kleines Beispiel gemacht, wie das aussieht. Mit .gif, .mpeg bzw. mpg wird das Movie in die Breite gezogen. Beim .avi - format wird links und rechts ein schwarzer Rand hinzugefügt.

MfG Falko

Code: Alles auswählen

InitMovie()
OpenWindow(0,100,100,600,200,#PB_Window_SystemMenu,"TestMovie")
LoadMovie(1,"MyMovie.mpg"); bei .gif genauso und bei avi wird ein schwarzer Rand erweitert!
For i= 1 To 50
  PlayMovie(1,WindowID())
  MovieSeek(0)
  Delay(50)
  StopMovie()
Next i
Repeat
Until WaitWindowEvent()=#PB_Event_CloseWindow
CloseWindow(0)

Verfasst: 31.05.2005 17:01
von sharkpeter
Wie vielleicht bemerkt, habe ich den Titel etwas ergänzt.

Folgender Nachtrag zur obigen Ausführung betreffend *.gif: es ist nicht eine Eigenschaft von
*.gif allein, nicht richtig zu funktionieren. Das Abspielen ist dabei auch nicht das Problem,
siehe unten. Das Problem ist der Befehl MovieInfo(0). Offensichtlich ist die Grenze bei einer
Laufzeit von unter 1 Sekunde bzw. unter 100 Frame in der Summe. Am deutlichsten wird
dies bei dem Befehl MovieInfo(0). Sobald die Länge 1 Sekunde unterschreitet, wird
das Compilat mit einem der ach so beliebten Fehler beendet "... hat einen Fehler verursacht
und wird geschlossen..."

Also zum Testen habe ich auf meiner Webseite drei *.avi und zwei *gif hochgeladen, das
eine *.avi ist genau 0,9 Sekunden lang, das andere 1 Sekunde. Zur Verdeutlichung sind
die Einzelbilder nummeriert. Die Wiederholrate beträgt 10 je Bild. Das dritte *.avi ist ein
einziges Bild mit 100 Frame/sec, auch damit gibt keine Probleme.

Die beiden *.gif unterscheinden sich nur darin, das das letzte Einzelbild bei dem
25_1.gif eine 30fache Wiederholung hat und somit die Gesamtzahl von 100 Frame/sec erreicht,
während das andere nur nur 10 Wiederholungen aufweist und in Summe somit 80 Frame/sec
beinhaltet.

Zur allgemeinen Erheiterung, abspielen kann man mit PB, das ist kein Problem, ich benötige
jedoch für verschiedene Aufgaben, die Anzahl der Frame je Sekunde. Nun kann ich sicher hin-
gehen und alles blockieren über die Anzahl der Frame im Movie, aber das ist nicht Sinn der Sache.

Hier die URL für die "Filme":

http://www.winbahn.de/Programme/PureBas ... /avi_test/

Dies ist nur der Ordner, aber das reicht ja aus. Einfach mal laden und dann MovieInfo(0) aufrufen.

Habe noch vergessen zu erwähnen, das ich mir den sehr wohl durchgelesen habe:
http://forums.purebasic.com/german/view ... esizeimage

Ein Zusammenhang ist schwer zu verleugnen, nur ist es fast ein halbes Jahr her, das dort
jemand eine autorisierte Auskunft gegeben hat.

Gruß Jens

Verfasst: 01.06.2005 00:14
von Andre
Habe Fred informiert...

Verfasst: 01.06.2005 00:49
von Falko
Danke André

Was mir auch noch aufgefallen ist, ist das der Moviekomplex in Win9x anders funktioniert als unter Windows XP.

Unter XP muss man ein Playmovie() und daraufhin ein PauseMovie() zusätzlich einsetzen, wenn man eine Bildfrequenz beim Trackbar anzeigen will, die ich mittels + und - Button steuern will. Unter Win9x kann ich das weg lassen.

Das hat dann wohl nicht mehr viel mit Plattformübergreifend zu tun. Naja, ich weis, das Linux, Amiga und Mac damit gemeint sind. Aber anscheinend sind Win9x, Win2k und WinXP auch verschiedene Plattformen die unterschiedlich mit den Moviebefehlen arbeiten.

Sharkpeter und ich versuchen schon seit einigen Tagen ein Kompromiss zwischen den beiden Windowsen zu bilden, was nicht so einfach ist, wenn Movie bei beiden OS's verschieden arbeitet. Darum auch das starke Interesse an diesem Thema.

MfG Falko

Verfasst: 01.06.2005 10:10
von sharkpeter
@Andre,
danke :allright: für die Aufnahme und Weiterleitung. Hoffentlich gibt es eine Lösung oder zumindest
ein sauber zu handelndes Ende für die Sache, ohne das PB dabei jedesmal abstirbt. :twisted:

Noch ein kleiner Zusatz, wurde glaube ich auch schon irgendwo angesprochen:
ResizeImage funktioniert auch nicht immer ganz Astrein, ab einer gewissen Größe, wird nicht
geresized, sondern ein beliebiger Ausschnit in Originalgröße dargestellt, jedoch nicht immer.

So nun genug, ich verpisse mich jetzt erst einmal in meinen wohlverdienten Urlaub, kann
also folglich auch nicht antworten, falls es Zusatzfragen geben sollte.

Im Zweifel weiß Falko über alles Bescheid und kann mit weiteren Auskünften zur Seite stehen.

Gruß Jens, bald aus der südlichen Sonne :D

Verfasst: 13.06.2005 23:03
von sharkpeter
@PBTeam

habe da noch was. MovieSeek(xyz) soll ja eigentlich das Movie auf den angegebenen
Frame setzen, macht es auch, nur zeigt es unter 9x nichts an.

Wie kann das?

Gruß Jens

Verfasst: 18.06.2005 01:32
von Andre
sharkpeter hat geschrieben:@PBTeam

habe da noch was. MovieSeek(xyz) soll ja eigentlich das Movie auf den angegebenen
Frame setzen, macht es auch, nur zeigt es unter 9x nichts an.

Wie kann das?
Zum "wie kann das" kann ich leider nichts sagen. Habe jedoch auch dies an Fred noch gemeldet...

Verfasst: 18.06.2005 19:59
von sharkpeter
@André,
gut, dann warten wir es mal ab, wird schon alles gut werden, der Umfang
nimmt ja auch immer mehr zu. Hoffentlich dauert es nicht all zu lange.

Gruß Jens

Verfasst: 02.07.2005 23:52
von sharkpeter
@Team
oder wie soll man es am besten schreiben?

Habe das Thema nochmals umbenannt bzw. erweitert.

Betreffend ResizeImage(#xyz) gibt es Probleme, welche sich in folgender
Weise äußern:

1. ab einer bestimmten Größe (mehr als 799*599) und der Unterschreitung
auf ein Format kleiner 32*xx oder einem Bild im Hochformat (dazu leider keine
genauen Erkenntnisse, weil nur sporadisch) wird im neuen Image nur Schrott
angezeigt, sprich ein X-beliebiger Auschnitt aus dem Ursprungsbild.
2. ein Resize z.B. aus dem Format 1600*1200 auf meinethalben 640*480 erzeugt
folgendes nettes Nebenereignis:

Bild

Mängelpunkt sind die netten Linien die dabei im Bild entstehen. Interessanterweise
immer an den gleichen Stellen. Bitte um Hilfe oder Info wenn was nicht im Reinen ist.

Das schöne ist, die kommen aus der linken Seite des Bildes, siehe vergrößerter
Auschnitt und zugehörende Farben.

Gruß Jens