Deze pagina is vertaald door PageTurner AI (beta). Niet officieel goedgekeurd door het project. Een fout gevonden? Probleem melden →
Naverwerking van Live TV
Naverwerking van Opnames
Jellyfin ondersteunt naverwerking van opgenomen Live TV-programma's. Dit kan worden gebruikt om opnames naar een specifiek formaat te transcoderen dat geen real-time transcodering vereist tijdens het afspelen, ondertitels te extraheren, reclameblokken te verwijderen, en meer.
Er zijn verschillende manieren om je naverwerkingsscript in te stellen, en dit moet grotendeels worden aangepast aan jouw specifieke situatie.
Hieronder wordt één methode beschreven, maar er zijn mogelijk andere (en soms efficiëntere) manieren om je naverwerkingsscript uit te voeren.
Experimenteer hiermee om het aan je behoeften aan te passen. Zoek rond, stel vragen op het Jellyfin Forum of elders, en anderen kunnen mogelijk helpen. Logging is je vriend! Zorg ervoor dat je script(s) voldoende loggen naar een bestand of elders om problemen op te lossen, aangezien uitvoer naar stdout/stderr niet zichtbaar is in de Jellyfin-logs.
Jellyfin Dashboard/DVR/Instellingen voor Naverwerking
Jellyfin voert het script dat je opgeeft in de DVR-instellingen van het beheerpaneel automatisch uit met een opdrachtregelparameter van het bestandspad wanneer de opname is voltooid.
In de instellingen voor Naverwerking van Opnames (Dashboard/DVR):
Stel "Naverwerkingsapplicatie" in op je shell-script dat je eigenlijke naverwerker aanroept (details over dit 'eigenlijke' naverwerkerscript hieronder). In dit voorbeeld zou dat /path/to/run_post_process.sh zijn.
Stel "Opdrachtregelargumenten voor naverwerking" in op "{path}".

Met bovenstaande instellingen voert de server deze opdracht uit bij het uitvoeren van de naverwerker:
"/path/to/run_post_process.sh" "\"/path/to/LiveTV/Shows/Series/Season/Episode.ts\""
Uitvoerend Shell-script voor Naverwerking (direct uitgevoerd door Jellyfin-server)
Aanhalingstekens interpreteren is een van de lastigste dingen bij het gebruik van een naverwerkingsscript. Daarom is een eenvoudige manier om je naverwerker uit te voeren: laat Jellyfin een "runner" shell-script starten, dat vervolgens je eigenlijke naverwerkingsscript aanroept. Dit shell-script kan dan in Jellyfin-instellingen worden geplaatst en heeft een "schone" shell-omgeving waar configureren en logbestanden bekijken eenvoudiger is.
In het onderstaande voorbeeldscript:
-
Logging is ingeschakeld en een logbestand wordt aangemaakt op een locatie die toegankelijk is voor je Jellyfin-instance.
-
Het eerste opdrachtregelargument
$1wordt naar het logbestand geschreven (voornamelijk voor debugdoeleinden). Dit argument is een pad naar de show die moet worden naverwerkt. Dit argument is in het formaat:/path/to/LiveTV/Shows/Series/Season/Episode.ts -
Het eigenlijke Python-naverwerkingsscript
record_post_process.pywordt vervolgens aangeroepen met de bestandsnaam als opdrachtregelargument.
Een voorbeeld van een run_post_processor.sh script
GitHub Gist-link naar run_post_processor.sh
#!/bin/sh
exec > "/path/to/logging/directory/logs/$(date +"%Y-%m-%d_%H-%M-%S")-run_post_process-sh.log" 2>&1
echo $1
/usr/local/bin/python3 /path/to/record_post_process.py "$1"
Python Naverwerkingsscript (uitgevoerd door run_post_processor.sh)
In dit voorbeeld gebeurt het echte werk in een Python-script. Python is gekozen vanwege zijn aanpasbaarheid en de vele externe uitbreidingen en pakketten die het ideaal maken voor naverwerking. Dit script kan worden aangepast aan je individuele vereisten.
In het voorbeeldscript:
-
Logging is ingeschakeld en een logbestand wordt aangemaakt op een locatie die toegankelijk is voor je Jellyfin-instance.
-
Opdrachtregelargumenten worden gecontroleerd; als geen argument is opgegeven, wordt het script afgesloten.
-
Variabelen worden bepaald voor zaken zoals het volledige pad van het niet-getranscodeerde bestand, de basisnaam, het te transcoderen bestand met extensie, de naam en het pad van het getranscodeerde bestand, en meer.
-
FFMPEG-commando wordt aangemaakt en uitgevoerd.
- In dit voorbeeld wordt de videocodec
h264_videotoolboxgebruikt en wordt de audio rechtstreeks uit de bron gekopieerd. Pas het ffmpeg-commando aan aan jouw vereisten.
- In dit voorbeeld wordt de videocodec
-
Het niet-getranscodeerde bestand wordt verplaatst uit de Series/Season-map naar een map die niet toegankelijk is voor Jellyfin, genaamd OLDFILES (dit onderdeel kan ook worden ingesteld om het niet-getranscodeerde bestand te verwijderen)
Een voorbeeld van een record_post_process.py-script
Dit script is te uitgebreid om hier te plaatsen, dus is er een link naar een GitHub-repository opgenomen. In de comments wordt beschreven wat elk onderdeel doet.
GitHub-link naar record_post_process.py
Verder uitdiepen
Zodra je basisverwerking werkt, zijn er talloze extra mogelijkheden!
Enkele ideeën:
-
Transcodeervoortgang delen in een Slack/Discord-kanaal voor meldingen wanneer transcoderen start/voltooit