Fehlermuster im Streamripper
Ich schrieb vor nicht allzu langer Zeit einen Blogeintrag, um in Streamripper2 die Aufnahme-Funktion besser zu nutzen.
Diese muss man konfigurieren - also schlusendlich einen Kommandozeilenaufruf hinterlegen. Klassischerweise wird für Radiostreams das Tool Streamripper konfiguriert - und um eine optische Ausgabe zu haben, setzte man einen Konsolenaufruf davor. Ich fand das sehr bescheiden - sehr oft war bei egenen Versuchen war das Konsolenfenster gleich wieder zu und damit auch eine etwaige Fehlermeldung weg. Das ist doch nur unbefriedigend.
So fing alles an. Ich kann zum Glück etwas Shellprogrammierung.
Es sollte zunächst ein kleiner Wrapper sein, der anzeigt, welches Kommando mit welchen Parametern aufgerufen wird - und im Falle eines Abbruchs mich auch den Fehlertext lesen lässt.
Aber das wurde schnell etwas mehr, weil ich mit den ersten Versionen des Wrapperskripts nun auch die verschiedenen Fehlerkonstellationen von Streamripper sehen konnte. Mit Hilfe von Curl wurden die Http Response Header angezeigt, was weitere Dinge aufzeigt. So ergaben sich diese Fehlermuster:
Problem: Fehler 404 oder 410.
Lösung: keine - der Stream existiert nicht mehr.
Problem: Fehler 50x
Lösung: Ein Streamingserver arbeitet derzeit nicht oder reagiert nicht schnell genug (Timeout). Lösen kann ich das nicht, aber eine Meldung ausgeben, damit man weiss, dass es wohl ein nur temporäres Problem gibt und man es später wieder versuchen kann.
Problem: die URL ist kein abspielbarer Stream, sondern eine Playlist.
Lösung: Die Playlist wird ausgelesen und die erste Streaming-URL daraus extrahiert. Anm.: Es gibt durchaus auch Playlisten-Typen, die Streamripper versteht.
Problem: Streamipper wird mit einem 403 abgewiesen.
Lösung: Manche Streamingserver verweigern den Zugriff je nach Useragent und unterbinden den Abruf durch den Streamripper. Aber im Kommandozeilenaufruf des Streamrippers kann man den Useragent umschalten.
Problem: Streamriupper meldet -28 [SR_ERROR_INVALID_METADATA]
Lösung: Keine - das ist ein Fehler im Streamripper selbst: er fordert Daten mit Http1.1 an, versteht aber selbst nur Http 1.0 und kommt dann mit der Antwort des Streamingservers nicht klar. Neben dem kurzen kryptischen Fehlercode wird dann ein ergänzender Hinweis eingeblendet. Es gibt einen nicht offiziellen Patch, mit dem man Streamripper neu complilieren kann - da die letzte Streamripperversion 2008 erschien, wird es wohl nicht mehr offiziell gefixt.
Weil es im Streamripper noch Plugins auf MODarchive und Jamendo gibt: ich habe noch Downloads mit Curl ergänzt:
- für Trackerfiles von MODarchive hinzugefügt (die Benamung der Zieldatei hole ich aus dem Http Response Header aus dem Attachment Filenamen)
- für jamendo MP3s (die Benamung der Zieldati erfolgt nach Aufruf von ffprobe - welches zu ffmpeg gehört - und wird aus Titel, Künstler und Jahr zusammengesetzt)
Im Dezember erschien die Version 1.1 - diese prüft die benötigten Tools und hat eine Erweiterung in der Cleanup-Funktionalität erfahren.
Die kleinen Heilungsfunktionen und verwertbare Meldungen für ein Debugging im Fehlerfalls sind doch immer hilfreich. Das scheint auch anderen zu gefallen. Mario Salzer verlinkte den Wrapper auf fossil.include-once.org - ich setze hiermit einen Link auch gern zu ihm zurück.
weiterführende Links:
Manjaro: kein Audio mehr
Meine Audiowiedergabe ging plötzlich nicht mehr … Also irgendetwas stimmt hier nicht.
als root:
# aplay -l **** List of PLAYBACK Hardware Devices **** card 0: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: NVidia [HDA NVidia], device 8: HDMI 2 [HDMI 2] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: NVidia [HDA NVidia], device 9: HDMI 3 [HDMI 3] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: NVidia [HDA NVidia], device 10: HDMI 4 [HDMI 4] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: Generic [HD-Audio Generic], device 0: ALC892 Analog [ALC892 Analog] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: Generic [HD-Audio Generic], device 1: ALC892 Digital [ALC892 Digital] Subdevices: 1/1 Subdevice #0: subdevice #0
OK, anhand der letzten gelisteten Geräte wird Audiohardware nach wie vor gefunden.
# pacmd list-sinks No PulseAudio daemon running, or not running as session daemon.
als User: wenn ich versuche, den Pulseaudio Dienst zu starten:
$ pulseaudio --start W: [pulseaudio] core-util.c: Failed to open configuration file '/home/axel/.config/pulse//daemon.conf': Permission denied W: [pulseaudio] daemon-conf.c: Failed to open configuration file: Permission denied
Das ist doch mal ein klarer Hinweis.
Im .config Verzeichnis gehörte alles meinem User - ausser dem pulse Verzeichnis:
$ ls -ld /home/axel/.config/pulse/ drwx------ 2 root root 4096 Jul 31 23:18 pulse/
So kann ein Prozess im Userkontext auch nicht zugreifen. Als root habe ich rekursiv den Owner gewechselt:
# chown -R axel. /home/axel/.config/pulse/
… und dann klappte der Start von Pulseaudio als User imTerminal auch
$ pulseaudio --start
… und auch die Wiedergabe und Lautstärkesteuerung waren wieder da.
Jamendo: 200.000 Streams
Jamendo.com - Erde - Europa - wo auch immer auf der Welt. Axels Logbuch. Wir schreiben Sternzeit, 16. Dezember 2018: der 200.000ste Stream meiner Musik wurde abgespielt.
Finanziell nicht ertragreich, aber rein virtuell fühlt sich das … naja, irgendwie schon toll an… wie ein kleiner Meilenstein.
weiterführende Links:
AMC-Player - flat skin
Am Wochenende habe ich v0.33 meines Html 5 Audioplayers freigegeben.
Funktional soll es das erst einmal sein, was ich mir für Version 1 vorstelle. Nun erledige ich ein wenig Code Cleanup.
Und vielleicht noch eine kleine Skin Datei. Eine in einer Art flat Design habe ich da schon mal in Vorbereitung:
… und auch ein Dark Theme
Beide sind noch nicht im Repo verfügbar … seht es als Preview :-)
Updates:
- 22.11.2018 - ein dunkles Theme hinzugefügt
weiterführende Links:
- Axels Webseite
- Dokumentation (en)
- Git-Repository (en)
AMC Player - viel fehlt nicht mehr zur Version 1
Der auf meiner Webseite eingebundene Surround Audioplayer kommt der Version 1 immer näher.
In den letzten Tagen kam ein Feature zur Integration und Anzeige von Songinfos+Coverbild hinzu. Get-Funktionen in der API entsprechend auch.
Und so einige kleine Unschönheiten wuden ausgebügelt.
Natürlich kann der Player auch für stereo Medien verwendet werden.
Aktuell schreibe ich an Erweiterungen, die es erlauben, Radiostreams einzubinden - analog mit denselben Metadaten und einem Coverbild. Streams oder Audiodateien sollen automatisch erkannt werden - man könnte so Mediadateien und Streams mischen. Entsprechend Medientyp sollen sich die Steuerelemente und dieFortschrittsanzeige anpassen.
weiterführende Links:
- Axels Webseite
- Dokumentation (en)
- Git-Repository (en)
Erstes Tutorial mit OBS: Installation Pimped Apache Status unter Lubuntu
Ich hatte, mal irgendwann OBS auf meinem Rechner installiert … seinerzeit für einen recht banalen Zweck (Vollbild-Streaming zu Youtube) … und jenes geriet fast in Vergessenheit, weil nie wieder gebraucht.
Bis - ja bis eines wunderschönen Tages jemand in unserem Institut meinte, “… mit OBS kann ich für eine Demo sehr einfach Bild-Kompositionen auf andere Bildschirme streamen…”. Es sei einfach und verbirgt viele komplexe Einstellungen, zu denen man aber auch kommt.
Dies war der Wink mit dem Zaunpfahl, das Werkzeug gleichen Abends nochmals hervorzukramen: Man kann mehrere Bildschirmszenen ertsellen und dazwischen umschalten? Diese auch speichern? Und statt streamen vielleicht auch ein Video aufzeichnen?
Ich habe mich zu Beginn wohl zu initial wenig auf das Werkzeug eingelassen. Die Einstiegsoberfläche ist halbwegs einfach. Sobald man aber irgendeine Einstellung bearbeitet, wird man mit zahlreichen Optionen regelrecht eingedeckt. Das Speichern der erstellten Szene habe ich gar nicht gefunden, weil ich es als “Pojekt” links oben im ersten Menüpunkt erwartet hätte. Man muss sich wirklich erst etwas genauer umsehen.
Weil ich schon immer mal ein Tutorial mit Aufzeichnung des Bildschirminhaltes machen wollte, habe ich mich nochmals hingesetzt und probiert.
Als Erstlingswerk entstand ein Installationsvideo für mein Monitoring Werkzeug Pimped Apache Status.
Das Haupfenster ist spartanisch … aber hat es in sich
- links unten: “Szenen” - eine Liste mit verschiedenen Settings: Start-Bildschirmseite mit Text, dann eine oder mehrere mehrere mit Interaktionen, eine Outro-Szene.
- links unten 2: “Quellen” - pro Szene kann man ein Setup von Quellen platzieren. Ein Bild oder Programmfenster, Webcam oder Videoquelle, Text - alle Elemente kann man skalieren und verschieben und so beliebig anordnen. Die Quellen kann man in mehreren Szenen verwenden (verlinken) - damit werden Änderungen eines Textes oder einer Farbe in allen Szenen übernommen.
OBS zeichnet die Szenen-Umschaltung, die ich manuell gesteuert habe (Anm.: man kann dies auch automatisieren) und die in einer Szene eingebetten Bildschirmaktionen als eine Video-Datei auf.
Nach der Aufnahme war das per Webcam aufgezeichnete Audio zu leise - das musste noch normalisiert werden. Und das Video nochmals encodet.
Weil ich noch zusätzlich einige Annotationen einbringen wollte, z.B. weitere Texte und Hervorhebungen in der Ausgabe auf der Konsole, wurde noch ein 2. Video-Bearbeitungswerkzeug herangezogen.
Und dann die Videodatei ein drittes Mal encodet. Davon wird die Videoqualität nicht besser. Hier habe ich noch Potential für Optimierungen.
Aber dann ging es “sogleich” auf Youtube.
Voila:
weiterführende Links:
- obsproject.com OBS Studio (Free and open source software for video recording and live streaming)
- videosoftdev.com VSDC Free Video Editor
- Axels Webseite - Docs Pimped Apache Status Get started - hier ist das Youtube Video eingebunden
Song: Space & Time
Instrumentale, elektronische Musik - erstellt mit Magix Music Maker.
Einige Synthesizer liefern Space-Sounds. Es setzen 8 Bit Sounds ein und eine kleine Melodie wird von einer E-Guitarre begleitet. 120 BPM.
Download:
https://www.axel-hahn.de/axel/download/space-and-time_2.0_.mp3
https://www.axel-hahn.de/axel/download/space-and-time_2.0_.ogg
… und 5.1 surround
https://www.axel-hahn.de/axel/download/space-and-time_5.1_.m4a
https://www.axel-hahn.de/axel/download/space-and-time_5.1_.ogg
Html5 Audio Events beobachten
Es entsteht gerade eine weitere Demo Seite zu Html 5 Audio:
Nach Eingabe einer beliebigen Audio URL wird diese als Source eines Audio Tags verwendet.
An dieses Audio Tag werden alle dokumentierten Events angeklebt und man kann bei den Interna eines Audio Tags zuschauen und wann welche Events abgesetzt werden.
Sie erscheinen zum einen rechts als Log (mit Zeitangabe in Millisekunden seit Laden der Seite). Damit kann man z.B. messen, wie lange ein Audio laden muss, bis es abgespielt werden kann (readyState=4).
Unten ist die Liste aller Events, die bei Absetzen hervorgehoben werden … und nach und nach schwächer verfärbt sind.
weiterführende Links:
Magix Music Maker - keine Abspielanzeige und mehr
Quasi von einem Tag zum anderen mochte “meine” Musiksoftware nicht mehr so recht.
- Die senkrechte Linie zur Anzeige der Position beim Abspielen bewegte sich nicht mehr
- Die Zeit-Anzeige der Abspielposition verblieb immer auf “001:01:000”
- Öffnete man den Mixer während des Abspielens, war die Anzeige des Equalizers zur Amplitude der Ausgabekanäle tot
- Diverse Menüpunkte waren nicht mehr wählbar. Darunter alle Export-Funktionen (das ist dann schon eine erhebliche Einschränkung)
- das Userinterface war bei geladenen Songs extrem langsam.
Meine Setup-Binaries habe ich alle da - sowohl von der Software, als auch den Soundpools und Synthesizern.
Was ich alles versuchte, und NICHT half:
- Programmeinstellungen -> Audio: Treiber umstellen - funktionierte in keiner Kosntellation - egal ob Wave, DirektSound, ASIO, …
- Setup von MMM ausführen und “Reparieren”
- Setup von MMM ausführen und “Deinstallieren” - anschliessend erneut ausführen und komplett neu “installieren”
Lösung Teil 1:
Von Magix gibt es ein Uninistall Tool, das noch weitere Installationsreste findet.
- Setup von MMM ausführen und “Deinstallieren”
- MX Uninstaller herunterladen - ausführen - Es gab einen Registry Eintrag, den ich gelöscht habe. Achtung: nicht wahllos alles löschen, was das Cleanup-Werkzeug so hergibt: Soundpools und die erstellten Dateien will man ja nicht unbedingt wegwerfen.
- Reboot des Rechners (kann sein, dass es das nicht braucht, aber wenn man schon “ewig” frustriert daran herumschraubt…)
- Setup von MMM ausführen und “Installieren”
- Meine Soundpools waren noch da - die Setup von MMM Premium Synthesizer mussten nochmals installiert werden.
Jetzt ist “nur” noch der Punkt mit dem langsamen Userinterface. Das ist etwas subtil. Nach Programmstart ist alles normal flüssig schnell. Nach Laden eines meiner Songs schläft die GUI ein. Simple Dinge, wie eine Einzelspur stumm oder solo schalten braucht ca. 2 Sekunden. Aber halt nicht nur das: sobald auch nur irgendein Objekt-Synthesizer in irgendeiner Spur verwendet wird, werden sämtliche Aktionen inder UI langsam. Sei es einen Snthesizer zu öffnen oder den MIDI Editor oder Verschieben/ Anpassen von Blöcken in den Tracking-Spuren - kurz: gefühlt alles.
Das bin ich noch am Untersuchen.
Dieselben Songs in einer älteren Version geladen - dort ist die UI auch nach dem Laden unverändert. Es hängt zum einen definitiv an der MMM Version 2017. Alos zurück zur 2017er Version. Durch Entfernen einzelner Spuren in einem Song wurden die Verursacher ausgemacht: Sobald ein Objekt-Synthesizer in einer Spur ist, ist die Behandlung jener Spur extrem langsam. Das Verhalten ist allen Objekt-Synthesizern gemein - alle unter Instrumente -> Objekt-Synthesizer gelisteten habe ich durchprobiert.
Nochmal das Setup von MMM ausführen und “Reparieren” … bringt nichts.
Im Moment habe ich gerade noch keine weitere Idee. Hmmm :-(
weiterführende Links:
Es wird Weihnachten …
… das merke ich in der Statistik von Jamendo: gut 33.000 Streams und knapp 800 Downloads im Monat habe ich sonst durch das Jahr nicht. Also nicht einmal ansatzweise :-)
weiterführende Links: