gehts den mit nur 1 spur ohne ruckeln? ist vielleicht dns4me einfach nur kacke? wir haben 20 uhr durch, die ihre server duerften wohl grad an ihre grenzen kommen.
Das dachte ich früher auch. Ist aber nicht so. Betroffen sind nur die Zattoo-Klone aus der Schweiz. Und auch nur, wenn nicht Streamlink zwischengeschaltet ist.
Wie genau sieht deine streamlink pipe aus?
Zumindest bei HLS sollte --hls-audio-select "*" alle Audiospuren berücksichtigen. Achtung, die Gänsefüßchen sind nicht immer einfach in die Kommandozeile zu kriegen. Ich nutzte das aus C++ Quelltext, da geht es ganz normal mit Backslash \"*\" und in einer Unix Shell reicht es vermutlich den ganzen Ausdruck in einfache Hochkommata zu setzen. Wie genau es bei tvh aussehen muss, weiß ich jetzt nicht und hängt davon ab, wie tvh das Kommando startet (z.B. über die shell mit system() oder ...)
Wenn ich die von dir genannten Parameter versuche, passiert folgendes:
streamlink --hls-audio-select "*" --hls-subtitles --hls-subtitles-lang "*" http://192.168.1.5:5000/api/zc2/live/sf-1.m3u8 best
usage: streamlink [OPTIONS] <URL> [STREAM]
streamlink: error: unrecognized arguments: --hls-subtitles --hls-subtitles-lang best
Funktionieren die Parameter bei dir tatsächlich? Welche Version hast du? Bei mir ist es 7.3.0.
Meine funktionierende Streamlink-Lösung (aber halt ohne mehrere Audiospuren) sieht so aus, dass ich folgendes Bashscript angelegt habe:
#!/bin/bash
/usr/bin/streamlink --mux-subtitles --stdout "$1" best | ffmpeg -i pipe:0 -vcodec copy -acodec copy -mpegts_service_type advanced_codec_digital_hdtv -f mpegts pipe:1
Ein Zeile mit Pipe in einer M3U-Datei sieht dann so aus:
pipe:///opt/streamlink.sh http://192.168.1.5:5000/api/tby/live/303.m3u8
Die M3U-Dateien lasse ich mir durch ein Python3-Script automatisch erstellen:
import requests
# Konfiguration
M3U_URL = "http://192.168.1.5:5000/api/tby/file/channels.m3u"
OUTPUT_FILE = "/opt/teleboy/teleboy.m3u"
PIPE_PREFIX = "pipe:///opt/streamlink.sh "
def download_and_prepare_m3u(url, output_path):
try:
response = requests.get(url)
response.raise_for_status()
lines = response.text.splitlines()
processed_lines = []
i = 0
while i < len(lines):
line = lines[i].strip()
# Behalte EXTINF-Zeilen bei
if line.startswith("#EXTINF"):
processed_lines.append(line)
i += 1
# Nächste Zeile ist die Stream-URL
if i < len(lines):
stream_line = lines[i].strip()
if stream_line and not stream_line.startswith("#"):
# Prüfe, ob URL mit http beginnt, wenn nicht, ergänzen
if not stream_line.startswith("http"):
stream_line = "http://" + stream_line
processed_lines.append(f"{PIPE_PREFIX}{stream_line}")
else:
processed_lines.append(stream_line)
else:
processed_lines.append(line)
i += 1
# Schreibe Datei (überschreiben erlaubt)
with open(output_path, "w") as f:
f.write("\n".join(processed_lines))
print(f"Erfolgreich gespeichert unter: {output_path}")
except Exception as e:
print(f"⌠Fehler: {e}")
if __name__ == "__main__":
download_and_prepare_m3u(M3U_URL, OUTPUT_FILE)
Alles anzeigen