2010-01-11 24 views
24

Potrzebuję prostego odtwarzania wideo w Javie.Odtwarzanie wideo w Javie (JMF, Fobs4JMF, Xuggler, FMJ)

Oto moje wymagania:

  • jakość produkcji

  • pliki Otwórz i dekodowania wideo, których kodeków audio i wideo mogą być wybrane przeze mnie. I.E Mogę wybrać dobrze zachowujące się kodeki.

  • Umieć zaawansowania, pauzy, seekToFrame LUB seekToTime i przystanek odtwarzania. Zasadniczo chciałbym móc odtwarzać segmenty pojedynczego pliku wideo w sposób nieliniowy. Na przykład mogę chcieć odtworzyć odcinek 20.3sec do 25.6sec, zatrzymać na 10 sekund, a następnie odtwarzać segment 340.3sec do 350.5sec, itd.

  • Podczas odtwarzania wideo i dźwięk muszą być zsynchronizowane.

  • Wideo musi być wyświetlane w części wahadłowej.

  • Musi być w stanie wykorzystywać w produktach komercyjnych, bez konieczności być open source (IE LGPL lub komercyjne jest dobra)


Moje badania doprowadziły mnie do następujących rozwiązań:

Zaimplementowałem szybki prototyp, który wydaje się robić to, czego potrzebuję. Mogę grać segment wideo przy użyciu:

player.setStopTime(new Time(end)); 
player.setMediaTime(new Time(start)); 
player.start(); 

Podczas Fobs4JMF wydaje się działać, czuję jakość kodu jest słaba, a projekt nie jest już aktywna. Czy ktoś wie o jakichkolwiek produktach, które używają Fobs4JMF?


  • Napisz aplikację Flash, który odgrywa filmy i korzystać JFlashPlayer w celu dostosowania go do mojej aplikacji Java Swing

przeciwieństwie Java, Flash jest genialny w grze wideo. Mógłbym napisać małą aplikację Flash z metodami:

open(String videoFile), 
play(), 
pause(), 
seek(int duration), 
stop() 

Następnie doprowadzić go do Java przy użyciu JFlashPlayer które mogą wywoływać funkcje Flash z Java.

To, co podoba mi się w tym rozwiązaniu, to to, że odtwarzanie wideo we Flashu powinno być solidne. Czy ktoś używał JFlashPlayer do odtwarzania wideo w Javie?


  • Napisz prosty odtwarzacz multimedialny na szczycie Xuggler

Xuggler jest wrapper FFMpeg for Java, który wydaje się być bardzo aktywne i wysokiej jakości projekt. Jednak implementacja prostego odtwarzania wideo opisanego w wymaganiach nie jest trywialna (w szczególności szukanie), ale niektóre prace zostały wykonane w MediaTools MediaViewer, który byłby podstawą do zbudowania.


  • Zastosowanie FMJ

Próbowałem dostać FMJ do pracy, ale nie miał sukces na coraz bardziej do tej pory.


Byłbym wdzięczny za opinie na temat mojego problemu.

Odpowiedz

11

Czy jakiś brat może uzyskać zgłoszenie na numer Xuggler?

+0

Potrzebuję dużo pomocy na temat xuggle, w jaki sposób mogę dodać dwa filmy wideo do utworzenia jednego filmu na xuggle? Próbuję google, ale to nie pomaga wiele ... –

+2

Gdzie na ziemi jest rzeczywisty link do pobrania dla Xuggler ?! – aaronsnoswell

+0

Xuggler nie może seekkeyframe dla mp3 lub m4a. To jest brakujący nagłówek ffmpeg. – taymedee

2

JavaFX ma wbudowane wiele działających kodeków wideo i audio. Prawdopodobnie będzie to rozwiązanie z najszerszym wsparciem w tej chwili.

+0

Cześć jsight i dziękuję za odpowiedź. Wiem, że JavaFX obsługuje wideo, ale niestety musiałem go odrzucić, ponieważ trudno jest zaimportować komponenty JavaFX do aplikacji Java Swing. Są sposoby, ale są to nieobsługiwane hacki. – ksullivan

+0

Zobacz także: http: //dsc.sun.com/learning/javaoneonline/2008/pdf/TS-6509.pdf i http://www.google.com/url?sa=t&source=web&ct=res&cd=3&ved=0CBEQFjAC&url=http%3A%2F%2Flobobrowser.wordpress. com% 2F2008% 2F12% 2F29% 2Fjavafx-video-in-a-swing-application-technicznie wykonalne% 2F & ei = -DhLS97jCsKztgf87cDkDQ & usg = AFQjCNHU942l5cD-Wwe-fn7gSiW8BwFP7Q & sig2 = 0RkjWw98VIKfs1egM4gN7g – jsight

+0

Dzięki za te linki. Wydaje się, że oprócz braku oficjalnego wsparcia dla JavaFX w Javie pojawiłyby się problemy z dystrybucją (szczególnie w odniesieniu do kodeków wideo). – ksullivan

2

Używam jffmpeg w taki sam sposób, w jaki używasz FOBS, działa całkiem dobrze, ale nie porównałem ich.

Chciałbym również zobaczyć łatwy sposób na połączenie z natywnymi kodekami, tak jak robi to JavaFX, ale nie wydaje się, aby istniała prawdziwa integracja między JavaFX i Javą.

Było też trochę pracy, próbując uzyskać bibliotekę VLC biblioteki libvlc w java. Nie próbowałem tego jeszcze i byłbym zainteresowany, aby usłyszeć od każdego, kto ma.

+0

Doceniam to już ponad rok, ale jeśli nadal jesteś zainteresowany zobacz moją odpowiedź! – berry120

+0

dziękuję, tak, to wciąż kwestia otwarta dla mnie, a ja zajrzę w to. – paul

2

Nie próbowałem Xuggler (które mnie interesują), ale dobrze się bawię z VLCJ. Wadą, którą znajduję w tym przypadku jest to, że musisz zainstalować VLC przed twoją aplikacją.

+2

Nie możesz - możesz rozpowszechniać libvlc za pomocą aplikacji, co robię. – berry120

+0

Nie próbuj jednak uzyskać wsparcia dla vlcj, facet jest kłującym kutasem. –

4

Moim zdaniem, VLCJ jest rozwiązaniem dla tego typu rzeczy. Uwielbiam Xuggler do kodowania/transkodowania, ale niestety jest to tak skomplikowane, że wykonuję proste odtwarzanie i rozwiązuję wszystkie problemy związane z synchronizacją - i bardzo to przypomina ponowne wymyślanie koła.

Jedyną rzeczą związaną z VLCJ jest zapewnienie niezawodnego działania z wieloma graczami, z którymi musiałem się wycofać. Ramy nie były najprostszymi rzeczami na świecie, ale kiedy są, to działają pięknie. Aktualnie używam trzech aplikacji do przetwarzania w mojej aplikacji obok siebie bez żadnych problemów.

Innym zastrzeżeniem jest to, że wbudowany odtwarzacz multimedialny nie będzie działał z komponentem swing, tylko z grubym płótnem - ale to nie sprawiło mi żadnego problemu. Jeśli tak, możesz użyć bezpośredniego odtwarzacza multimediów, aby uzyskać buforowany obraz i wyświetlać go w dowolnie wybranym przez ciebie momencie, ale trochę bardziej pochłonie on procesor (ale nie więcej niż inni gracze, którzy przyjmują takie podejście).