tvstreamrecord - Aufzeichnen von HTTP-Streams

CptGambit

Benutzer
Mitglied seit
25. Nov 2013
Beiträge
389
Punkte für Reaktionen
3
Punkte
24
Hallo

kurze Frage. Ich hab heute eine Aufnahme gemacht ohne allerdings vorher den Aufnahmeort anzupassen. Standardmässig ist das ja /volume1/common.
Den Ordner gibts bei mir aber nicht. Die Aufnahme ist aber dennoch da. Wo liegt das Teil aber jetzt? :D
 

Pavion

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

wenn Du den Ordner nicht hattest, sieht es leider schlecht mit der Aufnahme aus. In Deinem Log wird wahrscheinlich stehen, dass die Datei nicht geschrieben werden konnte.
Wenn es nicht so steht, war der Ordner vielleicht doch da und Du musst Dir nur die Rechte dafür beschaffen?!

Gruß
Pav
 

CptGambit

Benutzer
Mitglied seit
25. Nov 2013
Beiträge
389
Punkte für Reaktionen
3
Punkte
24
Das merkwürdige ist aber, dass ich die Aufnahme nach wie vor Aufrufen kann. Ich würde nur gern wissen woher er die läd ;)

Nochwas, wenn ich versuche eine m3u Liste für die Channels hochzuladen bekomme ich immer nen 500er Fehler:
Error: 500 Internal Server Error

Sorry, the requested URL 'http://192.168.0.22:8030/upload' caused an error:

Internal Server Error

Ruf ich die URL händisch auf kommt der:

Error: 405 Method Not Allowed

Sorry, the requested URL 'http://192.168.0.22:8030/upload' caused an error:

Method not allowed.

Hm? Was mach ich falsch?
 

Pavion

Benutzer
Mitglied seit
02. Feb 2013
Beiträge
567
Punkte für Reaktionen
14
Punkte
44
Wie kannst Du sie aufrufen?! Woher weißt Du, ob sie da ist? Mein Programm unterstützt doch so etwas nicht... Jetzt bin ich aber neugierig!

Zum Thema m3u. Ich kann Deinen Fehler leider nicht nachvollziehen. Vielleicht eine Berechtigungseinstellung bei Deinem Browser, dass JavaScript keine lokalen Dateien auslesen lässt?..
1) Steht dazu etwas im Programmlog?
2) Hast Du es schon mit einem anderen Browser probiert (FireFox, IE, Chrome usw.)
3) Hat Deine m3u die beschriebene Form:
Code:
#EXTM3U
#EXTINF:0,channel name 1
http://192.168.0.10/stream/tunerequest000000000000000000000000000000000000000000000000
#EXTINF:0,channel name 2
http://192.168.0.10/stream/tunerequest000000000000000000000000000000000000000000000001

Der Fehler beim händischen Aufrufen ist allerdings richtig und gewollt.
 

CptGambit

Benutzer
Mitglied seit
25. Nov 2013
Beiträge
389
Punkte für Reaktionen
3
Punkte
24
Hallo
erstmal danke für dein Engagement und dass du hier auf jeden eingehst..

Ich kann das mit der Aufnahme unter /volume1/common leider nicht mehr nachvollziehen, weil wieder (das zweite Mal) meine Aufnahmen und alle eingerichteten Channels weg sind.

Das log sagt folgendes:
2014-02-22 14:30:10 ERR Traceback (most recent call last): File "/volume1/@appstore/tvstreamrecord/bottle.py", line 861, in _handle return route.call(**args) File "/volume1/@appstore/tvstreamrecord/bottle.py", line 1755, in wrapper rv = callback(*a, **ka) File "tvstreamrecord.py", line 275, in upload_p name = line.split(",",1)[1]IndexError: list index out of range
2014-02-22 14:30:09 OUT M3U upload parsing started
2014-02-21 21:42:54 OUT M3U upload parsing started
2014-02-21 21:42:54 ERR Traceback (most recent call last): File "/volume1/@appstore/tvstreamrecord/bottle.py", line 861, in _handle return route.call(**args) File "/volume1/@appstore/tvstreamrecord/bottle.py", line 1755, in wrapper rv = callback(*a, **ka) File "tvstreamrecord.py", line 275, in upload_p name = line.split(",",1)[1]IndexError: list index out of range
2014-02-21 21:42:24 OUT M3U upload parsing started
2014-02-21 21:42:24 ERR Traceback (most recent call last): File "/volume1/@appstore/tvstreamrecord/bottle.py", line 861, in _handle return route.call(**args) File "/volume1/@appstore/tvstreamrecord/bottle.py", line 1755, in wrapper rv = callback(*a, **ka) File "tvstreamrecord.py", line 275, in upload_p name = line.split(",",1)[1]IndexError: list index out of range
2014-02-21 21:40:34 OUT M3U upload parsing started
2014-02-21 21:40:34 ERR Traceback (most recent call last): File "/volume1/@appstore/tvstreamrecord/bottle.py", line 861, in _handle return route.call(**args) File "/volume1/@appstore/tvstreamrecord/bottle.py", line 1755, in wrapper rv = callback(*a, **ka) File "tvstreamrecord.py", line 275, in upload_p name = line.split(",",1)[1]IndexError: list index out of range

Kann das mit der m3u Sache zu tun haben?

Die m3u Datei hab ich übrigens auch mal per Opera versucht hochzuladen. Funzte auch nicht, selber Fehler.
Java-Script ist erlaubt. Beide browser sind grade erst frisch installiert, weil ich mir mal Win7 auf meinen Mac installiert hab. Kann den Fehler aber auch an meinem "alten" Win7 Rechner nachvollziehen.

Die m3u sieht wie folgt aus:
#EXTM3U
#EXTINF:-1,(1) Das Erste

rtp://@239.35.10.4:10000
#EXTINF:-1,(2) ZDF

rtp://@239.35.10.5:10000
#EXTINF:-1,(3) RTL

rtp://@239.35.20.10:10000
#EXTINF:-1,(6) VOX

usw.
Kann ich noch mehr zur Indiziensicherung beitragen?
Btw. ich weiss nicht, was dieser Kack IE11 als Einstellungen drin hat, aber mit dem bekomme ich noch nicht mal ein Fenster auf, wenn ich zum Beispiel auf "Create Records" oder ähnliche Buttons klicke. Pop-ups sind erlaubt ..
 

CptGambit

Benutzer
Mitglied seit
25. Nov 2013
Beiträge
389
Punkte für Reaktionen
3
Punkte
24
Ok ich konnte grade noch paar Fakten sammeln.
Zu erst, ich hab hier eine m3u Datei mit der kann man die Channels und Aufnahmen quasi löschen :D (also nur in der tvstreamrecordGUI).
Die m3u hab ich von hier:
http://grinch.itg-em.de/entertain/downloads/playlist.php?m3u

Ich hab hier auf meinem Rechner noch eine alte m3u Liste gefunden. Diese konnte ich importieren .. als Test hab ich dann nochmal die von dem Link hier oben drüber getestet, schwupps alle Channel wieder weg.
Ich vermute es hat mit den Leerzeichen in der m3u zu tun.
 

Pavion

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

die Playlist-Sache hängt definitiv mit den leeren Zeilen zusammen. Wenn Du sie aus der Datei rauslöschst, wird es auch funktionieren. Oder nimm einfach die angepasste Version aus dem Anhang. Ich werde in der nächsten Version die leeren Zeilen einfach überspringen, dann wird auch das automatisch klappen.

Hat es denn endlich mit Deinen Aufnahmen funktioniert?

Die Sache mit IE kann ich leider nicht nachvollziehen, bei mir klappt alles. Vielleicht die Seite mehrfach aktualisieren oder in den Einstellungen die Stufe nicht so hoch setzen?!

Mit freundlichen Grüßen
Pav
 

Anhänge

  • angepasst.txt
    3,8 KB · Aufrufe: 69

CptGambit

Benutzer
Mitglied seit
25. Nov 2013
Beiträge
389
Punkte für Reaktionen
3
Punkte
24
Die Aufnahmen gingen ja generell. Nur die allererste Aufnahme, die ich gemacht hatte bevor ich von /volume1/common auf mein Verzeichnis umgestellt hatte, hab ich gesucht. Aber da ich die Aufnahme nach dem "Crash" nicht mehr in der GUI gefunden hat, hat sich das somit auch erledigt.

Vergiss IE, das Ding schau ich in der Regel eh nicht an.

Danke für die Datei :)
 

CptGambit

Benutzer
Mitglied seit
25. Nov 2013
Beiträge
389
Punkte für Reaktionen
3
Punkte
24
So importieren geht jetzt :)
Musste aber nochmal die komplette Datei überarbeiten, weil der Sendername da anders war, wie fürs EPG zu gebrauchen.

Mal noch ne Verständnisfrage: "File extension for the recorded stream (default='.ts')" wird damit einfach nur die Dateiendung festgelegt? Also so wie wenn ich sie einfach mit umbennen setzen würde?
Oder geht mit einer neuen Endung, wie dlv oder mpg auch ein anderes Encoding einher?

Die Videostation kommt nicht so 100% gut mit den .ts Spuren klar.
 

Pavion

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

Für die HTTP-Streams ist die Dateierweiterung belanglos und wird nur angehängt. Bei RTMP hingegen wird die Aufnahme an ffmpeg weitergeleitet und dieses Tool verwendet diese Information, um Format zu erkennen. Probiere ruhig andere Dateienendungen aus, schlimmstenfalls wirst Du keine Aufnahme sehen.

Gruß
Pav
 

CptGambit

Benutzer
Mitglied seit
25. Nov 2013
Beiträge
389
Punkte für Reaktionen
3
Punkte
24
Pavion, bist du eigentlich noch weiterhin dabei tvstreamrecord weiterzuentwickeln?
Hätte da z.B. schon nen Bug bzw. ein Verhalten, dass man etwas eleganter lösen könnte :)

In der Config kann man ja den Zielpfad zu den Dateien angeben. Vergisst man hier am Ende einen / dann legt tvsr die Recordings eine Etage höher ab mit den Präfix des eigentlichen Verzeichnis.
Eleganter wäre da eine Prüfung ob ein Slash am Ende kommt und wenn nicht wird vom tvsr einer am Ende gesetzt.

..mal so als Usability Hinweis :)
 

CptGambit

Benutzer
Mitglied seit
25. Nov 2013
Beiträge
389
Punkte für Reaktionen
3
Punkte
24
Mal noch ne Frage an alle. Wie habt ihr tvstreamrecord konfiguriert? Speziell, was die Dateiendung und das Encoding angeht.

Mein Ziel wäre es die Aufnahmen direkt mit der Videostation wiedergeben zu können. Habe dazu den Speicherordner in den Medienindizierungseinstellungen bei den Indizierten Ordnern mit aufgelistet. Aber ich komm noch nicht dahinter, dass die Videostation die Aufnahmen anzeigt, geschweige denn abspielt.

Ich sehe die Aufnahmen im Ordner, aber ich denke die Videostation liest nicht alle Dateiformate/endungen. Hab jetzt in der tvsr-Config mal mp4 versucht. Da wurde die Aufnahme korrekt abgelegt, aber ich kann sie nicht abspielen. Bei den Endungen .flv und .mpg wird nur eine 0 Byte grosse Datei angelegt.

Hat das schon einer hinbekommen, was ich vorhabe?
 

Pavion

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

natürlich entwickle ich mein Programm auch weiter: wie der Zufall so will, wurde eine aktuelle Version fast gleichzeitig mit Deinem Beitrag freigegeben und wird jetzt auch in Deinem Paketzentrum auftauchen. Unter anderem soll es jetzt auch Deine Playlist unverändert einlesbar sein.

Was den Ablagepfad angeht, so habe ich mir natürlich auch die gleichen Gedanken gemacht. Klar könnte ich automatisch "/" an den Pfad anhängen, dann ist aber die Sache mit einem möglichen Präfix nicht mehr möglich. Die jetzige Verfahrensweise ist immerhin so in der Anleitung beschrieben. Es wäre natürlich eleganter, wenn man so eine Baumstruktur anbieten würde, wo der Bediener einen Ordner aussuchen soll. Das habe ich bisher aber nicht implementiert, weil ich nur ungern von meinem Programm aus auf das Dateisystem der DS zugreifen möchte. Dann müsste ich auch noch die Rechte prüfen und ggf. ergänzen usw. Da die Einstellung meist nur einmal bei einer Neuinstallation vorgenommen wird, habe ich den Aufwand als zu hoch eingestuft. Wer weiß, vielleicht greife ich es noch auf.

Jetzt zur generellen Vorgehensweise: mein Programm war ursprünglich dafür gemacht, HTTP-Streams aufzunehmen. Solche Streams werden "as is" abgefangen und in eine Datei gespeichert. Da die Daten dabei gar nicht angefasst werden, ist es vollkommen egal, welche Dateierweiterung die Zieldatei erhält, Hauptsache es gibt eine. Erst später in der Entwicklung wurde ich gebeten, auch Unterstützung für RTMP-Streams einzubauen. Da diese nicht direkt abgefangen werden können und einen erheblichen Aufwand verursachen würden, habe ich mich für eine andere Lösung entschieden: solche Streams werden an ein externes Tool ffmpeg weitergeleitet. Damit ist es für mich allerdings eine BlackBox, ich rufe es auf und ich warte, bis es fertig ist. Wenn es nicht will oder kann, erhalte ich kein Feedback und so kommt es dazu, dass ich die Aufnahme als erfolgt markiere, während ffmpeg eventuell diese aus unbekannten Gründen abgebrochen hat.
Nun kann ich dem Tool zwar sagen, es soll den Stream nur kopieren, doch erwartet das Tool trotzdem eine Formatangabe. Wenn keine angegeben ist, wird dafür die Dateierweiterung verwendet. Wie es auf der About-Seite steht:
Code:
If it works, you should be able to locate the generated file out.mpg in current folder. Else you should check for any errors in console output.
Make sure that you've provided an correct extension for your stream (.ts, .mpg, .avi, .mk4, .mkv and such): ffmpeg uses this to determine output file type. 
Look into ffmpeg documentation and experiment with your stream till you get your file. 
I ask you to understand that I'm unable to test any possible stream myself or to provide any technical support for ffmpeg.
Soweit ich weiß, kann man dieses Verhalten umgehen, indem man in meiner Konfiguration das Format erzwingt (Config -> FFMPEG Support -> Additional Parameters...). Das Parameter dazu ist "-f FORMAT", die gesamte Zeile könnte dann in etwa so aussehen:
Code:
-acodec copy -vcodec copy -f avi
Dann wäre die Dateierweiterung belanglos und könnte frei gewählt werden. Wie gesagt, ich kann für ffmpeg leider keine direkte Unterstützung bieten, sondern biete nur eine Art GUI an. Eine Kurzanleitung, um es selbst zu testen, findest Du übrigens in dem entsprechenden Kapitel meiner About-Seite. Mehr Infos zu den Parametern von ffmpeg findest Du hier.

Ich hoffe, ich konnte einige Fragen beantworten :)

Beste Grüße
Pav
 

CptGambit

Benutzer
Mitglied seit
25. Nov 2013
Beiträge
389
Punkte für Reaktionen
3
Punkte
24
Huhu

du was Generelles. Du musst dir nicht jeden Schuh anziehen :)
Ich hatte meine ffmpeg Frage wirklich einfach an alle gestellt. Trotzdem danke für deine Antwort.

Mit dem Pfad, klar verstehe ich. Man muss es nur wissen :)

Bei ffmpeg, ist es nach wie vor so, ich hab da bisher absolut keine Erfahrung mit gemacht und wollte einfach mal das Wissen der Anderen hier abgreifen :)

Hab mir grade mal die 0.5.8 geladen. Coole Sache, aber ich kann in den Configs nichts mehr einstellen :D
Bin halt Mac User und das liegt wohl am Safari, dass da die Config Seite nicht mehr richtig angezeigt wird.
Mitm FF läufts wie es soll.

Also danke nochmal für die neue Version!
 

Pavion

Benutzer
Mitglied seit
02. Feb 2013
Beiträge
567
Punkte für Reaktionen
14
Punkte
44
Der einfachste Weg ist die Windows (oder eben Mac)-Version von ffmpeg zu laden und in der Console auszuprobieren, welche Parameter mit dieser Art vom Stream am besten funktionieren. Diese Parameter können dann in meinem Programm verwendet werden. Rein theoretisch kann man mit ffmpeg die Streams sogar "on the fly" in etwas Praktischeres umkodieren. Das ist aber u.U. ziemlich CPU-lastig.

Ich habe soeben die aktuelle Version mit Safari getestet und bei mir hat es funktioniert. Steht irgend etwas im Programmlog? Vielleicht ist die alte Version der Seite noch im Browser-Cache. Manchmal hilft es die Seite mehrfach (bzw. Taste gedrückt halten) zu aktualisieren.
 

moere5

Benutzer
Mitglied seit
16. Feb 2014
Beiträge
1
Punkte für Reaktionen
0
Punkte
0
hallo,

wer von euch kann mich mal bitte Supporten? hab so weit alles eingerichtet aber ich kann die videos nach der aufzeichnung im angegebenen verzeichnis nicht finden. wo sind die wohl hin?
Kann mir jemand helfen? bin nicht so wahnsinnig tief drin in der technik.

danke vor ab.

lg thomas

Screenshot.jpg
 
Zuletzt bearbeitet:

Pavion

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

bitte kontrolliere Folgendes:
1) Hast Du wirklich einen bereits vorhandenen Ordner Deiner DiskStation in der Konfiguration eingetragen? Auf dem Bild sieht es fast so aus, als würde der Ordner 'viodeo' heißen oder so^^
2) Steht irgendetwas in der Log-Anzeige?
3) Welche Art von Streams nutzst Du? Sprich, womit beginnt Deine Streamadresse? Mit HTTP oder mit RTMP?
4) Kannst Du Deinen Stream direkt abspielen? Mit VLC-Player oder so?

Gruß
Pav
 

darkmerlin1512

Benutzer
Mitglied seit
16. Okt 2009
Beiträge
87
Punkte für Reaktionen
11
Punkte
8
moin,

erst mal Danke für das gute Tool.

Bei meiner DS508 geht alles. Auch die neue 0.5.8.
Bei meiner DS213+ geht seit dem Update auf die Beta 5 keine Aufnahme mehr.
Quelle ist Telekom Entertain
Als Test hab ich mal was angestossen.
Code:
2014-02-26 08:57:00	OUT	FFMPEG (rtp) record 'Tagesschau' called with:
2014-02-26 08:57:00	OUT	[u'ffmpeg', '-i', 'rtp://@239.35.10.1:10000', '-t', '659', u'-acodec', u'copy', u'-vcodec', u'copy', u'/volume1/video/20140226085700 - Tagesschau.ts']
2014-02-26 08:57:00	OUT	FFMPEG record 'Tagesschau' ended

keine ahnung ob das schon bekannt ist.


grüße
 

Pavion

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

Beta 5? Habe ich leider noch nicht getestet. Probiere bitte folgende Schritte aus:
1) Hast du Video Station installiert? Gegebenenfalls wird ffmpeg erst mit diesem Paket mitinstalliert (Bestätigung erforderlich).
2) Wenn Du einen Terminalzugriff eingerichtet hast (oder eine Windows Version von ffmpeg hast), probiere bitte den Befehl direkt in der Konsole auszuführen und schicke mir die Fehlermeldung zu:
Code:
ffmpeg -i rtp://@239.35.10.1:10000 -t 659 -acodec copy -vcodec copy "/volume1/video/20140226085700 - Tagesschau.ts"
3) Prüfe bitte, ob Du die richtige Dateierweiterung verwendest, da ffmpeg diese als Formatkennung verwendet.

Gruß
Pav
 

darkmerlin1512

Benutzer
Mitglied seit
16. Okt 2009
Beiträge
87
Punkte für Reaktionen
11
Punkte
8
das ist wohl eine neue Version von ffmpeg
Parameter sind wohl anders......

Code:
DS213> ffmpeg -i rtp://@239.35.10.1:10000 -t 659 -acodec copy -vcodec copy "/volume1/video/20140226085700 - Tagesschau.ts"
ffmpeg version 2.0.2 Copyright (c) 2000-2013 the FFmpeg developers
  built on Jan 17 2014 20:30:44 with gcc 4.3.2 (GCC)
  configuration: --prefix=/usr/syno --incdir='${prefix}/include/ffmpeg' --arch=powerpc --target-os=linux --cross-prefix=/usr/local/powerpc-none-linux-gnuspe/bin/powerpc-none-linux-gnuspe- --enable-cross-compile --enable-optimizations --enable-pic --enable-gpl --enable-shared --disable-static --enable-version3 --enable-nonfree --enable-libfaac --enable-encoders --enable-pthreads --disable-bzlib --disable-protocol=rtp --disable-muxer=image2 --disable-muxer=image2pipe --disable-swscale-alpha --disable-ffserver --disable-ffplay --disable-devices --disable-bzlib --disable-altivec --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libmp3lame --disable-decoder=amrnb --disable-encoder=zmbv --disable-encoder=dca --disable-encoder=ac3 --disable-encoder=ac3_fixed --disable-encoder=eac3 --disable-decoder=dca --disable-decoder=eac3 --disable-decoder=truehd --cc=/usr/local/powerpc-none-linux-gnuspe/bin/powerpc-none-linux-gnuspe-ccache-gcc
  libavutil      52. 38.100 / 52. 38.100
  libavcodec     55. 18.102 / 55. 18.102
  libavformat    55. 12.100 / 55. 12.100
  libavdevice    55.  3.100 / 55.  3.100
  libavfilter     3. 79.101 /  3. 79.101
  libswscale      2.  3.100 /  2.  3.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  3.100 / 52.  3.100
rtp://@239.35.10.1:10000: Protocol not found


die fehlermeldung im log sind aber die gleichen. auch mit installation der videostadion

Code:
2014-02-26 10:57:00	OUT	FFMPEG (rtp) record 'Nachrichten - [news]' called with:
2014-02-26 10:57:00	OUT	[u'ffmpeg', '-i', 'rtp://@239.35.20.47:10000', '-t', '959', u'-acodec', u'copy', u'-vcodec', u'copy', u'/volume1/video/20140226105700 - Nachrichten____news_.ts']
2014-02-26 10:57:00	OUT	FFMPEG record 'Nachrichten - [news]' ended
 


 

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