Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

[java] Weergeven videobeelden

Pagina: 1
Acties:

  • M-ThijZ
  • Registratie: Maart 2003
  • Laatst online: 20:39

M-ThijZ

Riding on Rails

Topicstarter
Allereerst een kleine introductie. Voor een studieproject heb ik aan een schermenwand gewerkt. Deze schermenwand bestaat in testopstelling uit vier beelschermen en vier mini pc's. Deze opstelling wordt geschaald tot een opstelling van 20 schermen. Een VIA VM7700 (zie afbeelding) om precies te zijn. Als besturingssysteem is er gekozen voor Windows XP.

Afbeeldingslocatie: http://www.gizmos.es/wp-content/uploads/2007/10/via_vesa.jpg

Elk scherm stelt een personage voor. Deze personages kunnen beslissen om elkaar aan te kijken, of interactie te hebben met de buitenwereld (middels diverse sensoren). Van de opstelling heb ik een video gemaakt om jullie er een beeld bij te geven.

[YouTube: http://www.youtube.com/watch?v=cT2YgcyWl5g]

Op elk scherm draait een Java applicatie die de netwerkcommunicatie en de aansturing van de beeldschermen verzorgt. De aansturing van de beeldschermen is eigenlijk heel simpel: per personage zijn er 10 video's opgenomen.

* recht vooruit kijken (continu in lus)
* links, rechts, omhoog en omlaag kijken
* 4x diagonaal kijken
* 'grappig' filmpje voor interactie met de buitenwereld

Het idle filmpje wordt continu weergegeven, bij een interactie wordt het desbetreffende filmpje gestart en daarna zit het idle filmpje weer in de afspeellijst.

Er is gekozen om gebruik te maken van VLC als videospeler. De Java applicatie doet niets anders dan het aansturen van VLC via VLC's telnet interface. Helaas bleek dit niet de meest stabiele oplossing, memory-leaks en problemen met de telnet interface van VLC zorgen ervoor dat VLC na ongeveer een half uur vast loopt. Niet handig voor de eindopstelling.

Daarom ben ik op zoek naar alternatieven om rechtstreeks video af te spelen vanuit de Java applicatie. Na een beetje zoeken op internet kom je al direct bij het Java Media Framework terecht. Op de wikipedia pagina lees je dan het volgende.
Many JMF developers have complained that it supports few codecs and formats in modern use. Its all-Java version, for example, cannot play MPEG-2, MPEG-4, Windows Media, RealMedia, most QuickTime movies, Flash content newer than Flash 2, and needs a plug-in to play the ubiquitous MP3 format. [3] While the performance packs offer the ability to use the native platform's media library, they're only offered for Linux, Solaris and Windows. Furthermore, Windows-based JMF developers can unwittingly think JMF provides support for more formats than it does, and be surprised when their application is unable to play those formats on other platforms.

Another knock against JMF is Sun's seeming abandonment of it. The API has not been touched since 1999, and the last news item on JMF's home page was posted in November 2004.

While JMF is built for extensibility, there are few such third-party extensions.
Wikipedia somt een aantal alternatieven op:
* QuickTime for Java
* IBM Toolkit for MPEG-4
* Jffmpeg
* jvlc
* gstreamer-java
* FMJ
* Fluendo's port of Theora to Java
* Directshow <> Java Wrapper
* Fobs4JMF

Het voordeel wat ik heb is dat ik het af te spelen formaat zelf in de hand heb. Ook hoef ik geen GUI te bieden. Zou iemand zijn ervaring met een van deze alternatieven of JMF willen delen? Het zou niet eens zo'n heel groot probleem moeten zijn, toch kom ik overal op internet negatieve informatie met betrekking tot het afspelen van video vanuit Java tegen. Wie heeft er al eens een succesvolle implementatie gedaan?

Alvast bedankt.

Verwijderd

Het is een jaar of zo geleden, maar ik heb inderdaad nog fobs4jmf gebruikt en IBM mpeg4java (op Linux, voor alle duidelijkheid).
JMF op zich is een echte nachtmerrie. 32 bit only en de laatste versie dateert van pakweg 2002 of nog eerder. Je kunt je vast voorstellen dat ik bijzonder weinig kon afspelen. Sterker nog, ik moest op het internet op zoek naar wat stokoude fragmenten om überhaupt iets op mijn scherm te krijgen. Vandaar dat ik zelf ook naar een alternatief zocht. Ik kwam uiteindelijk uit bij drie providers:
- FMJ: was zeer beperkt voor windows en nagenoeg onbruikbaar voor Linux
- FOBS4JMF: werkte zeer vlot en ondersteunde nagenoeg alle gangbare video- en audioformaten. Groot nadeel: het vereist (vereiste?) dat JMF is geïnstalleerd en erft zo een aantal beperkingen; bovendien heb ik aardig moeten puzzelen om de twee samen te laten werken. Voordeel: je kunt zelf extra codecs compileren en er is kort geleden een nieuwe versie uitgebracht die mij nog een stuk krachtiger lijkt.
- MPEG4JAVA van IBM: had ik nodig omdat FOBS4JMF niet zo best overweg kon met dit formaat. Nadeel is (was?) dat het om een trial versie gaat die maar drie maanden gebruikt mag worden en een resem andere beperkingen oplegt. Nauwelijks open source te noemen. Werkte voor het overige wel perfect.

Met de andere heb ik (vooralsnog) geen ervaring. Een jaar geleden stonden die in hun kinderschoenen of bestonden ze nog niet eens. Blijkbaar krijgt java toch meer en meer ondersteuning voor multimedia sinds Sun het heeft losgelaten. Eindelijk.

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 21:00
ffmpeg ondersteund behoorlijk veel formaten (is ook bekend als ffdshow, een variant die werkt voor DirectShow onder Windows.

Ffmpeg zou waarschijnlijk mijn keus zijn, veel formaten (o.a. mpeg2, mpeg4, h.264) en behoorlijk goed. [url=http://sourceforge.net/projects/jffmpeg/]Jffmpeg is trouwens al meer dan 2 jaar niet meer geüpdate, dus ik weet niet of dat nog actief in ontwikkeling is.

GStreamer-java is niet aan te raden. De reden geven ze al op de site:
The current release is known to run on both MacOSX and Linux. Although it works to some extent on Windows, it is not recommended.
Emphasis mine.:) Best wel jammer eigenlijk. Gstreamer is wel een mooi framework wat veel audio/ videoformaten ondersteund en ook h.264 mpeg4 enzovoorts door middel van Ffmpeg.

De directshow-java wrapper vond ik er wel goed uitzien. Helaas geen echte open-source en als je het in een commercieel project wilt gebruiken, moet je ervoor betalen. Desalniettemin is het op zich wel een mooie oplossing, omdat je dan ook ffdshow kunt gebruiken en elke DirectShow codec die je maar wilt. Portability is uiteraard laag, het draait alleen op Windows.

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett