Init7 ist ein Internet-Provider aus Winterthur mit einem eigenen TV Streaming Angebot. Während man das TV-Angebot mittels Apple TV Box oder ähnlichem direkt konsumieren kann, sind TV-Aufnahmen nicht out of the Box vorgesehen. Der Anschluss ermöglicht es allerdings auch, TV-Sendungen direkt via UDP-Stream anzuschauen, z.B. mit VLC. Diese Streams lassen sich mit geeigneten Tools auch aufzeichnen.
Zunächst benötigt man die UDP Adresse des gewünschten Senders. Der Anbieter stellt auf seiner Homepage Playlist-Files zur Verfügung. Details findet unter folgender URL:
https://www.init7.net/de/support/faq/TV-andere-Geraete/
Es findet sich ein Link für eine
- VLC-Playlist: https://api.init7.net/tvchannels.xspf
- M3U-Playlist: https://api.init7.net/tvchannels.m3u
Öffnet man eines dieser Files in einem beliebigen Text-Editor, lässt sich die URL des gewünschten Senders herauskopieren. Beispielsweise für SRF1: udp://@239.77.0.77:5000
Um eine Sendung aufzunehmen, kann man das Commandline-Tool ffmpeg verwenden.
Beispiel: Mit diesen Parameter wird 10.5 Minuten von SRF1 aufgenommen und in die Datei Aufnahme.ts gespeichert.
ffmpeg -y -nostdin -hide_banner \
-i 'udp://@239.77.0.77:5000' \
-to 00:10:30.0 \
-vcodec copy -acodec copy -scodec copy \
-map 0:v -map 0:a -map 0:s \
Aufnahme.ts
Der Werzeugkasten
Eine Aufnahme auf der Kommandozeile starten zu können, ist eine gute Ausgangslage, genügt aber gehobenen Ansprüchen noch nicht wirklich. Typischerweise sitzt man nicht unbedingt am Rechner, wenn die Sendung läuft, die man gerne aufnehmen möchte.
- Um nicht den Laptop laufen lassen zu müssen, soll die Aufnahme direkt auf dem Synology NAS gemacht und auch dort gespeichert werden.
- Die Aufnahme soll zu einem vordefinierten Zeitpunkt starten und stoppen.
- Da man die Sendung selten präzise erwisch, sollen Start und Ende getrimmt werden.
- Die fertige Sendung möchte man sich danach aber wieder auf dem TV im Wohnzimmer angucken.
Synology NAS ausstatten
Auf dem Betriebssystem vom NAS ist zwar ffmpeg mitgeliefert, aus welchen Gründen auch immer, aber nur mit wenigen Optionen ausgestattet. In der Version auf DSM-7 in /bin/ffmpeg, fehlt das nötige Protokoll um einen UDP-Stream als Input verwenden zu können.
ffmpeg -hide_banner -protocols
Supported file protocols:
Input:
file
pipe
Output:
file
pipe
Im Synology Community Paket-Repository findet man allerdings eine voll funktionsfähige Alternative:
ffmpeg
- https://synocommunity.com/
- https://synocommunity.com/package/ffmpeg
- https://github.com/SynoCommunity/spksrc/wiki/FAQ-FFmpeg
Auf DSM-7 werden die Pakete auf das Hauptvolume in den Ordner „@appstore“ installiert.
/volume1/@appstore/ffmpeg/bin/ffmpeg -version
ffmpeg version 4.4.3-47 Copyright (c) 2000-2022 the FFmpeg developers
...
/volume1/@appstore/ffmpeg/bin/ffmpeg -hide_banner -protocols
Supported file protocols:
Input:
async
...
udp
...
Um in einem Script diese Version zu verwenden, sollte man den Pfad voll qualifiziert angeben um nicht aus versehen die mitgelieferte Version von DSM-7 zu verwenden.
Zeitgesteuerte Aufnahme
Um eine Aufnahme zu einem bestimmten Zeitpunkt zu machen, verwendet man am einfachsten den Task-Scheduler von DSM-7, das ist eine Standardfunktionalität von Synology.
Im Task Scheduler lässt sich für eine Aufnahme ein neuer Task erstellen.
Unter Schedul gibt man die gewünschte Zeit und Datum der Aufnahme ein.
Unter User-defined script fügt man das Script für die Aufnahme ein. Die Aufnahmedauer lässt sich entweder mit dem Parameter -t in Sekunden oder mit dem Parameter -to als Zeitdauer angeben.
Sinnvollerweise nimmt man die Sendung nicht zu knapp auf, so dass weder der Start noch das Ende abgeschnitten werden.
ts=$(/bin/date '+%Y-%m-%d_%H%M')
adr='udp://@239.77.0.100:5000'
sender="ZDF_Neo"
ffmpeg='/volume1/@appstore/ffmpeg/bin/ffmpeg'
$ffmpeg -y -nostdin -hide_banner -i ${adr} \
-vcodec copy -acodec copy \
-map 0:v -map 0:a \
-to 01:50:00.0 /volume1/video/aufnahmen/${ts}_${sender}.ts
Trimmen von Start und Ende
Nachdem die Aufnahme getätigt wurde, kann für die Aufbewahrung die Aufnahme auf die effektive Sendung trimmen. Dazu muss man allerdings den genauen Start und das genaue Ende der Sendung innerhalb der Aufnahme ausfindig machen.
Um Start und Dauer der Sendung herauszufinden, betrachtet man diese in einem geeigneten Videoplayer, z.B. VLC.
Herausschneiden eines zusammengehörigen Teils kann mit folgendem Befehl gemacht werden:
ffmpeg -i Aufnahme.ts -ss 00:12:56.0 -to 01:50:40.0 -map 0:0 -map 0:3 -c:v copy -c:a:0 copy -y Resultat.ts
Abspielen auf dem TV-Gerät
Die geschnittenen Aufnahmen belässt man sinnvollerweise gleich auf dem NAS, da dort normalerweise genügend Platz vorhanden ist. Um diese z.B. via Apple TV Box abzuspielen, kann man darauf ebenfalls VLC installieren und damit auf die NAS-Freigaben zuzugreifen.