DirectX: AudioVideoPlayback -> Problem mit Video-Klasse

Christian Kusmanow

Erfahrenes Mitglied
Guten Morgen Norbert!

Darunter muss ich mir jetzt vostellen, dass Du Dir ein Component imlementiert hast,
oder gar vom Panel erbst und darin dann Audio.Dispose & Video.Dispose aufrufst?
 

Fridulin

Erfahrenes Mitglied
Hallo,

mein Programm soll das Video in einer Endlosschleife abspielen. Ich habe es momentan so gelöst, daß ein Event ausgelöst wird, wenn das Video zu ende ist und dann wird eine Funktion aufgerufen, welche das Video erneut startet. Leider Flackert dann das Bild kurzzeitig, ich möchte aber gerne das es immer wieder von Vorne abgespielt wird ohne das man etwas sieht.

Hat vielleicht jemand eine Idee?

Viele Grüße und vielen Dank für die Hilfe.
Fridulin

Edit: ein einfaches Video.Play(); funktioniert leider nicht beim Event, wenn das Video zu ende ist. Es klappt nur wenn man es dann nochmal Öffnet und wieder abspielt, allerdings kommt dann es zu unschönen Flackern und es wird nicht kontinuierlich weitergespielt.

Edit2: Ich habe es selber herausgefunden, einfach beim Event welches ausgelöst wird wenn das Video beendet ist, Video.Stop(); und dann Video.Play(); und schon klappt es.

Viele Grüße
Fridulin
 
Zuletzt bearbeitet:
S

streetdate

Die NullReferenceException wird denk ich gefeuert, weil das Video nicht wirklich beendet ist. Registriert man sich auf video.Audio.Ending und prüft über diesen Event das Ende ab, wird keine NullReferenceException gefeuert! Allerdings wird der video.Ending Event nicht mehr, gefeuert sobald man auf das video.Audio Objekt zugreift. Da reicht schon ein if (video.Audio != null)... Ich hab extra ein Videofilmchen erstellt, welches keine Audiospur hat (VLC hat das zB auch richtig erkannt). Das Audio Objekt war trotzdem ungleich NULL...!

Den video_Owner selbst auf NULL zu setzen ist denk ich gar nicht notwendig, da nach video.Dispose() der Owner auf NULL steht. Setzt man den selbst auf NULL erscheint tatsächlich dieses unsägliche ActiveMovie Fenster, welches sich auch noch in der linken oberen Bildschirmecke festsetzt und das Videobild einfriert. Also einfach auf das Dispose() vertrauen ;) das ist wohl zuverlässiger und sauberer!