FLAC auf Linux abspielen

Free Lossless Audio Codec, kurz Flac, ist ein verlustloses Dateiformat, was man auch daran sieht, daß die Dateien echt groß sind, z.B. 31 MB für diesen Song unten. Das MP3 mit 320kbit Encoding ist nur 1/3 so groß.

Wer Nautilius als Filemanager hat und seine Musik mit QMMP wiedergibt, der hat es wirklich einfach Flac abzuspielen. Dazu muß man QMMP nur im Nautilus als Defaultanwendung für Flac angeben:

Eigenschaftenmenü der FLAC Datei

Eigenschaftenmenü der FLAC Datei

Rhythembox kann zwar auch Flac, aber das ist kein Programm, daß man zum Hören von Musik nebenbei laufen lassen will. Das kompaktere QMMP als AMP Ersatz ist da natürlich besser geeignet, zumal es auch lizenzbehaftete Musikdateien abspielt.

Wer Flac kodieren will, braucht natürlich erstmal ein Rohdatenfile in dem die Daten verlustlos vom Musikträger kommt. Es macht z.b. keinen Sinn, ein 128 kbit mp3 in Flac umzuwandeln, dadurch wird es nicht besser, nur größer 😉 hat man sowas, kann man ffmpeg einsetzen, der dann Dank Encoder Flake, ein Flac File erzeugen kann.

Beispiel:

ffmpeg -i ‚/home/marius/Boston – More Than A Feeling – 320k VENYL.mp3‘ -c:a flac ‚/home/marius/Boston – More Than A Feeling – 320k VENYL.flac‘

Wie man am Beispiel sieht, habe ich zu Testzwecken das Flac aus einem MP3 erzeugt, es können aber dank FFmpeg so ziemlich alle Format verwendet werden, die es gibt. Die durchschnittliche Kompressionrate von Flac liegt bei 1,8x zum Original.

FFMpeg kann viele verscheidene verlustlose Codecs benutzen:

 D..... = Decoding supported
 .E.... = Encoding supported
 ..V... = Video codec
 ..A... = Audio codec
 ..S... = Subtitle codec
 ...I.. = Intra frame-only codec
 ....L. = Lossy compression
 .....S = Lossless compression
 D.VI.S cllc                 Canopus Lossless Codec
 D.VI.S lagarith             Lagarith lossless
 .EVI.S ljpeg                Lossless JPEG
 D.VI.S mszh                 LCL (LossLess Codec Library) MSZH
 D.VI.S vble                 VBLE Lossless Codec
 D.V..S zerocodec            ZeroCodec Lossless Video
 DEVI.S zlib                 LCL (LossLess Codec Library) ZLIB
 DEA..S alac                 ALAC (Apple Lossless Audio Codec)
 DEA..S flac                 FLAC (Free Lossless Audio Codec)
 D.A..S mlp                  MLP (Meridian Lossless Packing)
 D.A..S mp4als               MPEG-4 Audio Lossless Coding (ALS) (decoders: als )
 D.A..S ralf                 RealAudio Lossless
 .EA... sonicls              Sonic lossless
 D.A..S tak                  TAK (Tom's lossless Audio Kompressor)
 D.A..S wmalossless          Windows Media Audio Lossless

Für das Kodieren von Audiodaten kommen also  „ALAC“,“FLAC“ und „Sonicls“ infrage.

Obige Liste bekommt man so :  ffmpeg -codecs | grep -i -E „(lossless|=)“

Kleine Randnotiz: Marianne war, Zitat: „Das schönste Mädchen, das ich (als Junge) je gesehen hatte.“ so Komponist & Texter Tom Scholz, der das Lied in seiner Garage aufgenommen hatte. Mary Jane dagegen, Gegenstand der Beatle Songs, war ein Pseudonym für Drogen aller Art. Die Band Boston wurde mit dem Lied auf einen Schlag weltberühmt und das Album war jahrelang ein Bestseller in den Läden, mit über 17 Millionen verkauften Alben, allein in den USA. Der Gag, Tom Scholz hat am MIT die Polaroid Technik entwickelt und mit der Kohle seine Musikaustattung gekauft. Vom Foto-Chemie Studenten zum Musiker, alle Achtung.

 

Linux, Android und die PA

Nein, die PA ist keine unbekannte Regulierungsbehörde für Linuxe aller Art 😀 Eine PA meint die Beschallungsanlage auf Veranstaltungen deren Zielgruppe das Publikum ist.

Aber was hat das mit Linux zu tun ?

Wer mein Blog beobachtet hat, wird wissen, daß ich eine ganze Reihe von Beiträgen zum Thema Audiodatenströme im Netz veröffentlicht habe. Wir können von Linux an Linux senden, von Linux an Android und von Android zu Linux , aber eins hatten wir bislang nie: Livestreaming.

Ok, so ganz stimmt es nicht, weil Pulseaudio jede angeschlossene Tonquelle umrouten kann, und damit auch Liveton, aber von Android hatten wir das bislang nicht. Das wird sich jetzt ändern.

Wir brauchen :

Android: AirAudio
Linux: Rygel ( oder Kodi )

Ein Wort zu Kodi.. vieles von dem, was ich hier schon vorgestellt habe, geht auch mit Kodi als Empfänger und das sogar einfacher, weil Kodi ein echt gutes Produkt ist. Allerdings hat Kodi den Nachteil, daß es recht groß ist, weswegen kleinere Lösung preferiert werden. Leider hat es auch eine 6 Sekunden Verzögerung mit dem was wir heute machen wollen und das geht gar nicht 🙂

Erstmal Rygel starten

Zunächst mal starten wir Rygel in der Konfiguration vom letzten mal. Kleines Update dazu: man benötigt GStreamer für Rygel und da das MP3 Decoder Plugin sonst geht es nicht. Ich selbst hatte auch Probleme Rygel auf meinem Laptop zum Laufen zu bringen, wenn es nicht will  -> Kodi nehmen.

AirAudio starten

Groß konfigurieren muß man AirAudio nicht, aber ein paar Anmerkungen sind angebracht. Das Programm kann an fast alle gänigen ( und ein paar mir völlig unbekannte Produkte ) Daten senden. Wenn man AirAudio das erste mal startet, streamt es das ins Handy eingebaute Mikrofon ins Netz, es kann aber auch die Ausgaben von fast jedem installierten Programm als Quelle benutzen, weil es die Lautsprecher anzapft 🙂 Wir brauchen das Mikro.

In den Einstellungen tragen wir für AirPlay eine Verzögerung von 0 Sekunden ein, 0,5 Sekunden wäre wohl auch noch möglich, aber man sollte immer bedenken, das die PA auch noch eine Verzögerung hat und nichts ist schlimmer, als wenn der Sprecher schon irgendwas macht, aber aus der PA noch Texte von vor 10 Sekunden kommen 😉  Ist das Netz stabil, sind 0,0 Sekunden vollkommen ok.

Screenshot_2016-05-14-18-38-00

Android – AirAudio

Wenn man schon beim Konfigurieren ist, kann man gleich noch bei DLNA MP3 einstellen. Das hat zwar heute keine Auswirkungen, aber wenn man z.b. mal seine Familie beim Smartfernsehen beglücken will … 😀 Mit diesen Apps läßt sich soooooviel Spaß haben .. Totenkopf oder bei Internetaffineren Anonymous Logo aufm TV, oder man steht vor der Tür und „klopft digital an“.. Möglichkeiten ohne Ende 😉

Wenn wir mit Konfigurieren fertig sind, aber meisten schon beim Einschalten der App, finden wir eine Liste mit „Listenern“ zu denen wir Senden können. Es ist kein Multicast im Spiel, also sendet man i.d.R. nur an einen Empfänger. Man kann in der Liste aber auch mehr als einen anschalten. Wo ich grade so drüber nachdenken, macht das auf verteilten Veranstaltungen Sinn, wenn verschiedene Räume mit mehreren PA genutzt werden. Bei wichtigen Durchsagen, z.B. wenn es brennt oder etwas andere wichtiges passiert ist, könnte man sich bequem überall draufschalten.

Wenn es dann geht …

sieht und hört man das im Pulseaudio Mixer :

Rygel - Audiostream in PulseaudioJetzt wo es im Pulseaudio ist, könnte man es natürlich gleich wieder auf den Multicast schicken und … aber ab hier übernimmt die eigene Verstellungskraft 😉

Wozu das ganze, es gibt doch Funkmikros ?!

Stimmt, es gibt Bluetooth Mikros, Funkmikros und alles mögliche. Warum also so etwas nehmen? Natürlich a) weils geht und b) weil die meisten ein Handy haben, und damit zusätzliche Ausrüstung unnötig wird. je weniger man mit sich rumschleppen muß, desto besser 🙂 Peinlich wird es nur, wenn während des Vortrags die Mama anruft 😀 Um das zu verhindern, einfach das Handy auf Stumm stellen. Das Mikro geht trotzdem.

Followup: Fedora: Audio auf Android streamen

Im Beitrag Fedora: Audio auf Android streamen wurde eine Methode vorgestellt, wie man den Desktopton schlank zum Android bekommt. Dazu war ein eigener kleiner Streamserver nötig.

Hier nun eine Methode die mit PulseAudio und einem APK auf dem Android auskommt.

Auf Linux starten wir als User erstmal das Streammodul für PulseAudio:

pactl load-module module-simple-protocol-tcp rate=48000 format=s16le channels=2  record=true port=8000

Dann installieren wir auf dem Android dieses APK: PulseDroid

Wir starten den PulseDroid auf dem Androidgerät und tragen die LAN IP des Linuxrechners mit dem Port 8000 ein. Auf Start klicken und schon rauscht es. Das liegt daran, daß jetzt der „Default“ Ton des Linuxrechners übertragen wird, was das Mikro sein dürfte. Im PulseaudioMixer stellt man jetzt einfach die Quelle des Tons so ein, wie man das braucht und schon hört man es auf dem Android.

Wer direkt etwas anderes streamen will, der kann auch direkt die Quelle angeben:

pactl load-module module-simple-protocol-tcp rate=48000 format=s16le channels=2  record=true port=8000 source=pa quell device>