Ich habe einen Java-basierten MP3-Player, der auf dem JLayer / BasicPlayer-Framework basiert und den ich gerne auf dem Pi zum Laufen bringen möchte. Ich habe das OpenJDK auf dem aktuellsten Raspbian installiert. Der BasicPlayer öffnet die Zeile korrekt, bekommt jedoch nur bei der Wiedergabe einer Datei stotternde Geräusche.
Die Wiedergabe von Sound mit dem Befehlszeilentool mpg123 funktioniert einwandfrei.
Stimmt etwas mit der Java Sound-Implementierung des ARM OpenJDK nicht?
Ich bin dankbar für Hinweise in die richtige Richtung.
Dies ist der Code:
BasicPlayer pl = new BasicPlayer();
try {
String path = "/home/pi/Music/testmp3.mp3";
File file = new File(path);
pl.open(file);
pl.play();
} catch (Exception e) {
CubeLog.logException(e);
}
Vielen Dank.
mp3
Dekodierung in Software stattfinden würde. Ich bezweifle ernsthaft, dass der Pi dazu in der Lage wäre.Antworten:
Ich habe nicht genug Punkte, um Kommentare abzugeben. Also werde ich hier posten:
1- "Nicht genug CPU" - Ich habe in einer Sparc-Station mit einer 35-MHz-CPU MP3-Decodierung per Software durchgeführt. Wenn dieser Decoder nicht ernsthaft fehlerhaft ist, sollte er funktionieren.
Können Sie eine Datei vollständig dekodieren? Wenn ja, messen Sie die Zeit, die es dauert. Wenn es weniger als die Gesamtlaufzeit des Songs ist, sind Sie im Geschäft. Kopieren Sie anschließend die Undecode-Datei auf einen anderen Computer und prüfen Sie, ob die WAV in Ordnung ist.
[BEARBEITEN]:
Ich habe einige Tests mit JLayer1.0.1 auf meinem RPI durchgeführt und es ist langsam:
Zeit java -cacao -classpath jl1.0.1.jar javazoom.jl.converter.jlc file.mp3 -p out.wav
Das Dekodieren dauert dreimal länger als die Laufzeit des Songs.
[EDIT 2]:
Mit Java SE Embedded 6 konnte eine MP3-Datei in kürzerer Zeit als zur Laufzeit dekodiert werden. Http://www.oracle.com/technetwork/java/embedded/downloads/javase/index.html :
pi @ raspbmc: ~ / java / JLayer1.0.1 $ rm out.wav; Zeit ../ejre1.7.0_04/bin/java -classpath jl1.0.1.jar javazoom.jl.converter.jlc Gill \ Scott-Heron- \ Die \ Revolution \ Will \ Not \ Be \ Televised.mp3 -p out. wav FileName = Gill Scott-Heron- Die Revolution wird nicht im Fernsehen übertragen.mp3
real 0m57.624s Benutzer 0m49.900s sys 0m2.320s
Auf 3 Minuten wav.
Problem ist, dass es auf Raspbian nicht funktioniert:
http://www.raspberrypi.org/phpBB3/viewtopic.php?f=66&t=11671
quelle
Hier ist dein Problem:
Der Raspberry Pi ist einfach nicht leistungsfähig genug, um die MP3-Datei in Echtzeit in Software zu dekodieren, wenn sie auf der JVM ausgeführt wird.
Sie können ein paar Dinge ausprobieren, damit es funktioniert:
Versuchen Sie, einen Player zu betreiben, der nicht durch die JVM eingeschränkt ist (obwohl ich keine Ahnung habe, ob dies zu einer Verbesserung führt ...)
quelle
Wenn eine Anwendung mit der CPU einen reibungslosen Sound wiedergeben kann, sollten alle Anwendungen ihn problemlos wiedergeben können.
OpenJDK 6 hat Probleme mit ALSA (spielt beispielsweise nicht auf dem "Standard" -Gerät), verwenden Sie also stattdessen OpenJDK 7. Außerdem verwenden beide OpenJDK-Versionen den Zero-Interpreter, der sehr langsam ist. Sie sollten eine JVM verwenden, die JITs wie CACAO in einer Soft-Float-Distribution oder Avian JVM in einer Hard-Float-Distribution (wie Raspbian) verwenden.
quelle
Tolle Neuigkeiten - ich habe es geschafft!
Ich habe das neue Softfloat-Debian-Keuchbild installiert und dann das gerade veröffentlichte JDK 7 Update 6 darauf installiert , und es läuft einwandfrei. Stellen Sie einfach sicher, dass Sie dieses JDK auf einer Softfloat-basierten Distribution installieren.
Der CPU-Verbrauch während der Wiedergabe eines MP3-Geräts liegt konstant bei etwa 45%.
quelle