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

  • So geht's:


    Code
    ffmpeg -i test_hd.ts -map 0:v -map 0:a:0 -c:v nvenc_h264 -b:v 4500K -maxrate 5000K -bufsize:v 9000K -bf 2 -g 150 -i_qfactor 1.1 -b_qfactor 1.25 -qmin 1 -qmax 50 -c:a libfdk_aac -vbr 5 -f matroska output.mkv
  • Liegt es nu daran, das die Einheit der Bitrate K ist oder das du wieder -vbr 5 verwendest?

    Grüße


    Hannemann

  • Mal am Rande:
    Die GTX750TI hat ein Maxwell Chip, oder?
    Meine GTX780 noch einen Kepler Chip.
    Meine GTX780 macht bei 3PO's Testdatei gerade einmal ~90fps


    Obwohl die GTX780 mehr Gaming Leistung als die GTX750 hat, hinkt sie beim nvenc hinterher...


    oder es liegt am 4K Display...?! nunja

  • Geht auch mit "M":


    Code
    fmpeg -i test_hd.ts -map 0:v -map 0:a:0 -c:v nvenc_h264 -b:v 4.5M -maxrate 5M -bufsize:v 9M -bf 2 -g 150 -i_qfactor 1.1 -b_qfactor 1.25 -qmin 1 -qmax 50 -c:a libfdk_aac -vbr 5 -f matroska output.mkv


    Bei "vbr" nörgelt er allerdings:


    Code
    Note, the VBR setting is unsupported and only works with some parameter combinations


    Transcodiert aber trotzdem:


  • Mal am Rande:
    Die GTX750TI hat ein Maxwell Chip, oder?
    Meine GTX780 noch einen Kepler Chip.
    Meine GTX780 macht bei 3PO's Testdatei gerade einmal ~90fps


    Obwohl die GTX780 mehr Gaming Leistung als die GTX750 hat, hinkt sie beim nvenc hinterher...


    Geil... Meine Karte rockt voll! :strike1
    Maxwell vor!!!

    Code
    frame=  850 fps=151 q=26.0 Lsize=   20573kB time=00:00:34.92 bitrate=4826.2kbits/s speed= 6.2x


    Keine Ahnung ob Maxwell die neuere Generation ist aber Kepler ist doch die erste Generation mit der NVENC überhaupt geht. Daher müsste dein Chip ja einer älteren Generation angehören, was das erklären könnte

    Grüße


    Hannemann

  • Code
    01:00.0 VGA compatible controller: NVIDIA Corporation GM107 [GeForce GTX 750 Ti] (rev a2)


    Hmmm... Kann se trotzdem nicht *grmpf*


    Meine Karte ist doch nicht so geil...

    Grüße


    Hannemann

  • Third Generation (Maxwell GM20x)


    Introduced with the second-generation Maxwell architecture, third generation NVENC implements the video compression algorithm High Efficiency Video Coding (aka. HEVC, H.265)

    Grüße


    Hannemann

  • Das aber ne 950er ;)


    Ich sag mal: Klar... kauf! Und berichte dann bitte was die mit HEVC so kann :P


    Ich habe das ganze gerade in meine App implementiert. Nu kann mein Serverchen mir auch HD Streamen ohne auf Anschlag abzuhecheln bzw. HD funktioniert endlich überhaupt.
    Streamdev EXT mit Hardware Encoding...


    Das einzige was noch besser wäre wär ein richtiges Ausgabeplugin das on the Fly transkodiert und mit dem man auch via HTTP Request umschalten kann ohne das er den Transkodier Prozess neu starten muss.


    Vielleicht liest ja hier einer von den Ausgabe Plugin Profis mit und baut das mal eben kurz ;) Ich beteilige mich dann auch mit einer hübschen Mediengalerie für den Browser.

    Grüße


    Hannemann

  • Absolut... hinter dem Link ist aber ne 950er ;)


    Ich bin mit meiner 630er im Server auch sehr zufrieden (der served nicht nur, er befeuert auch den Beamer... daher die Karte)

    Grüße


    Hannemann

  • Installiert nach http://developer.download.nvid…tion-on-Ubuntu_UG_v01.pdf in einer VM des in der Signatur angegebenen Servers im Aufbau.


    Audio ist copy!


    Code
    time ffmpeg -i ~/Downloads/test_hd.ts -map 0:v -map 0:a:0 -c:v nvenc_h264 -b:v 4500K -maxrate 5000K -bufsize:v 9000K -bf 2 -g 150 -i_qfactor 1.1 -b_qfactor 1.25 -qmin 1 -qmax 50 -c:a copy -f matroska test_hd_nvenc_x264.mkv
    ...
    frame= 4055 fps= 97 q=-0.0 Lsize=   98560kB time=00:02:43.20 bitrate=4947.3kbits/s
    video:90867kB audio:7615kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.079809%
    
    
    real	0m42.693s
    user	1m3.313s
    sys 	0m2.215s

    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

  • Das ist ja echt mal interessant, was sich da tut!


    Eine Frage nur, warum arbeitet ihr alle mit Bitraten?
    Ich verwende schon seit Jahren praktisch nur noch Constant QP, es sei denn das Ergebins muss exakt auf irgend ein Medium passen. Das ist deutlich effizienter, da man nur einen Durchlauf braucht.


    Mich würde jetzt brennend interessieren, wie sich nvenc mit "-crf 24" (so in etwa) im Gegensatz zu x264 schlägt. Bzw. ob es überhaupt mit CRF geht.

    Gruss
    SHF


  • Als Vergleich zu der Variante in einer VM hier "nativ" auf dem in der Signatur angegebenen Server im Aufbau.



    Das Ergebnis:

    Code
    time ffmpeg -i ~/Downloads/test_hd.ts -map 0:v -map 0:a:0 -c:v nvenc_h264 -b:v 4500K -maxrate 5000K -bufsize:v 9000K -bf 2 -g 150 -i_qfactor 1.1 -b_qfactor 1.25 -qmin 1 -qmax 50 -c:a copy -f matroska test_hd_nvenc_x264.mkv
    ...
    frame= 4055 fps= 97 q=-0.0 Lsize=   98560kB time=00:02:43.20 bitrate=4947.3kbits/s
    video:90867kB audio:7615kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.079809%
    
    
    real	0m42.457s
    user	1m15.281s
    sys 	0m1.177s


    Ggf. dann mal ein Vergleich mit HEVC.

    Eine Frage nur, warum arbeitet ihr alle mit Bitraten?

    Meiner Meinung nach geht es vorrangig um
    a) ob es geht bzw. warum vllt nicht (hevc)
    und
    b) Vergleichbarkeit herzustellen.


    In der oben von mir genannten Installationsanleitung von NVIDIA sind auch einige Beispiele mit verschiedenen Einstellmöglichkeiten genannt.

    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

    2 Mal editiert, zuletzt von kmoss ()

  • Ggf. dann mal ein Vergleich mit HEVC.


    Du hast doch eine Karte die das unterstützt. Mach doch bitte mal einen Test :)

    Grüße


    Hannemann

  • Das ist ja echt mal interessant, was sich da tut!


    Eine Frage nur, warum arbeitet ihr alle mit Bitraten?
    ...
    Bzw. ob es überhaupt mit CRF geht.


    ffmpeg -h encoder=nvenc

    Leider kennt nvenc crf nicht.

    Grüße


    Hannemann

  • NVENC sollte je nach Chip Generation gleich schnell sein.
    Also sollte eine GTX950 so schnell sein wie eine GTX 980
    Und eine GT720 wie eine GTX780


    Der ASIC ist der gleiche.


    Kepler: "8x Realtime"


    Maxwell GM107/GM108: "16x Realtime"


    Maxwell GM20x: "16x Realtime + HEVC + h264 bis 4K"


    https://en.wikipedia.org/wiki/Nvidia_NVENC

Jetzt mitmachen!

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