Liquidsoap 2.1.x - Verzweiflung (ALSA-PCM zu Icecast-MP3)

T

technikbastler

Hallo,
auf einem Raspberry Pi 4 habe ich mit opam (wie es in der Dokumentation empfohlen wird) Liquidsoap installiert.
Ein HifiBerry DIGI+ I/O dient als Audioquelle (AES/EBU auf SPDIF)

Ich versuche seit Tagen mit Liquidsoap einen Livestream zu bauen und scheitere kläglich. Man hat wohl die Skriptsprache erneuert und sämtlich Syntax verändert. Da ich der englischen Sprache kaum mächtig bin, habe ich mir von ChatGPT und Bing AI helfen lassen, doch diese kennen nur Version 1.4.4, ich benutze allerdings die aktuellste 2.1.4.
Deren Skripte haben lediglich immer Syntax-Fehler generiert, auch stundenlanges lesen in der Liquidsoap-Dokumentation brachte mich nicht weiter.

Ich möchte ein Skript, welches den Hardware-Eingang Alsa hw0,0 mit Samplerate 48kHz definiert, dieses Signal in MP3 (320kbit/s CBR, 48kHz, Qualität 0, Stereomodus Stereo) kodiert und an einen Icecast-Server schickt. Bei Fehlern soll es automatisch neu initialisieren und weitersenden. Dann hätte ich noch ganz gerne, dass aus einer JSON-Quelle den aktuellen Sendungstitel ausliest und in die Metadaten des MP3-Streams packt. Das soll wohl alles gehen, die GPTs dieser Welt haben mir auch Skripte vor die Füße geworfen, doch die funktionieren wie gesagt alle nicht, da die Liquidsoap-Entwickler wohl die ganze Sprache umgeworfen haben.

Ich kann ja mal ein Beispiel posten:

# Eingang von der Soundkarte hw0,0 mit Standardbuffer und 48kHz Einstellung
input = input.alsa(device="hw:0,0", bufferize=true, rate=48000)

# Kodierung in MP3 mit 320kbits CBR in 48kHz Stereo und Qualitätsstufe 0
output.icecast(
%mp3.cbr(bitrate=320, samplerate=48000, stereo_mode="stereo", internal_quality=0),
host="icecast.meinradiosender.de",
port=8000,
password="password",
mount="/pi.mp3",
name="Radio",
description="Stream",
genre="Alternative, Community, Indie",
url="https://radioforen.de",
user="source",
icy_metadata="true",
headers={
"icy-index-metadata": "1",
"icy-version": "2",
"icy-name": "Radio",
"icy-description": "Beschreibung",
"icy-genre": "Alternative, Indie, Community",
"icy-url": "https://radioforen.de",
"icy-language-codes": "deu",
"icy-country-code": "DE",
"icy-country-subdivison-code": "DE-ST",
"icy-logo": "https://radioforen.de/favicon.ico"
},
input
)

# Get the current show title from the API
def get_show_title() =
# Get the JSON data from the API
data = http.get("https://co.meinradiosender.de/api/2/transmissions/now")

# Parse the JSON data
json = of_json(default=[("programme", [("name", "")])], data)

# Get the show title from the JSON data
show_title = json.programme.name

# Return the show title
show_title
end

# Set the current song metadata to the current show title
def set_show_title() =
show_title = get_show_title()

# Set the current song metadata to the current show title
input.metadata.update(mkmetadata([("title", show_title)]))
end

# Update the current song metadata every minute
add_timeout(60., fun () -> set_show_title())

Da spuckt mir das SSH-Terminal entweder aus, es gäbe Syntax-Fehler, es gäbe gewisse Argumente wie "rate" oder "samplerate" nicht.

Denkt ihr, die Installation einer älteren Liquidsoap-Version würde Abhilfe schaffe, oder spucken die Text-KIs nur Müll aus?
 
Auch mit Version 1.4.3 aus den offziellen Debian-Quellen gibt es keinerlei Besserung.
 
Versuchst du das Script von der Kommandozeile zu starten? Das sind Ablauf-Definitionen, die in ein bestimmtes Verzeichnis kopiert werden müssen, damit LS sie findet... dein SSH terminal beschwert sich zurecht, dass es diese Befehle nicht kennt :)
 
Ich habe dafür eine radio.liq angelegt und per SSH mit dem Kommando "liquidsoap radio.liq" gestartet
 
mit welchem Programm hast du die liq Datei bearbeitet? Bestimmt Versionen haben Beef damit, wenn du sie mit einem Dos/Windows Editor erstellt hast und nicht unter Linux.
 
Hi technikbastler, Das ist im Moment noch nicht so ausgereift, ich weiß nicht wie das auf Überlänge reagiert. Eine Silence Detection gibts zwar seitens Liquidsoap aber nicht direkt in Azuracast, sollte ein Schtream ausfallen, gibts nur Stille.
 
Zurück
Oben