[Cin] Testing Nvidia Nvenc encoding

Андрей Спицын spitsyn.andrey at gmail.com
Fri Dec 20 17:27:48 CET 2024


>Cingg then should supports NVENC via some dynamic linked external Nvidia
lib

Nvenc supported in ffmpeg, but you need to add nvidia headers and add a
flag during ffmpeg configuration step.

The friend of mine tested davinci and ffmpeg encoding on nvidia card on
windows. The davinci is 7 times faster compared to ffmpeg. In both cases
nvenc is used and card used by 100%. I don't know the reason of this.

Best regards,
Andrey


пт, 20 дек. 2024 г., 19:20 Terje J. Hanssen via Cin <
cin at lists.cinelerra-gg.org>:

> Continued and extracted from
> [Cin] Video accelerators support, builds and use
> https://lists.cinelerra-gg.org/pipermail/cin/2024-December/009226.html
>
> Den 12.12.2024 00:54, skrev Terje J. Hanssen:
>
>
> Den 11.12.2024 23:56, skrev Andrew Randrianasulu:
>
>
> чт, 12 дек. 2024 г., 00:43 Terje J. Hanssen via Cin <
> cin at lists.cinelerra-gg.org>:
>
>> To clarify some pieces once again, I put up some basic statements or
>> questions:
>>
>> ..........snip
>
>
>>> So what happened when adding oneVPL (qsv) support to the build system;
>>> dynamic linked to system or static added embedded into the build?
>>>
>>
>> dynamic
>>
>> .....snip
>>
>> Could in principle similar methods be extended to include broader video
>>> acceleration support for AMD/amf and NVIDIA/nvenc?
>>>
>>
>> nvenc already supported, I think? At some point I tried it with GF710 on
>> livedvd and it was working for me. try to test it if you have proprietary
>> nvidia drivers.
>>
>
> Apparently Cingg then should supports NVENC via some dynamic linked
> external Nvidia lib, equivalent to what we did for for QSV via oneVPL
> support.
> While h264_nvenc.mp4 rendering works, h265_nvenc.mp4 fails with the
> following errors, see detail below:
>
> [hevc_nvenc @ 0x7ff79c015640] No capable devices found
> FFMPEG::open_encoder  err: Generic error in an external library
>
>
>
> Yes, seemingly:
> Cin/bin/ffmpeg/video> ls *nvenc*
> h264_nvenc.mp4  h264_nvenc.qt  h265_nvenc.mp4
>
>
> NVENC Presets
>
> cat h264_nvenc.mp4
> mp4 h264_nvenc
> # encode for nvidia graphics hw only
> preset medium
> profile main
>
> cat h265_nvenc.mp4
> mp4 hevc_nvenc
> # encode for nvidia graphics hw only
> preset medium
> profile main
>
>
> Maybe I can do an attempt later, if I get life in the old GeForce GTX 960
> in my Skylake workstation.
>
>
> Setup
> ----------
> Booted BIOS and checked that the integrated Intel gpu and multimonitor
> setup were  enabled.
> Installed the suse-prime package for nvidia/intel gpu selection (for
> NVIDIA optimus laptops with bbswitch support) and could then run the command
>
> prime-select on-demand
>
> and verified that both the Intel and Nvidia drivers were available
>
> inxi -G
> Graphics:
>   Device-1: Intel HD Graphics 530 driver: i915 v: kernel
>   Device-2: NVIDIA GM206 [GeForce GTX 960] driver: nvidia v: 550.135
>   Display: wayland server: X.org v: 1.21.1.14 with: Xwayland v: 24.1.4
>     compositor: gnome-shell v: 47.2 driver: X: loaded: modesetting,nvidia
>     unloaded: fbdev,vesa dri: iris gpu: i915 resolution: 1920x1080~60Hz
>   API: OpenGL v: 4.6 vendor: intel mesa v: 24.3.1 renderer: Mesa Intel HD
>     Graphics 530 (SKL GT2)
>   API: EGL Message: EGL data requires eglinfo. Check --recommends.
>
> ==============
>
>
> Test h264_nvenc.mp4
> -------------------
> OK
>
> ./CinGG-20241120-x86_64.AppImage
> Cinelerra Infinity - built: Nov 20 2024 22:06:05
>
> Loads hdv09_04.m27
> Shift-R
> mp4
> h264_nvenc (video preset)
> pixels: yuv420p (default)
>
> ** rendered 5972 frames in 27.391 secs, 218.028 fps
>
> ffprobe -hide_banner hdv09_04_h264_nvenc_yuv420p.mp4
>   Stream #0:0[0x1](und): Video: h264 (Main) (avc1 / 0x31637661),
> yuvj420p(pc, smpte170m/unknown/unknown), 1440x1080 [SAR 4:3 DAR 16:9], 2156
> kb/s, 25 fps, 25 tbr, 12800 tbn (default)
>
> -------
>
> Tried also h264_nvenc with
> pixels: nv12
> which for slowed down to 45% speed !?
>
> Render::render_single: Session finished.
> ** rendered 5972 frames in 60.368 secs, 98.927 fps
>
> ffprobe -hide_banner hdv09_04_h264_nvenc_nv12.mp4
>   Stream #0:0[0x1](und): Video: h264 (Main) (avc1 / 0x31637661),
> yuvj420p(pc, smpte170m/unknown/unknown), 1440x1080 [SAR 4:3 DAR 16:9], 2154
> kb/s, 25 fps, 25 tbr, 12800 tbn (default)
>
> ===================
>
> Test h265_nvenc.mp4
> -------------------
>
> Did not render, neither with pixels yuv420p nor nv12:
> FFMPEG::open_encoder  err: Generic error in an external library
>
> [hevc_nvenc @ 0x7ff79c015640] No capable devices found
> FFMPEG::open_encoder  err: Generic error in an external library
> int FFMPEG::open_encoder(const char*, const char*):
> open failed
> hevc_nvenc:/run/media/terje/video/hdv09_04_h265_nvenc_yuv420p.mp4
> Render::render_single: Session finished.
>
> ===================
>
> GeForce GTX 960 (GM206) should be capable to manage NVENC h265/hevc YUV
> 420 encoding
> https://en.wikipedia.org/wiki/Nvidia_NVENC#Third_generation,_Maxwell_GM20x
> https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new
>
> Tested hevc_nvenc full transcoding with FFmpeg 7.1
>
> ffmpeg -hide_banner -hwaccel cuda -hwaccel_output_format cuda -i
> hdv09_04.m2t -c:v hevc_nvenc hdv09_04_ff_hevc_nvenc.mp4
>
> frame= 5963 fps=270 q=34.0 Lsize=   64316KiB time=00:03:58.77
> bitrate=2206.6kbits/s speed=10.8x
> [aac @ 0x55a38d4c4d40] Qavg: 488.890
>
> ------------------
>
> ffprobe -hide_banner hdv09_04_ff_hevc_nvenc.mp4
> Stream #0:0[0x1](und): Video: hevc (Main) (hev1 / 0x31766568), yuv420p(tv,
> bt709, top coded first (swapped)), 1440x1080 [SAR 4:3 DAR 16:9], 2074 kb/s,
> 24.99 fps, 25 tbr, 12800 tbn (default)
>
>
>
>
>
>
> --
> Cin mailing list
> Cin at lists.cinelerra-gg.org
> https://lists.cinelerra-gg.org/mailman/listinfo/cin
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20241220/3bda65bc/attachment-0001.htm>


More information about the Cin mailing list