Lestards Blog Software,Java,JavaScript,XUL,XML,Videos

12Jul/102

Mp3 nach Ogg convertieren unter Linux. Und am Ende wieder foobar2000

Neulich hatte ich das Verlangen, meine digitale Musiksammlung mal etwas genauer unter die Lupe zu nehmen und etwas auszumisten. Ich wollte nicht direkt die Musikdateien löschen sondern nur all die anderen Dateien, die dort noch so rumspuken und eigentlich nicht benötigt werden, wie z.B. Albumcover, Playlisten und Text/NFO-Dateien. Mit der Kommandozeile unter Linux und Befehlen wie

find . -type f -iname "*.mp3" | wc -l (gibt die Anzahl aller mp3-Dateien an)

war es leicht, ein paar Statistische Aussagen zu meiner Sammlung zu treffen. Letztlich musste ich feststellen, dass 95 % meiner Musikdateien im mp3-Format vorliegen und nur 1% im freien ogg-vorbis-Format. Damit war die Idee geboren, meine gesamte Musiksammlung in eben dieses freie Format umzuwandeln. Warum? 1. Weil ich es kann. 2. Weil ich es interessant finde, auf die suche nach (halb-)automatischen Möglichkeiten für diese Aufgabe zu gehen und 3. Weil Freie Formate Rocken.

Nun gibt es natürlich Programme, die solche Konvertierungen in einem Rutsch ausführen können. Dummer weise sind oft die Möglichkeiten der Einflussnahme etwas begrenzt. Vor allem die Bitrate bereitete mir Sorgen. Natürlich wird die Audio-Qualität bei so einem Vorgang nicht besser - im Gegenteil. Um dieses Problem möglichst gering zu halten, könnte man natürlich einfach alle Dateien mit 320 kbps oder mehr konvertieren. Nur stellt sich hier die Frage, ob sich das bei Dateien, die im Ausgangsformat lediglich 128 kbps besitzen, überhaupt lohnt. Der Unterschied bei der Dateigröße ist schließlich beträchtlich.

Ideal wäre also, wenn man festlegen kann, das z.B. Dateien mit einer Ausgangsbitrate von 128 kbps dann mit 192 kbps ins OGG-Format konvertiert werden. Dateien mit 192 Ausgangsbitrate werden nach 256 kbps gewandelt und Dateien mit höherer Bitrate (320 z.B.) bekommen eine noch höhere neue Bitrate.

Eine solche Abstufung erlauben die üblichen Programme leider nicht. Als Informatiker öffnet man bei solchen Gelegenheiten natürlich sofort die Entwicklungsumgebung und versucht etwas eigenes zu basteln. Ich habe mir in dem Zusammenhang zum ersten mal die Programmiersprache Python angeschaut. Nach einigem Rumprobieren bin ich dem Ziel sogar etwas näher gekommen - mein Script konnte alle Mp3s rekursiv einlesen und zumindest schonmal ins WAV-Format zwischenspeichern und die ID3-Tags aufheben. Die OGG-Konvertieren hätte hier nur noch angeschlossen werden müssen. Allerdings hat mich dann doch die Lust verlassen und ich habe mir vorgenommen, das ganze später weiter zubasteln.

Am Ende kam mir dann jedoch noch eine andere Idee: Foobar2000. Foobar ist nämlich nicht nur ein super Abspielprogramm sondern kann auch alle möglichen Formate in alle möglichen anderen Formate konvertieren. Und was hier wichtig ist: Ich kann natürlich auch meine gesamte Mp3-Sammlung auf einmal einlesen und dann nach der Bitrate Sortieren. Und schon kann ich selektiv konvertieren. Und direkt wurde mir wieder bewusst, wie sehr foobar2000 unter Linux fehlt.

veröffentlicht unter: Musikplayer 2 Kommentare
10Jul/104

Musikplayer

Hin und wieder habe ich in der letzten Woche Zeit gefunden, um an meinem Musikplayer weiter zu werkeln. Der Grund, warum ich das Projekt wieder hervorgekramt habe ist, dass ich vor einiger Zeit sowohl auf dem Notebook als auch auf meinem PC komplett auf Linux Mint umgestiegen bin und Windows nur noch ein Schattendasein fristet und ich deshalb wieder aufs neue feststellen muss, dass die Linux-Musikplayer leider nicht meinen Geschmack treffen und Foobar2000 über Wine auch nicht sonderlich gut läuft.

Einen eigenen Musikplayer zu entwickeln ist allerdings auch nicht ganz so einfach. Vor allem die Grund-Funktionalität, nämlich das Abspielen einer mp3 ist nicht so ohne weiteres hinprogrammiert, zumindest wenn man wie ich wenig Ahnung von C oder C++ hat, denn mit bloßem JavaScript lässt sich keine Mp3 abspielen. Da mein Player aber in jedem Fall frei und OpenSource sein wird, ergeben sich einige Vorteile bei der Entwicklung. Ich kann auf Programmcode anderer freier Projekte zurückgreifen und mir anschauen, wie andere Leute das machen.

Es gibt ein paar ähnliche Projekte, die ebenfalls auf Mozillas XUL aufbauen. Hier ist als erstes natürlich Songbird zu nennen, der jedoch von seinem Konzept und der Funktionalität her nicht meinen Vorstellungen entspricht. Es war jedoch trotzdem interessant, den Quellcode zu lesen, allerdings ist es nicht so einfach, den Überblick zu behalten bei der großen Anzahl an Funktionen, die Songbird mitbringt.

Es existieren aber noch weitere freie Multimedia-Player auf XUL-Basis. "XULPlayer" ist ein universeller Video- und Audio-Player, der auf der MPlayer-Bibliothek aufbaut. Leider wird der XULPlayer auch nur für Windows entwickelt.

Eine weitere Alternative wäre XULMusic, der noch am ehesten meinen Vorstellungen entspricht, wenn es darum geht, auf dem Code aufzubauen. Leider ist genau dieser nicht mehr Verfügbar. Zwar kann man auf den XUL- und JavaScript-Code direkt zugreifen, da dieser ja nicht kompiliert wird, jedoch auf den Code der zugrunde liegenden GStreamer-Bibliothek kann nicht so einfach zu gegriffen werden. Leider funktioniert die Version nicht korrekt, was vermutlich daran liegt, dass dieses Projekt schon ein paar Jahre ohne Aktualisierungen auf dem Buckel hat.

Aktuell teste ich deshalb einige Varianten, um innerhalb einer XUL-Applikation Audio-Dateien abzuspielen und dies per JavaScript zu steuern.

veröffentlicht unter: Musikplayer 4 Kommentare
2Jul/104

Snake Game

Die Langeweile am Wochenende hat mich dazu gebracht, einen Snake-Klon zu schreiben. Wer einmal ein altes Nokia-Handy besessen hat. kennt das Spiel sicher noch, aber auch auf anderen Plattformen ist das Spiel - manchmal in Abgewandter Form - anzutreffen. Aktuell gibt es im Netz jede Menge Flash-Klone und auch im Ubuntu-Repository befinden sich einige Varianten (KTron z.B.).

Wirklich zufrieden bin ich damit aber nicht so ganz. Oft wird das simple Spielkonzept durch anderes Zeugs erweitert oder gar verfälscht. Ich persönlich mag da lieber das alte simple Snake haben. Eine Schlage, ein Spielfeld an dessen Rändern man durch schlüpfen kann um an der anderen Seite wieder heraus zu kommen und ein einfaches kleines Etwas, das man fressen kann um zu wachsen.

Hier gibt es zwar Flashvarianten, die genau das mitbringen aber ... naja es ist halt nur Flash. Irgendwie Uncool halt. Deshalb und vor allem eben wie Eingangs erwähnt aus Langeweile hab ich mich an eine HTML+JavaScript-Variante gesetzt.

Das Spiel funktioniert soweit, es kann aber sein, dass noch hier und da Fehler stecken. Zwar ist es bei dieser Art von Onlinegames für die meisten unerheblich aber ich sags trotzdem dazu: Der Quellcode steht natürlich frei zur Verfügung und kann von jedem angeschaut und verändert werden. Auch kann das Spiel gerne auf eigene Webseiten hochgeladen werden. Über Feedback freue ich mich natürlich auch sehr. Viel Spaß

Link zum Spiel

veröffentlicht unter: Software 4 Kommentare
26Jun/100

Probeklausur Objektorientierte Programmierung

Hier gibt es Lösungsvorschläge für die Probeklausur Objektorientierte Programmierung. Wichtig: Alle Angaben ohne Gewehr. Das ist lediglich die Lösung, wie ich sie in der Klausur gemacht hätte, ob diese Lösung 100% richtig oder mit den Vorstellungen von Prof. Ringwelski übereinstimmt, weiss ich nicht.

25Jun/100

C, Eclipse, JNI und Musikabspielen

Wie in der Übung versprochen, hier nochmal die Anleitung für Eclipse und C

4Mai/100

vegan food: Pancakes und Kekse

Nach langer Zeit mal wieder ein Update im Bereich der Vegetarischen Küche: Diesmal mit Pancakes und Keksen.

veröffentlicht unter: Vegan Food weiterlesen
6Apr/100

Songbird nicht mehr für Linux. Wäre ja auch zu schön gewesen.

Vor einiger Zeit hatte ich hier an dieser Stelle die Idee vorgestellt, eine eigene Musik-Abspielsoftware zu schreiben oder aber eine Vorhandene freie Software auf meine Bedürfnisse anzupassen. Kurz gesagt ging es darum, dass der Musikplayer foobar2000 einige wirklich überragende und leider auch einzigartige Funktionalitäten bietet, leider jedoch nicht freie Software ist und auch nur für Windows zur Verfügung steht.

Was also Fehlt ist ein Player, der für alle relevanten Betriebssysteme (mindestens Windows und Linux) zur Verfügung steht, dabei aber viele gute Ideen von foobar2000 übernimmt, jedoch möglichst die weniger guten Ideen und Verhaltensweisen der üblichen Player, nicht übernimmt. Dazu eine Möglichst simple Konzeptionelle Grundlage auf Basis von Playlisten statt einer Medienbibliothek.

Zunächst stand die Idee im Raum, einen eigenen Player von Grund auf neu zu entwickeln. Hier könnten grundsätzliche Entscheidungen von Grund auf getroffen werden ohne auf Abhängigkeiten vorhanderer Software rücksicht nehmen zu müssen. Die andere Möglichkeit, die mir in den Sinn kam ist, eine vorhandene freie Playersoftware den eigenen Bedürfnissen anzupassen. Dafür ist freie Software ja schließlich da.

Als Fan von Mozilla-Technologien bietete sich hier natürlich Songbird an, welcher ja komplett auf eben jener Mozilla-Plattform aufbaut, und deshalb neue Funktionalität auch über Erweiterungen eingefügt werden könnte. Zwar ist Songbird ziemlich überladen mit unnötigen Funktionen, diese könnten jedoch zum großen Teil genauso auch wieder rausgenommen werden. So weit bisher.

Nun musste ich jedoch mit einer Mischung aus Entsetzen und Enttäuschung lesen, dass das Songbird-Team die Unterstützung für ihre Linux-Version einstellt (Quelle: Heise Open). Zwar wird es weiterhin Releases für Linux geben, diese werden jedoch nicht mehr getestet und neue Features werden nicht mehr Unterstützt. Für meinen Teil hat sich damit die Frage letztlich geklärt, welchen der oben kurz erwähnten Wege ich bevorzugen würde. Zwar ist es realistisch gesehen, natürlich weiterhin möglich, Songbird auch auf Linux zu benutzen und wenn man auf neue Features verzichten kann, ist dies Sicher kein Problem. Jedoch macht sich das Team mit dieser Entscheidung nicht unbedingt sympatischer. Eine aktive Unterstützung in Form von beigesteuerten Erweiterungen, macht so natürlich keinen Spaß mehr.

Da ich aktuell mit meinem Praktikum beschäftigt bin, ist diese Programmidee aber ohnehin erstmal noch Zukunftsmusik. Jedoch beschäftige ich mich in meinem Praktikum auch mit dem Mozilla-Framework und der Arbeit mit XML - beides Dinge, die für die Entwicklung eines solchen Players von Vorteil sein dürften. Gerade die Verarbeitung von XML sollte für einen Playlist-Orientierten Player wichtig seien.

veröffentlicht unter: Musikplayer keine Kommentare
1Apr/100

Beispielprogramm aus der Vorlesung

Wie Versprochen hier das Programm, welches ich in der Vorlesung vorprogrammiert hatte. Ich habe an allen Relevanten Stellen Kommentare hinzugefügt. Für einen ersten Einstieg sollte es also sicherlich eine kleine Hilfe sein.

Für Fragen dazu ist wie immer in der Übung Gelegenheit oder auch hier in den Kommentaren.

BeispielProgramm GUI

Viel Spaß beim Lesen, (hoffentlich) Verstehen und Nachprogrammieren.

28Mrz/103

Ein Hoch auf Vektorgrafik

Am Wochenende hat mich mal wieder die Lust gepackt, ein bisschen mit dem tollen Programm InkScape rumzuspielen. Und je mehr ich mit InkScape arbeite, um so mehr gefällt mir das Programm. Und Vektorgrafik sind sowieso eine coole Angelegenheit.

veröffentlicht unter: Grafik weiterlesen
26Mrz/100

xmlSlides – Aktueller Stand

Vor einiger Zeit hatte ich ja bereits ein paar Ideen und Entwürfe für meine Präsentations-Software für Browser vorgestellt. Mittlerweile hat sich einiges getan bzw. geändert.

Zunächst einmal: Ich bearbeite dieses Projekt nun im Rahmen meines Praktikums und meiner Abschlussarbeit an der Hochschule. Das heisst vor allem, dass das Projekt nun nicht mehr nur ein kleines Hobby-Projekt für zwischendurch ist, das ich vieleicht irgendwann einmal fertig stelle, sondern dass ich aktuell in Vollzeit daran arbeite und es in jedem Fall in absehbarer Zeit vorzeigbare Ergebnisse geben wird. Ich möchte ja schließlich mein Studium und die Abschlussarbeit vernünftig abschließen.

Eine weitere Konsequenz daraus ist, dass ich viele Sachen nicht mehr "einfach so" programmieren kann, wie es mir grade passt, sondern ich tiefgreifendere Untersuchungen anstellen muss, damit wirklich ein vernünftiges Ergebniss herauskommt. Eine erste Konsequenz daraus ist, dass ich einen Großteil der bisherigen Arbeit über Bord geworfen habe und das ganze von Grund auf neu plane. Die Anforderungen bleiben jedoch weitestgehend gleich, nur der Lösungsweg verändert sich etwas.

Im ersten Schritt verzichte ich nun auf eine selbstentwickelte XML-Sprache und werde stattdessen eine bereits bestehende XML-Sprache zurückgreifen. Welche konkret steht aber aktuell noch nicht ganz fest. Auf der einen Seite ist das DocBook-Format für Technische Dokumentationen eine etablierte Technologie und bietet auch eine Art Spezialisierung für die Beschreibung von Präsentationen. Der Nachteil dieser Variante ist jedoch, dass das Format unglaublich komplex ist und sehr sehr viele Elemente enthält, die ich in meiner Software nicht benötige. Die hohe Komplexität spricht auch gegen eine der Hauptanforderungen nach Einfachheit und Nutzerfreundlichkeit. Man könnte jedoch auch nur einen Teil des DocBook-Slides-Formates implementieren und auf den Rest verzichten. Diese Lösung hat allerdings auch ihre Schattenseiten.

Eine andere recht vielversprechende Technologie ist das Slide-Format von MulberryTech. Dieses Format bietet nicht so viele Elemente wie das DocBook-Format und ist damit nicht so komplex. Aus meiner Sicht sind die vorhandenen Elemente teilweise auch sinnvoller bezeichnet, was verständlich ist da es speziell für Folienpräsentationen entwickelt ist. Die Dokumentation der Elemente innerhalb der Dokument-Typ-Definition ist auch sehr vorbildlich. Einziger Wehrmutstropfen ist bei diesem Format jedoch, dass es letzlich auch eine Eigenentwicklung eines Unternehmens ist und kein Etablierter Standard wie DocBook.

Die Plattform

Was vermutlich gleich bleiben wird im Vergleich zu den alten Konzepten, ist die Plattform. Ich werde das Programm mit großer Wahrscheinlichkeit als Firefox-Plugin entwickeln. Hierfür habe ich bereits an einem Entwurf für die Oberfläche gearbeitet.

Es wäre jedoch auch eine Webbasierte Lösung denkbar, bei der der Nutzer auf einer Webseite einen Editor vorfindet und seine Präsentationen erstellen kann. Dies könnte dann auch direkt mit einem Hosting-Angebot verknüpft werden, bei der die erstellten Präsentationen auf dem Server verbleiben und der Nutzer eine URL zu seiner Präsentation zur Verfügung gestellt bekommt, über die er die Präsentation jederzeit direkt ansehen kann.

Wie genau die Lösung aussehen wird, muss ich noch genau entscheiden. Wie gesagt: Da es sich hierbei nun um ein Projekt im Wissenschaftlichen Rahmen handelt, müssen solche Entscheidungen natürlich sehr viel Detailierter behandelt und die Abwägung zwischen Technologien mit Bedacht getroffen werden.

veröffentlicht unter: xmlslides keine Kommentare