[gelöst]HDMI Eingang als Kanal

  • 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

    Wohnzimmer: NUC10I3 - Logitech z-5500 - Panasonic 55" TV - Hauppauge Dual DVB-C Stick - Ubuntu 22.04 LTS - yavdr ansible
    Schlafzimmer: NUC10I3 - LG 42" TV - Hauppauge Dual DVB-C Stick - Ubuntu 22.04 LTS - yavdr ansible

    Streamingserver: -im Aufbau-
    diverse Test Clients: -Raspberry Pi + openelec, i3 mit Geforce1030

  • 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.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Mal ins unreine gesprochen:

    • nehme ein USB Capture Device, dass sich wie eine Webcam als video0 registriert
    • nutze mjpg-streamer (https://github.com/jacksonliam/mjpg-streamer.git) und stelle das Bild als Stream bereit
    • nehme IPTV Plugin und nutze HTTP als Protokoll in der channels.conf

    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:

    lnj

    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.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    Einmal editiert, zuletzt von Dr. Seltsam ()

  • 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.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • 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

    Hauppauge DE | Colossus 2

    Hauppauge DE | Linux

    Wohnzimmer: NUC10I3 - Logitech z-5500 - Panasonic 55" TV - Hauppauge Dual DVB-C Stick - Ubuntu 22.04 LTS - yavdr ansible
    Schlafzimmer: NUC10I3 - LG 42" TV - Hauppauge Dual DVB-C Stick - Ubuntu 22.04 LTS - yavdr ansible

    Streamingserver: -im Aufbau-
    diverse Test Clients: -Raspberry Pi + openelec, i3 mit Geforce1030

  • 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?

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • 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:

    Code
      TV5;IPTV:50:S=0|P=1|F=FILE|U=/video/stream.ts|A=5:I:0:514:670:2321:0:5:0:0:0


    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...

    Wohnzimmer: NUC10I3 - Logitech z-5500 - Panasonic 55" TV - Hauppauge Dual DVB-C Stick - Ubuntu 22.04 LTS - yavdr ansible
    Schlafzimmer: NUC10I3 - LG 42" TV - Hauppauge Dual DVB-C Stick - Ubuntu 22.04 LTS - yavdr ansible

    Streamingserver: -im Aufbau-
    diverse Test Clients: -Raspberry Pi + openelec, i3 mit Geforce1030

  • 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:

    Code
      TV5;IPTV:50:S=0|P=1|F=FILE|U=/video/stream.ts|A=5:I:0:514:670:2321:0:5:0:0:0


    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:


    Demnach kann man nur in mpeg2 aufnehmen? Das ist doch wohl ein Witz.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • 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.

    Wohnzimmer: NUC10I3 - Logitech z-5500 - Panasonic 55" TV - Hauppauge Dual DVB-C Stick - Ubuntu 22.04 LTS - yavdr ansible
    Schlafzimmer: NUC10I3 - LG 42" TV - Hauppauge Dual DVB-C Stick - Ubuntu 22.04 LTS - yavdr ansible

    Streamingserver: -im Aufbau-
    diverse Test Clients: -Raspberry Pi + openelec, i3 mit Geforce1030

  • 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... :D

  • 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

    Wohnzimmer: NUC10I3 - Logitech z-5500 - Panasonic 55" TV - Hauppauge Dual DVB-C Stick - Ubuntu 22.04 LTS - yavdr ansible
    Schlafzimmer: NUC10I3 - LG 42" TV - Hauppauge Dual DVB-C Stick - Ubuntu 22.04 LTS - yavdr ansible

    Streamingserver: -im Aufbau-
    diverse Test Clients: -Raspberry Pi + openelec, i3 mit Geforce1030

    Einmal editiert, zuletzt von don-baba ()

  • 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:

    • mjpeg-streamer geht nicht für das USB capture device (beschwert sich über empty buffer und läuft dann in einen timeout rein)
    • ffmpeg konnte ein Videoschnipsel aufnehmen, den ich dann per VLC abspielen und an einen nginx (HLS-konfiguriert) senden und von da wieder per VLC abgreifen konnte
    • ffmpeg konnte nicht direkt von /dev/video0 an den nginx streamen (Dequeued v4l2 buffer contains corrupted data (0 bytes)
    • VLC konnte nicht direkt von /dev/video0 an den nginx streamen

    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:


    Bash
    #!/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:

    Code
    image.sh
    iptvstream-notrap.sh
    linein.sh
    webcam.sh
    internetradio.sh
    iptvstream.sh
    vlc2iptv

    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.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Auf einem anderen vdr habe ich in /var/lib/vdr/plugins/iptv/ den Unterordner vlcinput. Darin die Datei frühstyxradio.conf mit diesem Inhalt:

    Code
    URL="https://ffn-de-hz-fal-stream09-cluster01.radiohost.de/ffn-comedy_mp3-192"

    Der dazugehörige channels.conf-Eintrag lautet:

    Code
    frühstyxradio;IPTV:2:S=0|P=0|F=EXT|U=vlc2iptv|A=2:I:0:0:128=@4:0:0:2:0:0:0

    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:

    Code
    -CHANNEL_SETTINGS_DIR=/etc/vdr/plugins/iptv/vlcinput/
    +CHANNEL_SETTINGS_DIR=/var/lib/vdr/plugins/iptv/vlcinput/

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!