Dies ist eine mobil optimierte Seite, die schnell lädt. Wenn Sie die Seite ohne Optimierung laden möchten, dann klicken Sie auf diesen Text.

TVheadend server pi 3B nur 1 stream per tuner zulassen

    Nobody is reading this thread right now.

Makandal

Hacker
Registriert
9. Mai 2015
Beiträge
375
Reaktionspunkte
38
Punkte
88
Hallo zusammen,
ich betreibe TVheadend auf einem Raspberry Pi Modell 3B mit 2 Tunern. Ich möchte pro Tuner nur einen Stream zulassen, unabhängig davon, welcher Benutzer oder von welcher IP gestreamt wird.
Es macht mir nichts aus, andere Programme, Firewalls usw. einzurichten.

Ich habe bereits 1 Verbindung für den Benutzer * eingestellt, aber das funktioniert nur, wenn der Benutzer von derselben IP kommt.

Habt ihr irgendwelche Tipps?

---
 
TDT de España ( over the air antenna )

Sent from my Pixel 7a using Tapatalk
 
#!/bin/bash

# TVheadend API Zugangsdaten
TVH_USER="user"
TVH_PASS="password"
TVH_HOST="localhost"
TVH_PORT="9981"

# Maximale Anzahl der erlaubten Streams pro Tuner
MAX_STREAMS=1

# Abrufen der aktiven Streams
ACTIVE_STREAMS=$(curl -s --user $TVH_USER:$TVH_PASS http://$TVH_HOST:$TVH_PORT/api/status/inputs | jq '.entries')

# Überprüfen und Beenden von Streams, die das Limit überschreiten
for tuner in $(echo $ACTIVE_STREAMS | jq -c '.[]'); do
tuner_name=$(echo $tuner | jq -r '.input')
stream_count=$(echo $tuner | jq -r '.subs')

if [ "$stream_count" -gt "$MAX_STREAMS" ]; then
echo "Zu viele Streams auf $tuner_name. Beende überschüssige Streams."

# Abrufen der PID des überschüssigen Streams
stream_pids=$(curl -s --user $TVH_USER:$TVH_PASS http://$TVH_HOST:$TVH_PORT/api/status/subscriptions | jq -r ".entries[] | select(.input == \"$tuner_name\") | .pid")

# Beenden der überschüssigen Streams
count=0
for pid in $stream_pids; do
if [ "$count" -ge "$MAX_STREAMS" ]; then
curl -s --user $TVH_USER:$TVH_PASS http://$TVH_HOST:$TVH_PORT/api/status/subscriptions/stop?pid=$pid
fi
count=$((count + 1))
done
fi
done

Anpassen. Cronjob jede Minute

Oder

#!/bin/bash

# TVheadend API Zugangsdaten
TVH_USER="user"
TVH_PASS="password"
TVH_HOST="localhost"
TVH_PORT="9981"

# Maximale Anzahl der erlaubten Streams pro Tuner
MAX_STREAMS=1

# Abrufen der aktiven Streams
ACTIVE_STREAMS=$(curl -s --user $TVH_USER:$TVH_PASS http://$TVH_HOST:$TVH_PORT/api/status/subscriptions | jq '.entries')

declare -A tuner_streams

# Überprüfen und Beenden von Streams, die das Limit überschreiten
for stream in $(echo $ACTIVE_STREAMS | jq -c '.[]'); do
tuner_name=$(echo $stream | jq -r '.input')
stream_id=$(echo $stream | jq -r '.id')

if [ -z "${tuner_streams[$tuner_name]}" ]; then
tuner_streams[$tuner_name]=0
fi

tuner_streams[$tuner_name]=$((tuner_streams[$tuner_name] + 1))

if [ "${tuner_streams[$tuner_name]}" -gt "$MAX_STREAMS" ]; then
echo "Zu viele Streams auf $tuner_name. Beende überschüssige Streams."

# Beenden der überschüssigen Streams
curl -s --user $TVH_USER:$TVH_PASS "http://$TVH_HOST:$TVH_PORT/api/status/subscriptions/cancel?id=$stream_id"
fi
done
Und dann über Event handler in tvh aufrufen lassen.
 
Zuletzt bearbeitet:
Ich teste es Danke.
¡Eres un crack!
Ich verstehe die Grammatik des Skripts, wie Variablen und Bedingungen, aber nicht, was es im Detail macht. Bash-Scripting ist der Hammer, wow. Für mich ist es, als ob ich ein bisschen lesen kann, aber nicht sprechen
 
Für die Nutzung dieser Website sind Cookies erforderlich. Du musst diese akzeptieren, um die Website weiter nutzen zu können. Erfahre mehr…