Hallo zusammen,
zu Analogzeiten gab es eine PVR350 um Videosignale am Eingang des VDRs wiederzugeben. Frage: gibt es aktuell etwas, um ein HDMI Signal in einen VDR Headless einzuspeisen, der dann diesen Kanal z. B. per streamdev-Server weitergibt?
Hallo zusammen,
zu Analogzeiten gab es eine PVR350 um Videosignale am Eingang des VDRs wiederzugeben. Frage: gibt es aktuell etwas, um ein HDMI Signal in einen VDR Headless einzuspeisen, der dann diesen Kanal z. B. per streamdev-Server weitergibt?
Wenn du eine Capture Karte mit Linux Support findest, kann man bestimmt über das IPTV Plugin und vlc oder ffmpeg was bauen...
Das Problem sind die Capture Karten bzw. deren Linux Unterstützung...
Oder und das will ich bald mal testen, den guten alten HD PVR mit Component video input zu HDMI Adapter.
Der HD PVR sollte eigentlich noch vom pvrinput Plugin unterstützt werden?
https://www.hauppauge.com/pages/products/data_hdpvr.html
https://www.amazon.de/Componen…Celectronics%2C261&sr=1-5
Wenn es kein 4K oder 60fps sein muss, soll das Teil hier laut Q&A V4L-kompatibel sein.
Nur weil es unter Linux als USB Webcam erkannt wird, heisst das noch lange nicht, dass es auch als input device für vdr verwendbar ist.
Nur weil es unter Linux als USB Webcam erkannt wird, heisst das noch lange nicht, dass es auch als input device für vdr verwendbar ist.
OK, das war mir nicht bewusst.
Mal ins unreine gesprochen:
Sollte dann doch eigentlich gehen oder mache ich hier einen Gedankenfehler? Vorteil von mjpg-streamer: nutze ich für's Einbinden meiner Webcam beim 3D Drucker mit einem PI und funktioniert stabil und problemlos.
Hat IPTV "weitere" Ansprüche an den Stream oder müsste das gehen? Falls grundsätzlich kein Gedankenfehler da ist, würde ich das mal die Tage (mangels Capture Device vorerst mal mit einer USB Webcam) probieren...
Es gab in den letzten Jahren mindestens ein Dutzend Leute, die partout an der Idee festhalten wollten, ein device, das keinen TS-Stream liefert, für vdr zu verwenden. Immer ging es um irgendwelche analogen Karten oder Kameras. Die Idee, das Signal in Software zu encodieren und z.B. mit dem iptv-Plugin über dessen externe Schnittstelle in den vdr zu holen ist nicht neu. Alle waren hochmotiviert, von dem Vorhaben nicht abzubringen und wollten sich mit der fertigen Lösung wieder melden. In nicht einem Fall hat man davon je wieder etwas gehört…
Selbst für die von pvrinput unterstützten ivtv/pvrusb2-devices, die bereits einen TS-Stream erzeugen, mussten wir den noch aufwendig zerlegen , fehlende Daten (PAT, PMT, PCR) hinzufügen und den Stream wieder neu zusammensetzen. Da hat mini73 saubere Arbeit geleistet (wie immer ). Ohne diese Daten lief es zwar grundsätzlich auch, es gab aber in Verbindung mit dem streamdev-Plugin Probleme.
Das iptv-Plugin enthält Beispiele, wie man in Verbindung mit vlc Streams in TS umcodieren kann. Das hat bei meinen Experimenten aber nie stabil funktioniert.
Wenn es darum geht, nur ein fixes Signal außerhalb des vdr in einen Http-Stream zu packen und diesen dann in vdr anwählen zu können, könnte auch das seit heute von lnj erweiterte externalplayer-Plugin eine Lösung sein:
Aber das startet ein externes Programm zur Wiedergabe, also z.B. Browser. Also keine direkte Wiedergabe per als Kanal anwählbare Quelle und keine Aufnahmemöglichkeit.
Für die HD PVR ist rudimentäre Unterstützung im pvrinput-Plugin vorhanden. Es gibt nur für bestimmte ältere Revisionen einen Linuxtreiber und ob der im Kernel ist oder selbst kompiliert werden muss (und mit aktuellen Kernelversionen noch funzt) weiss ich ad hoc nicht. Ausprobiert hat das nach meiner Kenntnis seit über 10 Jahren keiner mehr. Keiner von uns Entwicklern hatte so eine Box. Wir waren für das Testen auf Nutzer in den USA angewiesen. Die Kommunikation war nach meiner Erinnerung schwierig, und das lag nicht an sprachlichen Problemen.
mrjoe: mjpg-streamer liefert aber nur Bild und keinen Ton.
Für die Hauppauge HDPVR2 und Colossus 2 gibt es zwar keinen direkten Treiber (ok - gibt es schon aber nur gewerblich und gegen Geld).
Hauppauge bietet aber ein Linux Tool an, das mit den oben genannten Geräten per Batch Aufnahmen in Dateien ablegt.
Wenn man diese Aufnahmen dann in eine FIFO Datei umleitet und diese dann mit dem IPTV Plugin öffnet, dann kann man auch Bild und Ton aufnehmen.
Hauppauge DE | HD PVR 2 Gaming Edition / HD PVR 2 Gaming Edition Plus
Wenn man diese Aufnahmen dann in eine FIFO Datei umleitet und diese dann mit dem IPTV Plugin öffnet, dann kann man auch Bild und Ton aufnehmen.
Vermutung oder selbst ausprobiert?
Erzeugen die Geräte normgerechte TS-Streams, die das iptv-Plugin akzeptiert? oder müssen sie mittels externem Script (definiert im channels.conf-Eintrag) recodiert werden?
Ich hatte das mal vor ca. 5-6 Monaten getestet.
Auf einem yavdr System mit NVidia Karte und einer Colossus 2 Karte.
Das Batchsript von Hauppauge hat den TS Stream in eine FIFO Datei gelenkt und ich konnte diese mit dem IPTV Plugin öffnen und ansehen.
(so ähnlich war der Eintrag in der channels.conf:
Ich konnte auch aufnehmen. Allergings war mir das Handling noch ein wenig unschön da ich den Stream vorher per Hand in der Konsole starten musste aber findige VDRler können das Starten des Batches bestimmt über die Reccmd oder eines anderen Batchaufrufes einbauen...
Ich hatte das mal vor ca. 5-6 Monaten getestet.
Auf einem yavdr System mit NVidia Karte und einer Colossus 2 Karte.
Das Batchsript von Hauppauge hat den TS Stream in eine FIFO Datei gelenkt und ich konnte diese mit dem IPTV Plugin öffnen und ansehen.(so ähnlich war der Eintrag in der channels.conf:
Ich konnte auch aufnehmen. Allergings war mir das Handling noch ein wenig unschön da ich den Stream vorher per Hand in der Konsole starten musste aber findige VDRler können das Starten des Batches bestimmt über die Reccmd oder eines anderen Batchaufrufes einbauen...
Damit bist Du weiter gekommen als alle anderen vor Dir. Dass es da einen Linux Tool gibt, das ohne Kerneltreiber auskommt, war mir bisher nicht bekannt. Zu abschreckend war alles, was ich auf linuxtv.org finden konnte. Ich habe mal in das README geschaut:
Test application command line usage:
Usage: ./HDPVR2-testApp [-hcspb] [-a <aspect_ratio>] -f <output_file>
Arguments:
-h - this help
Mode:
default: HDMI
-c - component
-s - composite
Output:
default: stdout
-f <output_file> - file
-p - use named pipe instead
only MPEG-2 transport stream is available now
Other options:
-a <aspect_ratio> - enforce aspect ratio
examples: '-a 1.33' or '-a 4/3'
-b - increase audio input gain
Note:
Capture should be stopped by sending SIGINT (Ctrl-C from terminal).
=================================================
minimim requirements:
Ubuntu 12 or OSX 10.8, gcc >= 4.6
Linux:
to build application for 32 bits run: make [cpu=i386]
to build application for 64 bits run: make
OSX:
universal static lib will be generated by make
to install binaries run: make install
to clean build artifacts run: make clean
installation pack will have a name of the host system and will appear as a tgz package in the current folder
pack will contain:
device firmware,
test application,
host static library,
API header files,
readme
Display More
Demnach kann man nur in mpeg2 aufnehmen? Das ist doch wohl ein Witz.
Ja das wäre auch ein Witz. Der Caja Dateiexplorer sagt mir auch es handele sich um einen MPEG-2-Transportstrom.
Da der Caja aber auch nur TS Endungen als MPEG-2 kennt...
Wenn ich die Aufnahme aber im vlc öffne sagt er mir als Stream 0 "Codec: H264 - MPEG-4 AVC (part 10) (h264)"
Auch Kodi sagt mir bei den Aufnahmefetzen es seien h.264er Dateien.
Ich glaube wenn man über die Kabelpeitsche analog aufnehmen möchte dann macht er das als MPEG-2...?
Die tests kommen aber frühestens nächste Woche.
Selbst für die von pvrinput unterstützten ivtv/pvrusb2-devices, die bereits einen TS-Stream erzeugen, mussten wir den noch aufwendig zerlegen , fehlende Daten (PAT, PMT, PCR) hinzufügen und den Stream wieder neu zusammensetzen. Da hat mini73 saubere Arbeit geleistet (wie immer ). Ohne diese Daten lief es zwar grundsätzlich auch, es gab aber in Verbindung mit dem streamdev-Plugin Probleme.
Zumindest in meinem Anwendungsfall (da ich eh bzgl. Streamdev-Server noch das Problem mit dem Verbindungsaufbau über Firewall-Grenzen hinweg habe) könnte ich mir jetzt konkret für das HDMI capturen auch vorstellen, dass sich die Clients direkt auf die "IPTV-Quelle" verbinden und somit streamdev nicht notwendig wäre. Ist zumindest einen Versuch zwischen den Jahren wert.
don-baba bin natürlich an deinen Erkenntnissen interessiert. Ich muss mal schauen, welche Capture-Karte ich kurzfristig habe. Eine AverTV sollte irgendwo noch rumliegen.
PS: ist das wirklich ein Rand-UseCase? Hätte angenommen, dass einige User etwaige HDMI Devices über VDR-Clients anzeigen lassen wollen... Vielleicht bin ich auch schon zu altmodisch und arbeite noch mit HDMI Eingängen...
Wenn du erstmal mit der Webcam testen möchtest, nimm die den mjpg-streamer und schaue ob du den stream mit mplayer oder mpv öffnen kannst.
Dann kannst du diesen Stream entweder per IPTV Plugin oder via Externalplayer öffnen.
Denk bei HDMI auch immer an HDCP als Verschlüsselung du kannst nicht so ohne weiteres jede Quelle anschließen und aufnehmen...
Sonst schau doch mal hier:
http://vdr-wiki.de/wiki/index.php/Webcam
http://vdr-wiki.de/wiki/index.php/Iptv-plugin#Protokoll_EXT
So langsam verstehe ich die "Schwarzmahlerei". Habe mich durch einige Dokus/HowTos von vlc und ffmpeg gekämpft und es ist noch nicht zufriedenstellend. Bisherige Erkenntnis:
Jetzt habe ich mir mal OBS runtergeladen. Damit ist es mir möglich, in der Ablage des nginx-servers die *.ts Dateien erstellen zu lassen, paralle dazu wurde auch eine .m3u8 playlist erstellt und ich konnte problemlos per VLC auf den stream zugreifen. Ok, ist ein etwas komplizierter Aufbau, aber wenn die Grundlage mal steht, kann man noch optimieren. Da OBS scheinbar auch auf ffmpeg zurückgreift, sollte das am Ende das Ziel sein (ffmpeg -> nginx hls -> client).
Bevor ich mich daran versuche, die Parameter in ffmpeg zu finden die Frage an die Experten, ob und wie ich eine m3u8-playlist im iptv plugin einbinden kann? Geht das direkt oder nur über den Umweg über externes Skript und darin ffmpeg (oder vlc?) nutzen? Falls direkt, wie müsste der channels.conf-Eintrag aussehen? Die Streamadresse, über die z.B. vlc problemlos abspielt, lautet: http://192.168.0.12/live/stream.m3u8.
Habe nun basierend auf http://www.vdr-wiki.de/wiki/index.php/Iptv-plugin eine vlcstream.sh im conf/plugins/iptv-Verzeichnis angelegt. Dabei als Stream-Link beim VLC Aufruf natürlich http://192.168.0.12/live/stream.m3u8 eingegeben. Datei sah somit so aus:
#!/bin/sh
PARAMETER1="$1"
PORT="$2"
exec sudo -u vdr vlc "http://192.168.0.12/live/stream.m3u8" --sout "#transcode{vcodec=mp2v,acodec=mpga,vb=2400,ab=320}:standard{access=udp,mux=ts{pid-video=1,pid-audio=2,pid-spu=3},dst=127.0.0.1:$PORT}" --intf dummy
Das sudo musste ich ergänzen, da ich den Test mit meinem Odroid mache und dort VDR unter root laufen muss, gleichzeitig vlc aber standardmässig nicht unter root läuft.
Die channels conf entsprechend erweitert um die Zeile LC-channel;IPTV:1:IPTV|EXT|vlcstream.sh|1:P:0:1:2:0:0:1:0:0:0. Bekomme nun beim Umschalten auf den Kanal nur ein "channel not available", im Log steht auch nicht mehr als diese Meldung. Ich habe deshalb in vlcstream.sh dummy-Ausgaben ala "echo $2 >>/tmp/vlc" ergänzt und sehe, dass diese Datei weder angelegt noch ergänzt wird. --> es findet scheinbar gar kein Aufruf statt. Woran könnte das Beispiel aus der Wiki-Seite scheitern? Sucht iptv das Skript ausserhalb seines conf/plugins-Verzeichnis? Leider gibt es momentan nicht mehr Fehlerausgaben.
Zur Info: starte ich das vlcstream.sh-Skript händisch sehe ich an meinem hls-Server-log, dass er die ts-Dateien nacheinander abruft. Das heisst theoretisch scheint das Skript und der VLC Aufruf nicht falsch zu sein. Nun muss ich nur das vlcstream.sh Skript ans Laufen bringen... Bin für Ratschläge dankbar.
Ich habe mit dem iptv-Plugin und seiner mangelhaften Doku auch schon graue Haare bekommen...
Bei mir liegen diese Dateien in /usr/local/share/vdr/plugins/iptv:
Das dürfte daran liegen, dass vdr mit PREFIX /usr/local kompiliert wurde, sonst wäre es wohl /usr/share/vdr/plugins/iptv
/var/lib/vdr/plugins/iptv ist bei mir leer.
Auf einem anderen vdr habe ich in /var/lib/vdr/plugins/iptv/ den Unterordner vlcinput. Darin die Datei frühstyxradio.conf mit diesem Inhalt:
Der dazugehörige channels.conf-Eintrag lautet:
Auf diesem Rechner habe ich die Datei vlc2iptv in /usr/local/share/vdr/plugins/iptv gegenüber dem Original aus den Plugin-Sourcen an einer Stelle modifiziert:
Do you really need to watch the stream as a channel, or do you just need to watch it? if it doesn’t matter how, then it’s very easy to watch any stream through the MPV plugin, just feed it a playlist.
Don’t have an account yet? Register yourself now and be a part of our community!