Pytanie:
Jak mogę uruchomić Java Sound?
nanoman
2012-07-29 22:12:08 UTC
view on stackexchange narkive permalink

Mam odtwarzacz MP3 oparty na Javie, oparty na frameworku JLayer / BasicPlayer, który chciałbym uruchomić na Pi. Zainstalowałem OpenJDK na najnowszym Raspbian. BasicPlayer poprawnie otwiera linię, ale podczas odtwarzania pliku słychać tylko zacinające się dźwięki.

Odtwarzanie dźwięku za pomocą narzędzia wiersza poleceń mpg123 działa dobrze.

Czy coś jest nie tak z Implementacja Java Sound w ARM OpenJDK?

Jestem wdzięczny za wszelkie wskazówki w dobrym kierunku.

To jest kod:

  BasicPlayer pl = new BasicPlayer (); spróbuj {String path = "/home/pi/Music/testmp3.mp3"; Plik plik = nowy Plik (ścieżka); pl.open (plik); pl.play ();} catch (Exception e) {CubeLog.logException (e);}  

Dzięki.

Domyślam się, że oznaczałoby to, że dekodowanie `mp3` odbywało się w oprogramowaniu. Poważnie wątpię, że Pi byłoby w stanie to zrobić.
Jednym z możliwych powodów może być zamieszanie w dekoderze bigendian / littleendian.
Thorbjørn: Interesujące, czy spowoduje to jąkanie, zniekształcony hałas?
Cztery odpowiedzi:
#1
+5
gfelisberto
2012-07-31 01:14:11 UTC
view on stackexchange narkive permalink

Nie mam wystarczającej liczby punktów, aby komentować. Więc napiszę tutaj:

1- "Za mało procesora" - dekodowałem pliki mp3 za pomocą oprogramowania na stacji Sparc z procesorem 35 MHz. Więc jeśli ten dekoder nie jest poważnie uszkodzony, powinien działać.

Czy możesz wykonać pełne dekodowanie do pliku? Jeśli tak, zmierz czas, jaki to zajmuje. Jeśli jest mniejszy niż całkowity czas odtwarzania utworu, jesteś w biznesie. Następnie skopiuj niezdekodowany plik na inny komputer i zobacz, czy plik wav jest w porządku.

[EDYCJA]:

Wykonałem kilka testów z JLayer1.0.1 na moim RPI i działa wolno:

czas java -cacao -classpath jl1.0.1.jar javazoom.jl.converter.jlc file.mp3 -p out.wav

Dekodowanie zajmuje 3 razy więcej niż środowisko wykonawcze utwór.

[EDYCJA 2]:

Udało się zdekodować plik mp3 w krótszym czasie niż środowisko wykonawcze za pomocą Java SE Embedded 6 http://www.oracle.com /technetwork/java/embedded/downloads/javase/index.html:

pi @ raspbmc: ~ / java / JLayer1.0.1 $ rm out.wav; czas ../ejre1.7.0_04/bin/java -classpath jl1.0.1.jar javazoom.jl.converter.jlc Gill \ Scott-Heron- \ The \ Revolution \ Will \ Not \ Be \ Televised.mp3 -p out. wavFileName = Gill Scott-Heron - Rewolucja nie będzie pokazywana w telewizji.mp3

real 0m57.624suser 0m49.900ssys 0m2.320s

Na 3-minutowym wav.

Problem polega na tym, że nie działa na raspbian:

http://www.raspberrypi.org/phpBB3/viewtopic.php?f=66&t=11671

Dzięki za wyjaśnienie - jakiej dystrybucji używasz?
Te testy zostały wykonane z raspbmc rc3. Ale żaden xbmc ani X nie działał.
#2
+4
Jivings
2012-07-30 02:41:26 UTC
view on stackexchange narkive permalink

Oto Twój problem:

autor: MartenR »Cz 5 lipca 2012 11:09

Dźwięk jest zawsze wykonywany na kodekach cpufor innych niż darmowe kodeki, nie kupiono licencji na dekodowanie dźwięku dla dźwięku mpeg lub ac3.

Raspberry Pi po prostu nie ma wystarczającej mocy, aby zdekodować plik mp3 w rzeczywistości czas w oprogramowaniu podczas pracy na JVM.

Możesz spróbować kilku rzeczy, aby to działało:

  • Zwiększ pamięć dostępną dla procesora

  • Spróbuj uruchomić odtwarzacz, który nie jest ograniczony przez JVM (chociaż nie mam pojęcia, czy przyniesie to jakąkolwiek poprawę ...)

      Runtime.getRuntime (). exec ("omxplayer [nazwa pliku]");  
To nie powinno dawać statycznych, ale zapętlonych fragmentów.
@ThorbjørnRavnAndersen: Czy to ma znaczenie dla mojej odpowiedzi? Z wyjątkiem części Java?
No tak, jeśli objaw wskazuje na coś innego.
@ThorbjørnRavnAndersen: Nie rozumiem, co masz na myśli. Możesz wytłumaczyć?
Statyczny ma miejsce, gdy do obwodów dźwięku podawane są niewłaściwe bajty. Jeśli oprogramowanie działa wolno, podawane są _prawe_ bajty, ale nie na tyle szybko, że używane bufory zawierają nieaktualne dane, powodując zapętlenie dźwięku w buforze. Tak przynajmniej widziałem ten objaw w innych systemach.
@ThorbjørnRavnAndersen: Ach, rozumiem. nanoman wspomina, że ​​dźwięk „zacina się”. Może jeśli poprosimy go o rozwinięcie, pomoże to w postawieniu diagnozy.
-1
#3
+2
Damjan Jovanovic
2012-08-04 16:03:11 UTC
view on stackexchange narkive permalink

Jeśli jakakolwiek aplikacja może płynnie odtwarzać dźwięk przy użyciu procesora, to wszystkie aplikacje powinny mieć możliwość płynnego odtwarzania.

OpenJDK 6 ma problemy z ALSA (nie odtwarza na „domyślnym” urządzeniu dla przykład), więc zamiast tego użyj OpenJDK 7. Ponadto obie wersje OpenJDK używają interpretera Zero, który jest bardzo powolny. Powinieneś użyć JVM, który obsługuje JIT, takiego jak CACAO w dystrybucji soft-float lub Avian JVM w dystrybucji hard-float (takiej jak Raspbian).

Ale czy cokolwiek może płynnie odtwarzać pliki MP3? Żadna z moich aplikacji nie może
#4
  0
nanoman
2012-08-16 23:06:48 UTC
view on stackexchange narkive permalink

Świetna wiadomość - mam go uruchomionego!

Zainstalowałem nowy obraz softfloat Debian wheezy, a następnie zainstalowałem właśnie wydaną JDK 7 Update 6 na nim i działa bez zarzutu. Tylko upewnij się, że instalujesz ten JDK w dystrybucji opartej na softfloat.

Zużycie procesora podczas odtwarzania MP3 stale wynosi około 45%.

Więc to był problem JVM.


To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...