Transkodieren mit Nvidia Kepler Graka unter Linux mit ffmpeg... Es geht

  • Jetzt mal was erfreuliches:


    Die Option "ColorSpace" "YCbCr444", brachte die Lösung, obwohl mir nicht ganz klar ist, weshalb ich diese Option bei der GTX950 brauche und bei der GT740 nicht? ?(



    Das Transcodieren geht recht flott, mit ca. 130 fps:


    nvenc_h264


    nvenc_hevc


    Code
    1. vdr01_64 tmp # du -h *.mkv
    2. 93M out_nvenc_h264.mkv
    3. 82M out_nvenc_hevc.mkv
    4. vdr01_64 tmp #
  • Die Option "ColorSpace" "YCbCr444", brachte die Lösung, obwohl mir nicht ganz klar ist, weshalb ich diese Option bei der GTX950 brauche und bei der GT740 nicht?


    Zumindest bei UHD-Auflösungen wird gern auf 4:2:0 zurückgefallen, wobei es die unterschiedlichsten Gründe gibt, warum HDMI 2.0 mit 60 Hz nicht in 4:4:4 ankommt. Ich nutze zum Prüfen in diesem Bild die unteren Zeilen, wobei ich kein Unterschied zwischen RGB und 4:4:4 festgestellt habe, nur zu 4:2:0.

    HD-VDR 1&2 : Asrock N68C-S UCC, ASUS EN210 Silent, Boot IDE CF-Card, /srv auf SATA Samsung 3TB
    HD-VDR 1 : Sempron145, yavdr 0.4, TeVii S480 V2.1 DVBs2 Dual
    HD-VDR 2 : Sempron140, yavdr 0.5, DD Cine S2 V6.5 + DuoFlex S2
    Server (im Aufbau): Asrock B75M R2.0 mit i5-3470T sowie Zotac GT970 & DD Cine S2 V6.5 für Gastsysteme
    - Host: Manjaro-XFCE mit 4.4er Kernel mit qemu und virt-manager

  • Ich habe mich wohl zu früh gefreut.
    Es schneit leider immer noch. Allerdings seltener und nicht ganz so heftig, aber stören tut es mich trotzdem.


    Ich weiß nicht, wo ich da noch weiter suchen soll?


    Ich werde wohl wieder meine GT740 einbauen und auf "nvenc_hevc" verzichten.

  • Die Größen der erzeugten Dateien weichen bei mir ab, besonders bei h264. Gegenüber der Anleitung von NVIDIA habe ich nur libfdk-aac dazu genommen.

    HD-VDR 1&2 : Asrock N68C-S UCC, ASUS EN210 Silent, Boot IDE CF-Card, /srv auf SATA Samsung 3TB
    HD-VDR 1 : Sempron145, yavdr 0.4, TeVii S480 V2.1 DVBs2 Dual
    HD-VDR 2 : Sempron140, yavdr 0.5, DD Cine S2 V6.5 + DuoFlex S2
    Server (im Aufbau): Asrock B75M R2.0 mit i5-3470T sowie Zotac GT970 & DD Cine S2 V6.5 für Gastsysteme
    - Host: Manjaro-XFCE mit 4.4er Kernel mit qemu und virt-manager

  • Hallo kmoss,

    Die Größen der erzeugten Dateien weichen bei mir ab, besonders bei h264. Gegenüber der Anleitung von NVIDIA habe ich nur libfdk-aac dazu genommen.

    Ist ja auch kein Wunder. Vergleiche mal die verwendeten Bitraten bei den einzelnen Transkodiervorgängen. Ich habe bei Deinen Details im Spoiler bis auf die entsprechenden Zeilen alles gelöscht. Die Bitrate bei dem Transkodiervorgang nvenc_h264 ist mit 6551.5kbits/s über 50% größer als bei nvenc_hevc mit 4312.6kbits/s. Daraus resultiert dann natürlich eine wesentlich größere Datei.



    Ciao Stefan

  • Ist ja auch kein Wunder. Vergleiche mal die verwendeten Bitraten bei den einzelnen Transkodiervorgängen.


    Wäre schon komisch, wenn die Bitraten gleich sind und die Größen der Dateien so abweichen.
    Der Test war im Zuge meines Angebotes wegen dem "Schnee" bei 3PO entstanden. Trotz gleichem Aufruf bei fast gleicher Karte (beides GTX 950) sind die Unterschiede beim h264-Encoder mittels GraKa relativ groß, d.h. die Softwarestände (wie z.B. FFMPEG, CUDA, NVENC-SDK, GraKa-Treiber) spielen offenbar eine größere Rolle als ich bisher annahm, da ich solche Unterschiede nicht erwartet habe. Einige Seiten zuvor wurde schon über Qualität diskutiert. Diesbezügliche Vergleiche sind nicht einfach, hatte ich schon hier angemerkt, und werden nun noch schwerer.

    HD-VDR 1&2 : Asrock N68C-S UCC, ASUS EN210 Silent, Boot IDE CF-Card, /srv auf SATA Samsung 3TB
    HD-VDR 1 : Sempron145, yavdr 0.4, TeVii S480 V2.1 DVBs2 Dual
    HD-VDR 2 : Sempron140, yavdr 0.5, DD Cine S2 V6.5 + DuoFlex S2
    Server (im Aufbau): Asrock B75M R2.0 mit i5-3470T sowie Zotac GT970 & DD Cine S2 V6.5 für Gastsysteme
    - Host: Manjaro-XFCE mit 4.4er Kernel mit qemu und virt-manager

  • Und, "schneit" es bei Dir auch mit Deiner GTX 950?


    Hat wahrscheinlich jeder eine andere Auffassung, was schon zu "es schneit" zählt. Daher die Bitte im Angebot eine entsprechende Referenz zur Verfügung zu stellen. Im Baraka-Triler sind die (sehr) dunkle Szenen übersichtlich.

    HD-VDR 1&2 : Asrock N68C-S UCC, ASUS EN210 Silent, Boot IDE CF-Card, /srv auf SATA Samsung 3TB
    HD-VDR 1 : Sempron145, yavdr 0.4, TeVii S480 V2.1 DVBs2 Dual
    HD-VDR 2 : Sempron140, yavdr 0.5, DD Cine S2 V6.5 + DuoFlex S2
    Server (im Aufbau): Asrock B75M R2.0 mit i5-3470T sowie Zotac GT970 & DD Cine S2 V6.5 für Gastsysteme
    - Host: Manjaro-XFCE mit 4.4er Kernel mit qemu und virt-manager

  • Interessant bei dem Dokument ist Seite 13
    ...
    Der kann mehrere Größen/Bitraten auf einmal ausspucken...


    Gleichzeitiges Enkodieren mit nvresize (720p nach 1080p und nach 480p)

    HD-VDR 1&2 : Asrock N68C-S UCC, ASUS EN210 Silent, Boot IDE CF-Card, /srv auf SATA Samsung 3TB
    HD-VDR 1 : Sempron145, yavdr 0.4, TeVii S480 V2.1 DVBs2 Dual
    HD-VDR 2 : Sempron140, yavdr 0.5, DD Cine S2 V6.5 + DuoFlex S2
    Server (im Aufbau): Asrock B75M R2.0 mit i5-3470T sowie Zotac GT970 & DD Cine S2 V6.5 für Gastsysteme
    - Host: Manjaro-XFCE mit 4.4er Kernel mit qemu und virt-manager

  • Und wie soll ich das machen??


    Ich dachte da es mir so
    1. Referenz
    a) ein Schnipsel wo es aufritt zu Verfügung zu stellen a la HD-Test
    oder
    b) eine frei verfügbare Referenz zu nennen (wie den schon hier genannten Baraka-Trailer),
    2. Encodieren (kann auch wegfallen, wenn es schon bei Original auftritt)
    3. Stelle in der Referenz nennen
    4. als Bild mit "Schnee" hier posten, ggf. mit Exportanleitung, d.h. wie man das Bild extrahiert hat


    Reicht vllt. schon die Sonnenfinsternis aus dem Trailer (siehe Anhang) als sehr dunkle Szene mit Schnee?

    Images

    HD-VDR 1&2 : Asrock N68C-S UCC, ASUS EN210 Silent, Boot IDE CF-Card, /srv auf SATA Samsung 3TB
    HD-VDR 1 : Sempron145, yavdr 0.4, TeVii S480 V2.1 DVBs2 Dual
    HD-VDR 2 : Sempron140, yavdr 0.5, DD Cine S2 V6.5 + DuoFlex S2
    Server (im Aufbau): Asrock B75M R2.0 mit i5-3470T sowie Zotac GT970 & DD Cine S2 V6.5 für Gastsysteme
    - Host: Manjaro-XFCE mit 4.4er Kernel mit qemu und virt-manager

  • Einfach nur auf einen HD Sender mit 1080i schalten, z.B. ServusTV, dann hast Du Deine "Referenz".


    Habe beim Vergleich zwischen yavdr061 und dem Sat-Bild vom internen TV-Tuner bei Servus TV HD Deutschland kein Unterschied festgestellt.


    Bild war über Web-Interface von yavdr dabei auf 1080i50 gesetzt (siehe Anhang) analog zur Anzeige bei SAT-Empfang über dem TV-Tuner.

    Images

    HD-VDR 1&2 : Asrock N68C-S UCC, ASUS EN210 Silent, Boot IDE CF-Card, /srv auf SATA Samsung 3TB
    HD-VDR 1 : Sempron145, yavdr 0.4, TeVii S480 V2.1 DVBs2 Dual
    HD-VDR 2 : Sempron140, yavdr 0.5, DD Cine S2 V6.5 + DuoFlex S2
    Server (im Aufbau): Asrock B75M R2.0 mit i5-3470T sowie Zotac GT970 & DD Cine S2 V6.5 für Gastsysteme
    - Host: Manjaro-XFCE mit 4.4er Kernel mit qemu und virt-manager

  • So ich habe jetzt auch alle notwendigen Bibliotheken installiert, jetzt kann das Schreiben des Plugins beginnen...!
    Nur als Tipp mit -hwaccell vdpau gibt es noch einen Performanceschub....
    EDIT: Nur mag das der vdr mit vdpau softdevice gar nicht und man bekommt sowas:

    Quote

    vdr BUG: soft lockup - CPU#0 stuck for 22s! [Xorg:15 61]


    EDIT2: Passiert nur wenn man die DISPLAY Variable in einer ssh Shell umbiegt....


    Marten

    vdr experimental, Femon, vdr live, acpi-wakeup, vompserver, undelete, epgsearch, vdr-burn, Raspberry Pi und Vompserver Windows Client (build from git)

    The post was edited 2 times, last by MartenR ().

  • So ich habe jetzt auch alle notwendigen Bibliotheken installiert, jetzt kann das Schreiben des Plugins beginnen...!


    Cool! :tup


    Ich bau gerade Websockets in Restfulapi ein, damit man darüber einen HTML Player fernsteuern kann.
    Blöderweise kann man im Browser auf Android nicht per JS ein MediaElement bedienen. Im Webview kann man das aber aushebeln.
    Im Desktop Browser funktioniert es schon rudimentär.

    Grüße


    Hannemann

  • Quote

    Ich bau gerade Websockets in Restfulapi ein, damit man darüber einen HTML Player fernsteuern kann.


    Wobei ich vermutlich keine Websockets verwenden werde und es wird ein separates Plugin das nur das streamen macht, so dass praktisch alle denkbaren Clients das verwenden können, ich möchte auch am Ende HLS unterstützen und das ist dann ein simples HTTP get für eine entsprechende URL. (Das Steuern würde ich dann kryptografisch absichern.)
    Aber erkläre mal genauer wozu inwiefern das über Websockets gesteuert werden soll....


    Marten

    vdr experimental, Femon, vdr live, acpi-wakeup, vompserver, undelete, epgsearch, vdr-burn, Raspberry Pi und Vompserver Windows Client (build from git)

  • Naja... Wenn in meinem Desktop Browser oder im FireTV oder auf einem anderen Gerät mit einer Webview ein HTML Player läuft muss ich den doch irgendwie Steuern können. Da ich nicht mit dem Telefon dem Plugin sagen will was es zum Fernseher streamen soll sondern dem Player direkt Befehle erteilen will bieten sich Websockets zur Kommunikation doch an.


    Der Player selbst soll ja per HTTP mit dem Plugin kommunizieren. Das Plugin hat mit den Websockets nichts zu tun.

    Grüße


    Hannemann