NVIDIA Encoding klappt nicht.

Sound, Digitalkameras, TV+Video und Spiele.
MaGe
Beiträge: 1717
Registriert: 01.06.2014 17:12:16

Re: NVIDIA Encoding klappt nicht.

Beitrag von MaGe » 20.08.2021 12:43:53

Deine command line ist in ordnung.

FRAU_HOLLE.mkv 1280x720

Code: Alles auswählen

 ffmpeg -y -vsync 0 -i FRAU_HOLLE.mkv -c:a copy -c:v libx264 -b:v 5M output2.mp4 
frame= 1681 fps=97 - CPU 90%

Code: Alles auswählen

 ffmpeg -y -vsync 0 -hwaccel cuda -i FRAU_HOLLE.mkv -c:a copy -c:v h264_nvenc -b:v 5M output2.mp4 
frame= 1958 fps=348 - CPU 14%

Code: Alles auswählen

 ffmpeg -y -vsync 0 -i FRAU_HOLLE.mkv -c:a copy -c:v h264_nvenc -b:v 5M output2.mp4 
frame= 4216 fps=589 -50%

Code: Alles auswählen

 ffmpeg -y -vsync 0 -hwaccel cuda -hwaccel_output_format cuda -c:v h264_cuvid -i FRAU_HOLLE.mkv -c:a copy -c:v h264_nvenc -b:v 5M output2.mp4 
frame= 2682 fps=989 - CPU 5%

Es scheint dir fehlt immer noch cuda.

Frage:
hast du eine intel Machine

was sagt

Code: Alles auswählen

 ffmpeg -hide_banner -hwaccels 
bei mir!
Hardware acceleration methods:
vdpau
cuda
vaapi
opencl
Knogle hat geschrieben: Kannst du vielleicht mal die ffmpeg Zeile schicken, welche du zum konvertieren benutzt? Einfach mal was beispielhaftes?
Was ganz einfaches reicht für die meisten konvertierungen

Code: Alles auswählen

 time ffmpeg -y -hwaccel cuda -hwaccel_output_format cuda -c:v h264_cuvid -i FRAU_HOLLE.m2t -f matroska -map 0:v? -c:v h264_nvenc -preset:v medium -profile:v high -b:v 800k -temporal-aq 1 -rc-lookahead 22 -dpb_size:v 16 -bf:v 3 -b_ref_mode:v middle -map 0:a? -c:a copy -sn FRAU_HOLLE-gpu.mkv 



gruss MaGe
Wir müssen uns vor der Klimaerwärmung nicht fürchten.
Uns rottet die soziale Kälte viel früher aus.

Knogle
Beiträge: 465
Registriert: 06.05.2016 19:29:00
Lizenz eigener Beiträge: MIT Lizenz

Re: NVIDIA Encoding klappt nicht.

Beitrag von Knogle » 20.08.2021 14:06:36

Code: Alles auswählen

 ffmpeg -y -vsync 0 -i FRAU_HOLLE.mkv -c:a copy -c:v libx264 -b:v 5M output2.mp4 
frame= 2700 fps=124 - CPU 100%

Code: Alles auswählen

 ffmpeg -y -vsync 0 -hwaccel cuda -i FRAU_HOLLE.mkv -c:a copy -c:v h264_nvenc -b:v 5M output2.mp4 
frame= 2700 fps=251 - CPU 15%

--> Hier ist jedoch was in nvidia-smi zu erkennen.

Code: Alles auswählen

chairman@debian:/tmp/obs-studio/build$ nvidia-smi
Fri Aug 20 14:30:53 2021       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.57.02    Driver Version: 470.57.02    CUDA Version: 11.4     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  On   | 00000000:0B:00.0  On |                  N/A |
| 52%   58C    P2    99W / 310W |   2279MiB /  7959MiB |     50%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1146      G   /usr/lib/xorg/Xorg                556MiB |
|    0   N/A  N/A      1379      G   /usr/bin/gnome-shell              185MiB |
|    0   N/A  N/A      2968      G   ...b/firefox-esr/firefox-esr        3MiB |
|    0   N/A  N/A      3208      G   ...b/firefox-esr/firefox-esr        3MiB |
|    0   N/A  N/A      3452      G   ...b/firefox-esr/firefox-esr        3MiB |
|    0   N/A  N/A      3538      G   ...b/firefox-esr/firefox-esr        3MiB |
|    0   N/A  N/A      3979      G   ...b/firefox-esr/firefox-esr        3MiB |
|    0   N/A  N/A      4050      G   ...b/firefox-esr/firefox-esr        3MiB |
|    0   N/A  N/A     13646      G   ...b/firefox-esr/firefox-esr        3MiB |
|    0   N/A  N/A     53997      G   ...llation/ubuntu12_32/steam       30MiB |
|    0   N/A  N/A     54007      G   ./steamwebhelper                    3MiB |
|    0   N/A  N/A     54020      G   .../chairman/.steam/debian-i     1070MiB |
|    0   N/A  N/A     55185      G   ...AAAAAAAAA= --shared-files       35MiB |
|    0   N/A  N/A     79836      G   obs                                38MiB |
|    0   N/A  N/A    188186      C   ffmpeg                            326MiB |
+-----------------------------------------------------------------------------+

Code: Alles auswählen

 ffmpeg -y -vsync 0 -i FRAU_HOLLE.mkv -c:a copy -c:v h264_nvenc -b:v 5M output2.mp4 
frame= 2700 fps=249 - CPU 35%

Code: Alles auswählen

 ffmpeg -y -vsync 0 -hwaccel cuda -hwaccel_output_format cuda -c:v h264_cuvid -i FRAU_HOLLE.mkv -c:a copy -c:v h264_nvenc -b:v 5M output2.mp4 
frame= 2700 fps=254 - CPU 7%

Ich habe ne AMD Maschine mit nem Ryzen 5800X, als Grafikkarte eine RTX 3070Ti.

Der Command hier verreckt irgendwie immer.

Code: Alles auswählen

ffmpeg -y -vsync 0 -hwaccel cuda -hwaccel_output_format cuda -i 2021-07-15\ 20-11-48.mkv -c:a copy -c:v h264_nvenc -b:v 5M output2.mp4

Code: Alles auswählen

[h264 @ 0x565039465e40] No decoder surfaces left0:00:00.25 bitrate=   1.5kbits/s speed=4.93x    
[h264 @ 0x565039484780] No decoder surfaces left
[h264 @ 0x5650394a30c0] No decoder surfaces left
[h264 @ 0x5650394c1a00] No decoder surfaces left
Error while decoding stream #0:0: Invalid data found when processing input
[h264 @ 0x565039447500] No decoder surfaces left
Error while decoding stream #0:0: Invalid data found when processing input
[h264 @ 0x565039465e40] No decoder surfaces left
Error while decoding stream #0:0: Invalid data found when processing input
[h264 @ 0x565039484780] No decoder surfaces left
Error while decoding stream #0:0: Invalid data found when processing input
[h264 @ 0x5650394a30c0] No decoder surfaces left
Impossible to convert between the formats supported by the filter 'Parsed_null_0' and the filter 'auto_scale_0'
Error reinitializing filters!
Failed to inject frame into filter network: Function not implemented
Error while processing the decoded data for stream #0:0
Conversion failed!


Die Ausgabe von dem ffmpeg Kommando:

Ich glaube VAAPI gibt es bei NVIDIA nicht oder?

Code: Alles auswählen

Hardware acceleration methods:
cuda
opencl
vdpau (Habe ich gerade mit kompiliert)

MaGe
Beiträge: 1717
Registriert: 01.06.2014 17:12:16

Re: NVIDIA Encoding klappt nicht.

Beitrag von MaGe » 20.08.2021 17:31:00

Knogle hat geschrieben: Ich glaube VAAPI gibt es bei NVIDIA nicht oder?
Den habe ich schon immer, wieß die Katze wo der herkomt!

Alt: von 2019
Hardware acceleration methods:
vdpau
cuda
vaapi
opencl
cuvid

Neu:
Hardware acceleration methods:
vdpau
cuda
vaapi
opencl

frame= 2700 fps=251 - CPU 15%
Das sind werte die macht deine CPU alleine

Die 3070 ist bei fast 6000 Cores
Das müste viel viel schneller sein.

Bei mir
nvidia-settings -q CUDACores -t
1408
Das ist ja fast wie stillstand



gruss MaGe
Wir müssen uns vor der Klimaerwärmung nicht fürchten.
Uns rottet die soziale Kälte viel früher aus.

Knogle
Beiträge: 465
Registriert: 06.05.2016 19:29:00
Lizenz eigener Beiträge: MIT Lizenz

Re: NVIDIA Encoding klappt nicht.

Beitrag von Knogle » 20.08.2021 19:28:08

Das scheint ja garnicht so einfach zu sein die Kiste hier :D

Diesmal ne andere mkv probiert.

Mit:

Code: Alles auswählen

 ffmpeg -y -vsync 0 -i FRAU_HOLLE.mkv -c:a copy -c:v libx264 -b:v 5M output2.mp4 
frame=56736 fps= 89 q=-1.0 Lsize= 1501961kB time=00:39:26.40 bitrate=5199.5kbits/s speed=3.71x


Mit:

Code: Alles auswählen

 ffmpeg -y -vsync 0 -hwaccel cuda -i FRAU_HOLLE.mkv -c:a copy -c:v h264_nvenc -b:v 5M output2.mp4 
frame=56736 fps=437 q=21.0 Lsize= 1499543kB time=00:39:26.40 bitrate=5191.1kbits/s speed=18.2x
Jedoch bei nur 42% GPU Load.

Ich denke wir sind schon nah dran, das schwerste scheint ja schon mal geschafft zu sein :D

MaGe
Beiträge: 1717
Registriert: 01.06.2014 17:12:16

Re: NVIDIA Encoding klappt nicht.

Beitrag von MaGe » 20.08.2021 21:34:37

Knogle hat geschrieben: ffmpeg -y -vsync 0 -hwaccel cuda -i FRAU_HOLLE.mkv -c:a copy -c:v h264_nvenc -b:v 5M output2.mp4
Das fps= 89 ist zu wenig, :evil: ( ich gehe von 1280x720 aus ) bei 6000 Cores das müßte 2000 fps :mrgreen: und höher sein,
das schmerzt es sollte freude mache,time is cash :wink:

Meine Meinung
ffmeg deinstalieren
nv-codec-headers deinstalieren
nvidia deinstalieren

Und neu anfangen

1 Nvidia / nvidia-cuda-toolkit
2 nv-codec-headers kompilieren
3 ffmpeg kompilieren

Frage:
wo kompilierts du die sachen

Ich mache sowas in der Virtualbox




gruss MaGe
Wir müssen uns vor der Klimaerwärmung nicht fürchten.
Uns rottet die soziale Kälte viel früher aus.

Knogle
Beiträge: 465
Registriert: 06.05.2016 19:29:00
Lizenz eigener Beiträge: MIT Lizenz

Re: NVIDIA Encoding klappt nicht.

Beitrag von Knogle » 21.08.2021 10:41:45

Hey danke dir, gerne werde ich das mal probieren :)
Kannst du vielleicht ein Vergleichsvideo zur Verfügung stellen damit wir vergleichen können?
Meine Version der FRAU HOLLE war in 2K :D


Hier nochmal der Vergleich:

Ohne GPU:

frame=56736 fps= 89

Mit GPU:

frame=56736 fps=437

MaGe
Beiträge: 1717
Registriert: 01.06.2014 17:12:16

Re: NVIDIA Encoding klappt nicht.

Beitrag von MaGe » 21.08.2021 15:47:56

Knogle hat geschrieben: Kannst du vielleicht ein Vergleichsvideo zur Verfügung stellen damit wir vergleichen können?
Auf die schnelle ist mir nur Sintel eingfallen
sintel-2048-surround.mp4 - 296,28M - bitrate: 2798 kb/s - 00:14:48.06

Direktdownload:

Code: Alles auswählen

 wget http://peach.themazzone.com/durian/movies/sintel-2048-surround.mp4 
Meine eingabe.

Code: Alles auswählen

 time ffmpeg -y -hwaccel cuda -hwaccel_output_format cuda -c:v h264_cuvid -i sintel-2048-surround.mp4 -f matroska -map 0:v? -c:v h264_nvenc -preset:v medium -profile:v high -b:v 1000k -tune:v hq -temporal-aq 1 -rc-lookahead 22 -dpb_size:v 3 -bf:v 2 -b_ref_mode:v middle -map 0:a? -c:a copy -sn sintel-2048-surround-medi.mkv 
frame=21312 fps=476



gruss MaGe
Wir müssen uns vor der Klimaerwärmung nicht fürchten.
Uns rottet die soziale Kälte viel früher aus.

Knogle
Beiträge: 465
Registriert: 06.05.2016 19:29:00
Lizenz eigener Beiträge: MIT Lizenz

Re: NVIDIA Encoding klappt nicht.

Beitrag von Knogle » 21.08.2021 17:03:45

MaGe hat geschrieben: ↑ zum Beitrag ↑
21.08.2021 15:47:56
Knogle hat geschrieben: Kannst du vielleicht ein Vergleichsvideo zur Verfügung stellen damit wir vergleichen können?
Auf die schnelle ist mir nur Sintel eingfallen
sintel-2048-surround.mp4 - 296,28M - bitrate: 2798 kb/s - 00:14:48.06

Direktdownload:

Code: Alles auswählen

 wget http://peach.themazzone.com/durian/movies/sintel-2048-surround.mp4 
Meine eingabe.

Code: Alles auswählen

 time ffmpeg -y -hwaccel cuda -hwaccel_output_format cuda -c:v h264_cuvid -i sintel-2048-surround.mp4 -f matroska -map 0:v? -c:v h264_nvenc -preset:v medium -profile:v high -b:v 1000k -tune:v hq -temporal-aq 1 -rc-lookahead 22 -dpb_size:v 3 -bf:v 2 -b_ref_mode:v middle -map 0:a? -c:a copy -sn sintel-2048-surround-medi.mkv 
frame=21312 fps=476



gruss MaGe
Danke dir! Sieht glaube ich schlecht aus haha.

frame=21312 fps=458

Hat eventuell llibnvidia-encode1/now 470.57.02-2 amd64 [installed,local] was danut zutun? Weil ohne das geht das encoden nicht, kann ich dieses Paket eventuell auch mal selber compilen? Bzw. welches Git Repo steckt dahinter?

MaGe
Beiträge: 1717
Registriert: 01.06.2014 17:12:16

Re: NVIDIA Encoding klappt nicht.

Beitrag von MaGe » 22.08.2021 09:18:48

Knogle hat geschrieben: Hat eventuell llibnvidia-encode1/now 470.57.02-2 amd64 [installed,local] was danut zutun? [...]
Das glaube ich nicht du schreibst ja dass es ohne in nicht geht.

Dein ffmpeg arbeitet nur zu 50% mit der Hardware

Frage, ist das Paket ( libnvcuvid1 ) NVIDIA CUDA Video Decoder runtime library bei dir installiert


gruss MaGe
Wir müssen uns vor der Klimaerwärmung nicht fürchten.
Uns rottet die soziale Kälte viel früher aus.

Knogle
Beiträge: 465
Registriert: 06.05.2016 19:29:00
Lizenz eigener Beiträge: MIT Lizenz

Re: NVIDIA Encoding klappt nicht.

Beitrag von Knogle » 22.08.2021 15:12:49

MaGe hat geschrieben: ↑ zum Beitrag ↑
22.08.2021 09:18:48
Knogle hat geschrieben: Hat eventuell llibnvidia-encode1/now 470.57.02-2 amd64 [installed,local] was danut zutun? [...]
Das glaube ich nicht du schreibst ja dass es ohne in nicht geht.

Dein ffmpeg arbeitet nur zu 50% mit der Hardware

Frage, ist das Paket ( libnvcuvid1 ) NVIDIA CUDA Video Decoder runtime library bei dir installiert


gruss MaGe
Jo, genau das ist mir auch aufgefallen. Die GPU Auslastung liegt bei maximal 50%.
libnvcuvid ist auch in der Version 470.57.02-2 installiert

Meinste es ist mal sinvoll irgendwas davon in einer Ubuntu VM z.B. zu compilen?

EDIT: Mit ffmpeg in einer frischen Debian SID Installation gebaut, das gleiche Problem.

wanne
Moderator
Beiträge: 7465
Registriert: 24.05.2010 12:39:42

Re: NVIDIA Encoding klappt nicht.

Beitrag von wanne » 23.08.2021 20:47:25

Knogle hat geschrieben: ↑ zum Beitrag ↑
20.08.2021 14:06:36
Der Command hier verreckt irgendwie immer.

Code: Alles auswählen

ffmpeg -y -vsync 0 -hwaccel cuda -hwaccel_output_format cuda -i 2021-07-15\ 20-11-48.mkv -c:a copy -c:v h264_nvenc -b:v 5M output2.mp4
Nur nochmal zur Wiederholung:
Ganz grundsätzlich gilt: Du tust decodieren, eventuell irgend welche Zwischenoperationen (Filter) (skalieren/Farbe ändern/weichzeichnen) und encodieren.
Ersteres gibst du vor -i an das mittlere bei -vf und das letzte vor dem Output.

Jetzt kann man das auf drei verschiedene Art und weisen machen:
Man schreibt Code für die CPU. (x86_64, ARM, ...) Man schreibt Code für die GPGPU (OpenCL ...) Oder man nutzt spezielle Hardware (NVENC/NVDEC), die meist auch in der Grafikkarte hängt. (In Wahrheit sind alles bis auf das erste immer Mischformen aus allen Varianten.)
Hier schön aufgezeichnet:
https://developer.nvidia.com/blog/wp-co ... ured-2.png

Für die Nutzung werden meist irgend welche Libs mit APIs genutzt. Und da wirds dann lustig, weil du nur noch bedingt weist, was unter der Haube passiert. – DirectX oder gstreamer können alle drei Varianten... CUDA ist für seine GPGPU-Möglichkeiten bekannt. NVDEC/NVDEC ist aber eben auch Bestandteil von CUDA – entsprechend meint -hwaccel cuda eben nvdec und nicht die Nutzung der GPGPU... Daneben wird das Bild beschönigt sein. Auf der Grafikkarte werden eventuell nvdec und CUDA-Cores die selben Ressourcen nutzen.

Aber von der Idee Her -hwaccel cuda sorgt dafür das per nvdec decodiert wird. -c:v h264_nvenc dafür, dass per nvenc encodiert wird -vf scale_npp das auf der GPGPU skaliert wird und -c:v h264_cuvid (vor dem -i) das auf den CUDA-Cores decodiert wird.

Meistens ist es IMHO eher ungeschickt Grafikkarte zum decoding zu nutzen. Die CPU ist mit der Ausnahme von einigen sehr speziellen h.265-szenarien eh schneller als alles, was irgend wie hinten dran kommt. (Platte, encoding...) Macht aber ganz gerne ärger. Es gibt aber einen sehr speziellen Fall:
Die Grafikkarte kann nur auf ihrem VMEM und PCIe zugreifen, während die CPU den RAM nutzt und keinen Zugriff auf den VMEM hat. Entsprechend musst du zwischen denen per PCIe (der deutlich langsamer als der VMEM ist) per CPU hin und her transferieren. Oft genug ist das hin und her transferieren das Bottleneck.

Wenn du also auf der GPU dekodierst eh nicht skalierst/filterst und auf der GPU encodierst kannst du deine Daten gleich im VMEM behalten statt hin und her zu transferieren. Das machst du mit -hwaccel_output_format cuda. Ähnliches hat man, wenn man direkt an den Bildschirm ausgeben will.

Jo, genau das ist mir auch aufgefallen. Die GPU Auslastung liegt bei maximal 50%.
Ein Kern der auf PCIe (oder was anderes) wartet kann nichts mehr anderes tun und gilt deswegen als ausgelastet. Vernünftige Software nutzt deswegen nicht mehr als einen CPU-Kern um auf den PCIe zu schreiben, damit die anderen was vernünftiges machen können. (Das ist btw. die Idee hinter Hyperthreadding. Während der eine virtuelle Kern z.B. auf den PCIe wartet kann der andere Rechnen.)
Bei den Nvidia-GPUs ist das meist dümmer implementiert und nur 2 oder 3 Kerne stimmen sich ab. Dann wartet die Hälfte oder ⅓, ⅕ oder so. – Entsprechend sehen die Auslastungen aus.

Hier lasse ich die CPU gar nichts machen, außer hin und her zu kopieren. (Und zwar maximal dumm zuerst zum decodeiren zur GPU und zurück und dann erneut fürs encodieren das selbe Spiel. Und da das Viedeo in der Mitte unkomprimiert ist, sind das an der Stelle enorme Datenmengen.)

Code: Alles auswählen

$ time ffmpeg -t 60 -y -c:v h264_cuvid -i /media/data/Film/tearsofsteel_4k.mov -an -c:v h264_nvenc -b:v 5M output2.mp4
[…]
real    0m12.470s
user    0m9.722s
sys     0m1.050s

$ calc 1.050+9.722
        10.772
=> Es wird 1.698s gerechnet und 10.772s hin und her transferiert.
Passend sieht auch die Auslastung auf den CUDA-Cores aus:

Code: Alles auswählen

$ nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.91.03    Driver Version: 460.91.03    CUDA Version: 11.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  GeForce GTX 960     On   | 00000000:01:00.0  On |                  N/A |
|  0%   50C    P2    44W / 130W |    567MiB /  2001MiB |     47%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
Zum Vergleich: Wenn ich auf der CPU Decodiere:

Code: Alles auswählen

time ffmpeg -t 60 -y -i /media/data/Film/tearsofsteel_4k.mov -an -c:v h264_nvenc -b:v 5M outpu2.mp4
[…]
real    0m15.691s
user    1m38.455s
sys     0m1.201s

calc "(60+38.455+10.77)/8"
        13.653125
Hier sind wirklich die meiste Zeit 8 Kerne beschäftigt. Dafür langweilt sich die GPU, weil die CPU nicht schnell genug nachschieben kann:

Code: Alles auswählen

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.91.03    Driver Version: 460.91.03    CUDA Version: 11.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  GeForce GTX 960     On   | 00000000:01:00.0  On |                  N/A |
|  0%   47C    P2    40W / 130W |    293MiB /  2001MiB |     23%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
Und jetzt eben die optimale Variante, die den unkomprimierten Stream nicht kopiert wird:

Code: Alles auswählen

time ffmpeg -t 60 -y -hwaccel cuda -hwaccel_output_format cuda -i /media/data/Film/tearsofsteel_4k.mov -an -c:v h264_nvenc -b:v 5M outpu2.mp4

real    0m12.182s
user    0m1.980s
sys     0m0.836s

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.91.03    Driver Version: 460.91.03    CUDA Version: 11.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  GeForce GTX 960     On   | 00000000:01:00.0  On |                  N/A |
|  0%   48C    P2    45W / 130W |    654MiB /  2001MiB |      7%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
CPU und CUDA-Cores langweilen sich weil wirklich nur die spezialisierte Hardware arbeitet. Das ist dann auch etwas schneller. (Der Unterschied hält sich aber in Grenzen, weil das encodieren bei mir halt der dominierende Schritt ist. Bei deiner Karte dürfte das etwas mehr aus machen.)
=> Wenig CUDA-Core-Auslastung ist wünschenswert!

Ich verstehe nicht so ganz warum du mit dem Selbstkompilierten Zeug rum machst. Beim h.264-Encoding hat sich in den letzten paar jahren wirklich nichts mehr gemacht. Wenn du den ffmpeg aus den Repos mit dem cuda aus den Repos mit den Kernelmodulen aus den Repos benutzt hast du keine Probleme. AmEnde will der ffmpeg den du da zusammen compiliert hast nicht mit dem CUDA aus stable. Und dnach hast du inkompatibilitäten zwischen Treiber und cuda. Dazu hat man doch ne Distribution, damit die sich um solche kompatibilitäten kümmert.
Knogle hat geschrieben: ↑ zum Beitrag ↑
20.08.2021 14:06:36

Code: Alles auswählen

Impossible to convert between the formats supported by the filter 'Parsed_null_0' and the filter 'auto_scale_0'
Error reinitializing filters!
Failed to inject frame into filter network: Function not implemented
Error while processing the decoded data for stream #0:0
Conversion failed!
Im Normalfall passiert sowas, wenn du irgend welchen Output produzierst, den nvenc verstehen kann. (Falscher Farbraum...)

Wenn man sich aber das vorhergehende anguckt:

Code: Alles auswählen

Error while decoding stream #0:0: Invalid data found when processing input
[h264 @ 0x565039447500] No decoder surfaces left
Klingt das eher so, als ob dein nvdec nicht mit dem mkv zurecht kommt. Da du mit 2 verschiedenen Files probleme hast ist vermutlich irgend was mit dem nvdec kaputt... Probiere doch mal wirklich TOS Sintel oder BBB, um fehler im Ausgangsmaterial auszuschließen. Der NVDEC ist da empfindlich. Ich würde auf SW-Decoding umsteigen. IMHO den aufwand nicht wert.


Knogle hat geschrieben: ↑ zum Beitrag ↑
20.08.2021 14:06:36
Ich glaube VAAPI gibt es bei NVIDIA nicht oder?
Angeblich schon. ffmpeg hat die Combo aber nie supported.
rot: Moderator wanne spricht, default: User wanne spricht.

Antworten