?
hallo zusammen,
ich habe einen videoplayer in JMF geschrieben, welcher XViD-Videos von einer Playlist abspielt. das funktioniert soweit ganz gut und dank dessen, daß ich wärend der wiedergabe, je nach länge, das/die nächste(n) video(s) lade, gehen die videos direkt ineinander über.
nur taucht dabei ein, vielleicht auch mehrer, bug(s) von JMF auf:
1. bleibt die aktuelle wiedergabe, wenn ein anderes video im hintergrund geladen wird, am ende des prefetchings des anderen videos, kurz hängen.
2. ändert im selben moment das video in der aktuellen wiedergabe seine größe. dabei lässt sich anhand der größe der visuellen component meines wiedergebenden players leider nicht ablesen, ob dies vorkam, denn dessen size bleibt seltsamerweise gleich. so probierte ich dann etwas herum und stellte fest, daß wenn ich dem aktuellen wiedergebenden visual component die größe des visual components des players gebe, welcher gerade geladen wurde, daß dann dieser effekt kompensiert wird. ein problem ist es nur, wenn ein zweites video vorgeladen wird. dabei wird dann nämlich scheinbar die größe des aktuell wiedergegebenen, wie auch die des bereits geladenen verändert und bislang ließ sich weder durch auslesen noch durch ausprobieren herausfinden, welche kompensierende größe ich beiden visuellen components zuweisen muss, um das problem dann auszumerzen.
zur info, ich lasse meinen player aktuell auf WindowsXP mit JRE 1.5.0-08 build 3 laufen. getestet habe ich auch schon 1.4.2-12 und auch eine java6 version (überall gleiches problem). mein JMF ist version 2.1.1e
das laden eines videos erledigt bei meinem player ein seperater thread, welcher durch die folgenden code-zeilen ein video lädt:
Processor nextPlayer = Manager.createProcessor(new MediaLocator("file://"+path));
nextPlayer.addControllerListener(this);
nextPlayer.configure();
if (!waitForState(nextPlayer,Processor.Configured))
throw new Exception("Failed to configure the processor.");
nextPlayer.setContentDescriptor(null);
nextPlayer.prefetch();
if (!waitForState(nextPlayer,Processor.Prefetched))
throw new Exception("Failed to realize the processor.");
ich wäre recht interessiert daran, ob linux-nutzer diese probleme ebenfalls haben bzw. ob jemand anderes sich damit bereits auseinander gesetzt hat und mir ggf. einen workaround anbieten kann.
ich wäre für jede hilfe dankbar
wayne