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

    Display Spoiler


    nvenc_hevc

    Display Spoiler
    Code
    vdr01_64 tmp # du -h *.mkv
    93M     out_nvenc_h264.mkv
    82M     out_nvenc_hevc.mkv
    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.

    Details

    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.

    Details

    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

    Meine VDR

    1. Wohnzimmer: yaVDR 0.6, Intel DH67BL, Cel. G530, Zotac GeForce GT 640, 4GB, 1xTT S2-1600, 1xL4M Flex S2, 120GB SSD, 2x3TB SW-Raid1, Silverstone GD04S
    2. Heimkino: yaVDR 0.6, GA B85M-HD3, Cel. G1820, GA GeForce GT 630 Rev. 2, 4GB, 1xDD Cine S2 V5.5, 1x3TB, Gehäuse Cooltek G3

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

    NVRESIZE

    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.

    Testsystem
    Code
    >inxi -v2
    System:    Host: yavdr061-11W Kernel: 3.13.0-83-generic x86_64 (64 bit) Console: tty 2 Distro: Ubuntu 14.04 trusty
    Machine:   Mobo: MSI model: Z170-A PRO (MS-7971) version: 1.0 Bios: American Megatrends version: 1.70 date: 12/16/2015
    CPU:       Quad core Intel Core i5-6500 CPU (-MCP-) clocked at 800.00 MHz
    Graphics:  Card: NVIDIA GM206 [GeForce GTX 950] X.org: 1.15.1 driver: N/A tty size: 154x30 Advanced Data: N/A out of X
    Network:   Card: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller driver: r8169
    Drives:    HDD Total Size: 60.0GB (5.3% used) 1: model: ADATA_SSD_S511_6
    Info:      Processes: 155 Uptime: 7 min Memory: 570.1/32143.3MB Runlevel: 2 Client: Shell (bash) inxi: 1.9.17


    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)

    Edited 2 times, last by MartenR (April 3, 2016 at 4:18 PM).

  • 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

    Sig.


    HTPC1: ASUS M4N78 Pro, AMD AM2, 2 GB RAM, CableStar HD2
    HTPC2: ASUS M4N78 VM, AMD 4850e, 2 GB RAM, NVIDIA 8200, CableStar HD2
    HTPC3: ASUS M3N78 EM, AMD 4850e, 2 GB RAM, NVIDIA 8300, CableStar HD2
    Sevrer: SandyBridge Celeron, TT 3650 CI, 2xTerratec HTC USB XS HD
    Software alle: Ubuntu 12.04 Server 64 Bit, yavdr/testing-vdr, xbmc Gotham, xvdr, vdpau

  • 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

    Sig.


    HTPC1: ASUS M4N78 Pro, AMD AM2, 2 GB RAM, CableStar HD2
    HTPC2: ASUS M4N78 VM, AMD 4850e, 2 GB RAM, NVIDIA 8200, CableStar HD2
    HTPC3: ASUS M3N78 EM, AMD 4850e, 2 GB RAM, NVIDIA 8300, CableStar HD2
    Sevrer: SandyBridge Celeron, TT 3650 CI, 2xTerratec HTC USB XS HD
    Software alle: Ubuntu 12.04 Server 64 Bit, yavdr/testing-vdr, xbmc Gotham, xvdr, vdpau

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!