tvstreamrecord - Aufzeichnen von HTTP-Streams

Pavion

Benutzer
Mitglied seit
02. Feb 2013
Beiträge
566
Punkte für Reaktionen
14
Punkte
44
Hallo Leute,

eine kurze Notiz zum Thema RTSP:

Es ist tatsächlich so, dass meine EGP Funktionalität nur bei den HTTP bzw. MPEG TS Streams funktioniert. Alle anderen Protokolle leite ich einfach nur an FFMPEG weiter und kann damit nichts mehr anfangen.

Wenn Euer Gerät und VLC wirklich die EPG-Daten aus dem Stream entnehmen können, müssen sie ja irgendwie darin sein. Da mir keine Teststreams zur Verfügung stehen, kann ich mir leider schlecht vorstellen, wie ich die Sache angehen könnte: es gibt jedenfalls keine gute Bibliothek, um die RTSP direkt in Python zu öffnen. Vielleicht wäre FFMPEG in der Lage, diese Daten aus dem Stream abzugreifen?! Da könnte ich mir vielleicht vorstellen, etwas Ähnliches wie das Beispiel von ffmpeg zu probieren und in die Ergebnisse zu schauen:
Code:
ffmpeg -i rtsp://xxxxxxxxxxxx -an -vn -bsf:s mov2textsub -c:s copy -f rawvideo textdata.txt
Es ist mir jedoch nicht gelungen, diese Methode auf mein TS anzuwenden und im Internet habe ich ebenfalls nichts gefunden. Wie die kommerziellen Firmen das machen, weiß ich natürlich nicht. Ich kann mir vorstellen, dass dafür höhere C++ Kenntnisse und mehr Aufwand erforderlich sind (z.B. so etwas). Mittlerweile sind die XMLTV-Anbieter auch deutlich besser geworden. Zumindest für die typischen Sender reichen die Daten vollkommen aus und sind zum Teil sogar detailierter. Wenn Ihr jedoch gute Ideen habt, wie man an die RTSP-Daten rankommen kann, meldet Euch.

Gruß
Pav
 

Wilisch

Benutzer
Mitglied seit
09. Mai 2013
Beiträge
34
Punkte für Reaktionen
0
Punkte
0
Hallo Pavion,

der AVM-Repeater gibt ja nur einen Stream (Sender) an eine IP Adresse weiter, mit einer anderen IP kann ich den zweiten Tuner nutzen.
Soweit ist mir das klar.
Nun zu Deinen Aufnahmen.
Wenn ich per EPG zwei Sendungen mit entsprechenden Vor- und Nachlaufzeiten programmiere, dann beginnt Dein Programm immer mit einer neuen Aufnahme zur programmierten Zeit, und beendet die laufende.
Das kann ich bei Senderwechsel ja nachvollziehen. Sind die Aufnahmen aber für den gleichen Sender programmiert, d.h. der Stream läuft eh ist das genauso.
Ist es möglich bei Überschneidung und gleichem Sender beide Aufnahmen komplett aufzunehmen?

Grüße vom Wilisch
 

Pavion

Benutzer
Mitglied seit
02. Feb 2013
Beiträge
566
Punkte für Reaktionen
14
Punkte
44
Hallo Wilisch,

ich verstehe nicht ganz, wie Du das meinst. In meinem Programm gibt es diesbezüglich gar keine Begrenzungen, nicht mal für die Fälle, wo es vielleicht sinnvoll wäre :)

Anbei kannst Du einen Auszug aus dem Log sehen, wo ich eben dieses heute getestet habe.

Logauszug.jpg

Im ersten Fall habe ich ffmpeg für die Aufnahmen genommen. Die erste Sendung sollte dabei bis 16:20 gehen und die nächste um 16:20 starten. Um 16:14 habe ich beide erstellt, wobei die erste sofort startete, während die andere noch 2 Minuten wartet. Um 16:17 fängt die 2. Aufnahme an. Ab diesem Zeitpunkt werden bei mir parallel zwei Dateien geschrieben. Um 16:23 endet die erste Aufnahme und die 2. geht weiter. Am Ende habe ich zwei Dateien, die über eine Zeitspanne von 6 Minuten gleichen Inhalt haben.

Für den 2. Versuch habe ich die Kernfunktion des Programms für HTTP benutzt. Diesmal sollten sich beide Sendungen um 17:00 abwechseln. Beide gleich gestartet, die erste läuft dabei sofort an, die zweite wartet. Um 16:57 wird die 2. Aufnahme gestartet. Auch in diesem Fall läuft die Aufnahme parallel und zwei unterschiedliche Dateien werden erzeugt. Um 17:03 endet die erste Sendung und die zweite läuft weiter, bis ich sie selbst abschalte.

Hier sieht man sogar, was ich meinte mit "auch keine sinnvollen Begrenzungen": die Aufnahme für Tagesschau, die ich vergessen habe zu deaktivieren, springt um 16:58 mitten rein, "reißt" den Stream an sich und wechselt den Sender, so dass meine Aufnahmen innerhalb derselben Dateien (!) plötzlich einen Sender- und Auflösungswechsel machen.

Wenn Du ein anderes Verhalten beobachtest, könnte es mit Deinem Gerät zusammenhängen. Vielleicht wird von Deinem Gerät nur eine parallele Aufnahme erlaubt? Vielleicht sind die Ressourcen des Gerätes nicht ausreichend?! Schicke mir bitte die entsprechenden Auszüge aus Deinem Log, vielleicht sieht man was darauf.

Gruß
Pav
 

Wilisch

Benutzer
Mitglied seit
09. Mai 2013
Beiträge
34
Punkte für Reaktionen
0
Punkte
0
Hallo Pavion,

genau so wie von Dir im ersten Fall beschrieben habe ich mir das vorgestellt, leider verhält sich hier das System anders.
Bei Senderwechsel wäre das OK, aber bei gleichem Sender könnte sollte es doch funktionieren.
Hier muss AVM sicher noch nacharbeiten.

tvstream.jpg

tvstream1.JPG

Grüße vom Wilisch
 

Pavion

Benutzer
Mitglied seit
02. Feb 2013
Beiträge
566
Punkte für Reaktionen
14
Punkte
44
Hallo Wilisch,

das ist irgendwie sonderbar... Die erste Aufnahme endet angeblich erst 23 Sekunden später, als die nächste beginnt. Kannst Du es auch in der Dateizeit bzw. Dateiinhalt nachvollziehen?
Technisch ist es so, dass ich ffmpeg extern aufrufe und einfach nur auf die Beendigung des Prozesses warte. Die Ausgaben werden dabei weitesgehend ignoriert bzw. nicht entgegengenommen. Es kann also auch heißen, dass der Prozess aus irgendeinem anderen Grund unterbrochen wird. Wenn Du neugierig bist und einen Terminalzugang hast, kannst Du gern probieren zwei Sitzungen zu starten und zwei Aufnahmen direkt aus dem Terminal starten. Sobald Du die 2. startest, sollte dann die 1. mit irgendeiner Fehlermeldung oder zumindest einem Grund beendet werden. Das wäre interessant zu wissen. Der Konsolenbefehl dafür wäre:
Code:
ffmpeg -i rtsp://senderadresse -acodec copy -vcodec copy /volume1/video/tvstream/test1bzw2.ts

Gruß
Pavel
 

Wilisch

Benutzer
Mitglied seit
09. Mai 2013
Beiträge
34
Punkte für Reaktionen
0
Punkte
0
Hallo Pavel,

die Aufnahmen, wenn ich Sie mir ansehe, enden immer bevor die andere startet.
Es gibt also keine Überschneidung, eher einen (fast) nahtlosen Übergang.

Das mit dem Terminalzugang kann ich leider heute nicht mehr testen, muss mich da erst reinarbeiten.
Gibt es eigentlich wirklich mehrere ffmpeg Versionen auf der Synology, vielleicht probiere ich mal die von der Audiostation, oder ist das Quatsch?

Ich danke Dir für Deine Mühe.

Grüße vom Wilisch
 

Pavion

Benutzer
Mitglied seit
02. Feb 2013
Beiträge
566
Punkte für Reaktionen
14
Punkte
44
Hallo Wilisch,

Fast nahtloser Übergang klingt doch nicht soo schlecht. Leider kann ich Dir hier wohl nicht weiter helfen. Falls Du gern weiter forschen möchtest:

Der Terminalzugang kann unter Systemsteuerung zuschaltet werden, dann kann man mit einem Programm wie putty auf das Betriebssystem (Linux) zugreifen. Natürlich kann man dabei theoretisch auch etwas kaputt machen und sollte es sich gut überlegen.

Dass die Umstellung auf Audio Station was bringt, halte ich für sehr unwahrscheinlich, probieren kannst Du es natürlich sehr schnell. Hier nochmals die Pfade (sofern die entsprechenden Anwendungen installiert sind), die Du in meinem Programm eintragen könntest:
/volume1/@appstore/MediaServer/bin/ffmpeg
/volume1/@appstore/AudioStation/bin/ffmpeg
/volume1/@appstore/VideoStation/bin/ffmpeg

Gruß
Pavel
 

Tuvok42

Benutzer
Mitglied seit
24. Jun 2013
Beiträge
170
Punkte für Reaktionen
0
Punkte
16
Auch ich habe mir den AVM DVB-C-Repeater angeschafft. Leider kann ich keine Aufnahmen erzeugen.

Meine Daten:
DS 413 - DSM 5.1-5004
ffmpeg version 2.0.2

Protokoll beim Versuch 2 Minuten (18:57 bis 18:59) aufzuzeichnen:
Rich (BBCode):
2014-11-16 18:56:03 OUT Record: Stopflag for 'kabel eins' received
2014-11-16 18:56:03 OUT Record: Thread timer for 'kabel eins' started for 56 seconds
2014-11-16 18:57:00 OUT FFMPEG (rtsp) record 'kabel eins' called with:
2014-11-16 18:57:00 OUT [u'ffmpeg', u'-i', 'rtsp://<ip-repeater>:554/?freq=442&bw=8&msys=dvbc&mtype=256qam&sr=6900&specinv=0&pids=0,16,17,18,20,109,2301,2302,2304,2306', u'-y', u'-loglevel', u'fatal', u'-t', u'119', u'-acodec', u'copy', u'-vcodec', u'copy', u'/volume1/video/TV/20141116185700 - kabel_eins.ts']
2014-11-16 18:57:00 OUT FFMPEG record 'kabel eins' ended
Es wird keine Datei erzeugt.

Testaufruf in der Konsole:
ffmpeg -i rtsp://<ip-repeater>:554/?freq=442&bw=8&msys=dvbc&mtype=256qam&sr=6900&specinv=0&pids=0,16,17,18,20,109,2301,2302,2304,2306 -t 30 -acodec copy -vcodec copy out.ts

erzeugt folgende Fehlermeldung:
rtsp://<ip-repeater>:554/?freq=442: Protocol not found

Die FRITZ!OS-Version des Repeater ist 6.12. Mit den AVM-Apps unter Android klappt der Zugriff; auf dem Windows 7 Prof. mit VLC (Version 2.1.5 Rincewind) nicht. Die M3U-Datei hat folgenden Inhalt (Ausschnitt zeigt nur den 1. Eintrag; Zeilenumbrüche sind wegen der Lesbarkeit manuell eingefügt):
Rich (BBCode):
#EXTM3U
#EXTINF:-1,rbb Brandenburg
#EXTVLCOPT:network-caching=1000
rtsp://<ip-repeater>:554/?freq=122&bw=8&msys=dvbc&mtype=64qam&sr=6900&specinv=0&pids=0,16,17,18,20,500,501,502,503,504,670,2171

@Manatu und @Wilisch: Auf welchen Maschinen mit welchen DSM-Versionen nutzt ihr den DVB-C-Repeater und tvstreamrecord?
@all: Wie kann ich das Protokoll rtsp "nachrüsten"?
 

Pavion

Benutzer
Mitglied seit
02. Feb 2013
Beiträge
566
Punkte für Reaktionen
14
Punkte
44
Hallo Tuvok42,

probiere bitte die anderen Versionen von ffmpeg aus. Unterschiedliche Versionen unterstützen unterschiedliche Protokolle:
/volume1/@appstore/MediaServer/bin/ffmpeg
/volume1/@appstore/AudioStation/bin/ffmpeg
/volume1/@appstore/VideoStation/bin/ffmpeg

mehr Info darüber findest Du früher in diesem Thread.

Gruß
Pav
 

Manatu

Benutzer
Mitglied seit
21. Okt 2013
Beiträge
88
Punkte für Reaktionen
0
Punkte
6
Auch ich habe mir den AVM DVB-C-Repeater angeschafft. Leider kann ich keine Aufnahmen erzeugen.

@Manatu und @Wilisch: Auf welchen Maschinen mit welchen DSM-Versionen nutzt ihr den DVB-C-Repeater und tvstreamrecord?
@all: Wie kann ich das Protokoll rtsp "nachrüsten"?

Konfiguration -> FFMPEG Unterstützung -> Stream-Protokolle
die Zeile ergänzen: rtmp rtp rtsp

DS 213j - DSM 5.1-5004
 

Tuvok42

Benutzer
Mitglied seit
24. Jun 2013
Beiträge
170
Punkte für Reaktionen
0
Punkte
16
/volume1/@appstore/MediaServer/bin/ffmpeg
/volume1/@appstore/AudioStation/bin/ffmpeg
/volume1/@appstore/VideoStation/bin/ffmpeg
Danke Pavion für Deine schnelle Antwort (und 1000 Dank für Deine Software). Hier die Ergebnisse der verschiedenen ffmpeg-Versionen:

/volume1/@appstore/MediaServer/bin/ffmpeg erstellt eine funktionierende Aufnahme:
Rich (BBCode):
2014-11-17 00:45:00 OUT FFMPEG (rtsp) record 'rbb Brandenburg' called with:
2014-11-17 00:45:00 OUT [u'/volume1/@appstore/MediaServer/bin/ffmpeg', u'-i', 'rtsp://<ip-repeater>:554/?freq=122&bw=8&msys=dvbc&mtype=64qam&sr=6900&specinv=0&pids=0,16,17,18,20,500,501,502,503,504,670,2171', u'-y', u'-loglevel', u'fatal', u'-t', u'119', u'-acodec', u'copy', u'-vcodec', u'copy', u'/volume1/video/TV/20141117004500 - rbb_Brandenburg.ts']
2014-11-17 00:46:59 OUT FFMPEG record 'rbb Brandenburg' ended

/volume1/@appstore/AudioStation/bin/ffmpeg endet erst nach 5 Minuten (statt wie programmiert nach 2 Minuten) und erzeugt nur eine leere Datei:
Rich (BBCode):
2014-11-17 01:00:00 OUT FFMPEG (rtsp) record 'rbb Brandenburg' called with:
2014-11-17 01:00:00 OUT [u'/volume1/@appstore/AudioStation/bin/ffmpeg', u'-i', 'rtsp://<ip-repeater>:554/?freq=122&bw=8&msys=dvbc&mtype=64qam&sr=6900&specinv=0&pids=0,16,17,18,20,500,501,502,503,504,670,2171', u'-y', u'-loglevel', u'fatal', u'-t', u'119', u'-acodec', u'copy', u'-vcodec', u'copy', u'/volume1/video/TV/20141117010000 - rbb_Brandenburg.ts']
2014-11-17 01:05:00 OUT FFMPEG record 'rbb Brandenburg' ended

/volume1/@appstore/VideoStation/bin/ffmpeg endet erst nach 5 Minuten mit dem Fehler "could not find codec parameters":
Rich (BBCode):
2014-11-17 01:10:00 OUT FFMPEG (rtsp) record 'rbb Brandenburg' called with:
2014-11-17 01:10:00 OUT [u'/volume1/@appstore/VideoStation/bin/ffmpeg', u'-i', 'rtsp://<ip-repeater>:554/?freq=122&bw=8&msys=dvbc&mtype=64qam&sr=6900&specinv=0&pids=0,16,17,18,20,500,501,502,503,504,670,2171', u'-y', u'-loglevel', u'fatal', u'-t', u'59', u'-acodec', u'copy', u'-vcodec', u'copy', u'/volume1/video/TV/20141117011000 - rbb_Brandenburg.ts']
2014-11-17 01:15:00 OUT FFMPEG record 'rbb Brandenburg' ended with an error:rtsp://<ip-repeater>:554/?freq=122&bw=8&msys=dvbc&mtype=64qam&sr=6900&specinv=0&pids=0,16,17,18,20,500,501,502,503,504,670,2171: could not find codec parameters

Die ffmpeg-Version im MediaServer-Verzeichnis ist 1.0.0, die anderen beiden sind 2.0.2. Zumindest kann ich jetzt Aufnahmen erzeugen. Interessieren würde mich dennoch, ob und wie Codecs "nachgerüstet" werden können. Für diesbezügliche Hinweise bin ich Dankbar.

Konfiguration -> FFMPEG Unterstützung -> Stream-Protokolle
die Zeile ergänzen: rtmp rtp rtsp
Hatte ich vorher getan. Welches Gerät mit welcher DSM-Version benutzt Du?
 

Manatu

Benutzer
Mitglied seit
21. Okt 2013
Beiträge
88
Punkte für Reaktionen
0
Punkte
6

Wilisch

Benutzer
Mitglied seit
09. Mai 2013
Beiträge
34
Punkte für Reaktionen
0
Punkte
0
ffmpeg

@Tuvok42

Ich habe eine DS209 welche ich mit einem Kunstgriff meisterlicher Hand zur 211j gemacht habe, es läuft DSM 5.1-5004 ;-)

Bei mir gelingen grundsätzlich die Aufnahmen mit den Einstellungen für Videostation.
Probleme habe ich in den vorherigen Posts schon beschrieben.

Was mir noch aufgefallen ist, es funktioniert auch nur wenn der Videostation Dienst läut, wenn ich Ihn anhalte geht nichts.

Die anderen Varianten konnte ich leider noch nicht testen.

Grüße vom Wilisch
 

Tuvok42

Benutzer
Mitglied seit
24. Jun 2013
Beiträge
170
Punkte für Reaktionen
0
Punkte
16
@Manatu: Asche auf mein Haupt, war blind:eek:
Da Du und Wilisch auch die 5.1-Version im Einsatz hat, verstehe ich nicht, warum eure ffmpeg-Version funktioniert und meine nicht. Könnte einer (oder beide) mal mittels 'ffmpeg -protocols' auf der Konsole die Ausgabe hier posten?

@pavion:
Was mir noch aufgefallen ist, es funktioniert auch nur wenn der Videostation Dienst läut, wenn ich Ihn anhalte geht nichts.
Bei mir ist die Videostation gar nicht installiert und läuft somit nicht. Besteht hier eine Abhängigkeit zu deinem Programm?
 

Pavion

Benutzer
Mitglied seit
02. Feb 2013
Beiträge
566
Punkte für Reaktionen
14
Punkte
44
Hallo Leute,

jetzt will ich mich auch kurz an der Diskussion beteiligen :)
So wie ich die Sache verstanden habe, ist ffmpeg so aufgebaut, dass es für jedes System und für jeden Bedarf (also nur mit wenigen Protokollen) einzeln kompiliert werden kann und muss. Synology hat sich aus irgendeinem Grund dazu entschlossen, zu jedem ihrer Medienpakete eine separat zugeschnittene Version von ffmpeg zu kompilieren. Diese Versionen sollen wohl nur das Nötige optimal unterstützen und unterscheiden sich nicht nur durch die unterstützten Protokolle, sondern auch durch die Kernmodulversionen.
Hat der Anwender nun eins von diesen Paketen installiert, wird die ffmpeg-Version dieses Paketes in den Pfad aufgenommen und kann ab jetzt direkt mit 'ffmpeg' aufgerufen werden. Hat der Anwender aber mehrere Pakete, so gewinnt wohl das zuerst oder das zuletzt installierte Paket. Dann kann es passieren, dass mein Programm das "falsche" ffmpeg aufruft, wo das Eine oder das Andere nicht unterstützt wird. Wenn keins dieser Pakete installiert ist, wird wohl auch mein Programm keinen Erfolg haben. Ich glaube, im Manual habe ich es irgendwo sogar erwähnt.
Warum trotz gleicher DSM-Version doch unterschiedliche ffmpeg's installiert werden, kann ich nur damit erklären, dass ffmpeg auch je nach CPU-Art kompiliert werden muss und diese Kompilierung wird vielleicht durch verschiedene Leute gemacht.
Falls jemand neugierig ist, habe ich meine Protokolle angehängt. Ich habe eine DS411 mit DSM 5.1-5004.
Es freut mich, dass es am Ende geklappt hat!

Gruß
Pav
 

Anhänge

  • protocols.txt
    771 Bytes · Aufrufe: 24

Wilisch

Benutzer
Mitglied seit
09. Mai 2013
Beiträge
34
Punkte für Reaktionen
0
Punkte
0
Guten Morgen @Pavion

ich hatte, weil ich mehrere Tage unterwegs war eine tägliche Aufnahme über EPG programmiert.
Leider hat er nur den ersten Tag aufgenommen?
Sehr ärgerlich.

Woliegt da der Fehler?
 

Pavion

Benutzer
Mitglied seit
02. Feb 2013
Beiträge
566
Punkte für Reaktionen
14
Punkte
44
Hallo Wilisch,

tut mir Leid, dass Deine Aufnahmen fehl schlugen, bisher habe ich noch keine ähnlichen Meldungen erhalten. Poste bitte Deine Log-Datei, vielleicht steht da etwas drin.

Gruß
Pav
 

hoarst

Benutzer
Mitglied seit
15. Nov 2014
Beiträge
16
Punkte für Reaktionen
0
Punkte
0
Ich bin seit 2 Wochen Besitzer einer DS213j und bin auf dein sehr schönes Tool gestossen. Nach ein paar Anlaufschwierigkeiten kann ich Aufnahmen von meiner Netstream 4Sat machen und bekomme auch alle EPG Daten. Was bei mir noch nicht funktioniert ist das gleichzeitige Aufnehmen von 2 Sendungen. Eine Datei ist immer kleiner als 1MB, die andere wird völlig korrekt abgespeichert.
Unterstütz tvstreamrecord nicht die Aufnahme von mehreren Sendungen?
 

Manatu

Benutzer
Mitglied seit
21. Okt 2013
Beiträge
88
Punkte für Reaktionen
0
Punkte
6
Kann Dein Netstream denn 2 Sendungen an eine IP Adresse senden?

Ich habe ein AVM DVB-C-Repeater und der kann es nicht. Da wird die erste Aufnahme beendet wenn die Zweite beginnt.

Bei Aufnahmen von Entertain aus dem Internet geht das wunderbar. Es kann also nicht an tvstreamrecord liegen.
 

hoarst

Benutzer
Mitglied seit
15. Nov 2014
Beiträge
16
Punkte für Reaktionen
0
Punkte
0
hmm, scheinbar nicht. Wenn ich im VLC einen Sender sehe und mit der DS gleichzeitig versuche aufzunehmen bekommt einer es nicht hin. Schade. Dann werde ich den MacMini wohl doch behalten.
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat