[FFmpeg-user] ffmpeg nvenc without cuda

Dennis Mungai dmngaie at gmail.com
Sat Sep 21 18:46:51 EEST 2019


On Sat, 21 Sep 2019 at 18:35, Johanna Nilson <jnils75 at gmail.com> wrote:
>
> Thank you for your answer. Now I've tried:
>
> nvidia-smi -g 0 -fdm 1
> Return:
> Unable to set driver model for GPU 00000000:00:10.0: Not Supported
> Treating as warning and moving on.
> All done.
>
> nvidia-smi -g 0 -dm 1
> Return:
> Unable to set driver model for GPU 00000000:00:10.0: TCC can't be enabled
> for device with active display.
> Treating as warning and moving on.
> All done.
>
> ffmpeg -y -thread_queue_size 5120 -use_wallclock_as_timestamps 1 -fflags
> +genpts -loglevel debug -vsync 1 -f gdigrab -draw_mouse 0 -framerate 60 -i
> desktop -c:v h264_nvenc -profile:v high -rc:v cbr_ld_hq -r:v 60 -g:v 120
> -b:v 8000k -minrate:v 8000k -maxrate:v 8000k -bufsize:v 8000k -an
> -flush_packets 0 -bsf:v h264_mp4toannexb -muxrate 16000k -pcr_period 20
> -mpegts_flags +resend_headers -mpegts_start_pid 0x15 -t 240 -f mpegts udp://
> 192.168.1.99:12345
> Return:
> ffmpeg version 4.2 Copyright (c) 2000-2019 the FFmpeg developers
>   built with gcc 9.1.1 (GCC) 20190807
>   configuration: --enable-gpl --enable-version3 --enable-sdl2
> --enable-fontconfi
> g --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d
> --enable-libb
> luray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb
> --enab
> le-libopencore-amrwb --enable-libopenjpeg --enable-libopus
> --enable-libshine --e
> nable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame
> --enable
> -libvpx --enable-libwavpack --enable-libwebp --enable-libx264
> --enable-libx265 -
> -enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp
> --enab
> le-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa
> --en
> able-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf
> --en
> able-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc
> --enable-nvdec --e
> nable-dxva2 --enable-avisynth --enable-libopenmpt
>   libavutil      56. 31.100 / 56. 31.100
>   libavcodec     58. 54.100 / 58. 54.100
>   libavformat    58. 29.100 / 58. 29.100
>   libavdevice    58.  8.100 / 58.  8.100
>   libavfilter     7. 57.100 /  7. 57.100
>   libswscale      5.  5.100 /  5.  5.100
>   libswresample   3.  5.100 /  3.  5.100
>   libpostproc    55.  5.100 / 55.  5.100
> Splitting the commandline.
> Reading option '-y' ... matched as option 'y' (overwrite output files) with
> argu
> ment '1'.
> Reading option '-thread_queue_size' ... matched as option
> 'thread_queue_size' (s
> et the maximum number of queued packets from the demuxer) with argument
> '5120'.
> Reading option '-use_wallclock_as_timestamps' ... matched as AVOption
> 'use_wallc
> lock_as_timestamps' with argument '1'.
> Reading option '-fflags' ... matched as AVOption 'fflags' with argument
> '+genpts
> '.
> Reading option '-loglevel' ... matched as option 'loglevel' (set logging
> level)
> with argument 'debug'.
> Reading option '-vsync' ... matched as option 'vsync' (video sync method)
> with a
> rgument '1'.
> Reading option '-f' ... matched as option 'f' (force format) with argument
> 'gdig
> rab'.
> Reading option '-draw_mouse' ... matched as AVOption 'draw_mouse' with
> argument
> '0'.
> Reading option '-framerate' ... matched as AVOption 'framerate' with
> argument '6
> 0'.
> Reading option '-i' ... matched as input url with argument 'desktop'.
> Reading option '-c:v' ... matched as option 'c' (codec name) with argument
> 'h264
> _nvenc'.
> Reading option '-profile:v' ... matched as option 'profile' (set profile)
> with a
> rgument 'high'.
> Reading option '-rc:v' ... matched as AVOption 'rc:v' with argument
> 'cbr_ld_hq'.
>
> Reading option '-r:v' ... matched as option 'r' (set frame rate (Hz value,
> fract
> ion or abbreviation)) with argument '60'.
> Reading option '-g:v' ... matched as AVOption 'g:v' with argument '120'.
> Reading option '-b:v' ... matched as option 'b' (video bitrate (please use
> -b:v)
> ) with argument '8000k'.
> Reading option '-minrate:v' ... matched as AVOption 'minrate:v' with
> argument '8
> 000k'.
> Reading option '-maxrate:v' ... matched as AVOption 'maxrate:v' with
> argument '8
> 000k'.
> Reading option '-bufsize:v' ... matched as AVOption 'bufsize:v' with
> argument '8
> 000k'.
> Reading option '-an' ... matched as option 'an' (disable audio) with
> argument '1
> '.
> Reading option '-flush_packets' ... matched as AVOption 'flush_packets'
> with arg
> ument '0'.
> Reading option '-bsf:v' ... matched as option 'bsf' (A comma-separated list
> of b
> itstream filters) with argument 'h264_mp4toannexb'.
> Reading option '-muxrate' ... matched as AVOption 'muxrate' with argument
> '16000
> k'.
> Reading option '-pcr_period' ... matched as AVOption 'pcr_period' with
> argument
> '20'.
> Reading option '-mpegts_flags' ... matched as AVOption 'mpegts_flags' with
> argum
> ent '+resend_headers'.
> Reading option '-mpegts_start_pid' ... matched as AVOption
> 'mpegts_start_pid' wi
> th argument '0x15'.
> Reading option '-t' ... matched as option 't' (record or transcode
> "duration" se
> conds of audio/video) with argument '240'.
> Reading option '-f' ... matched as option 'f' (force format) with argument
> 'mpeg
> ts'.
> Reading option 'udp://192.168.1.99:12345' ... matched as output url.
> Finished splitting the commandline.
> Parsing a group of options: global .
> Applying option y (overwrite output files) with argument 1.
> Applying option loglevel (set logging level) with argument debug.
> Applying option vsync (video sync method) with argument 1.
> Successfully parsed a group of options.
> Parsing a group of options: input url desktop.
> Applying option thread_queue_size (set the maximum number of queued packets
> from
>  the demuxer) with argument 5120.
> Applying option f (force format) with argument gdigrab.
> Successfully parsed a group of options.
> Opening an input file: desktop.
> [gdigrab @ 00000000005c5840] Capturing whole desktop as 1920x1080x32 at
> (0,0)
> [gdigrab @ 00000000005c5840] Probe buffer size limit of 5000000 bytes
> reached
> [gdigrab @ 00000000005c5840] Stream #0: not enough frames to estimate rate;
> cons
> ider increasing probesize
> Input #0, gdigrab, from 'desktop':
>   Duration: N/A, start: 1569079540.013671, bitrate: 3981337 kb/s
>     Stream #0:0, 1, 1/1000000: Video: bmp, 1 reference frame, bgra,
> 1920x1080, 0
> /1, 3981337 kb/s, 60 fps, 1000k tbr, 1000k tbn, 1000k tbc
> Successfully opened the file.
> Parsing a group of options: output url udp://192.168.1.99:12345.
> Applying option c:v (codec name) with argument h264_nvenc.
> Applying option profile:v (set profile) with argument high.
> Applying option r:v (set frame rate (Hz value, fraction or abbreviation))
> with a
> rgument 60.
> Applying option b:v (video bitrate (please use -b:v)) with argument 8000k.
> Applying option an (disable audio) with argument 1.
> Applying option bsf:v (A comma-separated list of bitstream filters) with
> argumen
> t h264_mp4toannexb.
> Applying option t (record or transcode "duration" seconds of audio/video)
> with a
> rgument 240.
> Applying option f (force format) with argument mpegts.
> Successfully parsed a group of options.
> Opening an output file: udp://192.168.1.99:12345.
> [udp @ 00000000005ea200] No default whitelist set
> Successfully opened the file.
> Stream mapping:
>   Stream #0:0 -> #0:0 (bmp (native) -> h264 (h264_nvenc))
> Press [q] to stop, [?] for help
> cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if
> it o
> ccurs once at the start per stream)
> detected 4 logical cores
> [graph 0 input from stream 0:0 @ 00000000005fba40] Setting 'video_size' to
> value
>  '1920x1080'
> [graph 0 input from stream 0:0 @ 00000000005fba40] Setting 'pix_fmt' to
> value '2
> 8'
> [graph 0 input from stream 0:0 @ 00000000005fba40] Setting 'time_base' to
> value
> '1/1000000'
> [graph 0 input from stream 0:0 @ 00000000005fba40] Setting 'pixel_aspect'
> to val
> ue '0/1'
> [graph 0 input from stream 0:0 @ 00000000005fba40] Setting 'sws_param' to
> value
> 'flags=2'
> [graph 0 input from stream 0:0 @ 00000000005fba40] Setting 'frame_rate' to
> value
>  '60/1'
> [graph 0 input from stream 0:0 @ 00000000005fba40] w:1920 h:1080
> pixfmt:bgra tb:
> 1/1000000 fr:60/1 sar:0/1 sws_param:flags=2
> [format @ 00000000005fcb00] Setting 'pix_fmts' to value
> 'yuv420p|nv12|p010le|yuv
> 444p|p016le|yuv444p16le|bgr0|rgb0|cuda|d3d11'
> [auto_scaler_0 @ 00000000005ff740] Setting 'flags' to value 'bicubic'
> [auto_scaler_0 @ 00000000005ff740] w:iw h:ih flags:'bicubic' interl:0
> [format @ 00000000005fcb00] auto-inserting filter 'auto_scaler_0' between
> the fi
> lter 'Parsed_null_0' and the filter 'format'
> [AVFilterGraph @ 00000000005e7140] query_formats: 5 queried, 3 merged, 1
> already
>  done, 0 delayed
> [auto_scaler_0 @ 00000000005ff740] picking rgb0 out of 8 ref:bgra alpha:1
> [swscaler @ 0000000000605fc0] Forcing full internal H chroma due to input
> having
>  non subsampled chroma
> [auto_scaler_0 @ 00000000005ff740] w:1920 h:1080 fmt:bgra sar:0/1 -> w:1920
> h:10
> 80 fmt:rgb0 sar:0/1 flags:0x4
> [h264_nvenc @ 00000000005cbb40] Loaded lib: nvcuda.dll
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuInit
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuDeviceGetCount
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuDeviceGet
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuDeviceGetAttribute
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuDeviceGetName
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuDeviceComputeCapability
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuCtxCreate_v2
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuCtxSetLimit
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuCtxPushCurrent_v2
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuCtxPopCurrent_v2
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuCtxDestroy_v2
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuMemAlloc_v2
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuMemAllocPitch_v2
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuMemsetD8Async
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuMemFree_v2
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuMemcpy2D_v2
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuMemcpy2DAsync_v2
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuGetErrorName
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuGetErrorString
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuStreamCreate
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuStreamQuery
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuStreamSynchronize
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuStreamDestroy_v2
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuStreamAddCallback
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuEventCreate
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuEventDestroy_v2
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuEventSynchronize
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuEventQuery
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuEventRecord
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuLaunchKernel
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuModuleLoadData
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuModuleUnload
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuModuleGetFunction
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuTexObjectCreate
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuTexObjectDestroy
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuGLGetDevices_v2
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuGraphicsGLRegisterImage
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuGraphicsUnregisterResource
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuGraphicsMapResources
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuGraphicsUnmapResources
> [h264_nvenc @ 00000000005cbb40] Loaded sym:
> cuGraphicsSubResourceGetMappedArray
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuDeviceGetUuid
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuImportExternalMemory
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuDestroyExternalMemory
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuExternalMemoryGetMappedBuffer
> [h264_nvenc @ 00000000005cbb40] Loaded sym:
> cuExternalMemoryGetMappedMipmappedAr
> ray
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuMipmappedArrayGetLevel
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuMipmappedArrayDestroy
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuImportExternalSemaphore
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuDestroyExternalSemaphore
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuSignalExternalSemaphoresAsync
> [h264_nvenc @ 00000000005cbb40] Loaded sym: cuWaitExternalSemaphoresAsync
> [h264_nvenc @ 00000000005cbb40] Loaded lib: nvEncodeAPI64.dll
> [h264_nvenc @ 00000000005cbb40] Loaded sym: NvEncodeAPICreateInstance
> [h264_nvenc @ 00000000005cbb40] Loaded sym:
> NvEncodeAPIGetMaxSupportedVersion
> [h264_nvenc @ 00000000005cbb40] Loaded Nvenc version 9.0
> [h264_nvenc @ 00000000005cbb40] Nvenc initialized successfully
> [h264_nvenc @ 00000000005cbb40] dl_fn->cuda_dl->cuInit(0) failed ->
> CUDA_ERROR_NO_DEVICE: no CUDA-capable device is detected
> [h264_nvenc @ 00000000005cbb40] Nvenc unloaded
> Error initializing output stream 0:0 -- Error while opening encoder for
> output s
> tream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or
> height
> [AVIOContext @ 00000000005fabc0] Statistics: 0 seeks, 0 writeouts
> Conversion failed!
>
> f0 -y -thread_queue_size 5120 -fflags +genpts -loglevel debug -vsync 1
> -hwaccel dxva2 -hwaccel_device 0 -f gdigrab -draw_mouse 0 -framerate 60 -i
> desktop -c:v h264_nvenc -profile:v high -preset:v llhq -rc:v cbr_ld_hq -r:v
> 60 -g:v 120 -b:v 8000k -minrate:v 8000k -maxrate:v 8000k -bufsize:v 8000k
> -gpu:v 0 -an -flush_packets 0 -bsf:v h264_mp4toannexb -muxrate 16000k
> -pcr_period 20 -mpegts_flags +resend_headers -f mpegts udp://
> 192.168.1.99:12345
> Return:
> ffmpeg version 4.2 Copyright (c) 2000-2019 the FFmpeg developers
>   built with gcc 9.1.1 (GCC) 20190807
>   configuration: --enable-gpl --enable-version3 --enable-sdl2
> --enable-fontconfi
> g --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d
> --enable-libb
> luray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb
> --enab
> le-libopencore-amrwb --enable-libopenjpeg --enable-libopus
> --enable-libshine --e
> nable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame
> --enable
> -libvpx --enable-libwavpack --enable-libwebp --enable-libx264
> --enable-libx265 -
> -enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp
> --enab
> le-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa
> --en
> able-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf
> --en
> able-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc
> --enable-nvdec --e
> nable-dxva2 --enable-avisynth --enable-libopenmpt
>   libavutil      56. 31.100 / 56. 31.100
>   libavcodec     58. 54.100 / 58. 54.100
>   libavformat    58. 29.100 / 58. 29.100
>   libavdevice    58.  8.100 / 58.  8.100
>   libavfilter     7. 57.100 /  7. 57.100
>   libswscale      5.  5.100 /  5.  5.100
>   libswresample   3.  5.100 /  3.  5.100
>   libpostproc    55.  5.100 / 55.  5.100
> Splitting the commandline.
> Reading option '-y' ... matched as option 'y' (overwrite output files) with
> argu
> ment '1'.
> Reading option '-thread_queue_size' ... matched as option
> 'thread_queue_size' (s
> et the maximum number of queued packets from the demuxer) with argument
> '5120'.
> Reading option '-fflags' ... matched as AVOption 'fflags' with argument
> '+genpts
> '.
> Reading option '-loglevel' ... matched as option 'loglevel' (set logging
> level)
> with argument 'debug'.
> Reading option '-vsync' ... matched as option 'vsync' (video sync method)
> with a
> rgument '1'.
> Reading option '-hwaccel' ... matched as option 'hwaccel' (use HW
> accelerated de
> coding) with argument 'dxva2'.
> Reading option '-hwaccel_device' ... matched as option 'hwaccel_device'
> (select
> a device for HW acceleration) with argument '0'.
> Reading option '-f' ... matched as option 'f' (force format) with argument
> 'gdig
> rab'.
> Reading option '-draw_mouse' ... matched as AVOption 'draw_mouse' with
> argument
> '0'.
> Reading option '-framerate' ... matched as AVOption 'framerate' with
> argument '6
> 0'.
> Reading option '-i' ... matched as input url with argument 'desktop'.
> Reading option '-c:v' ... matched as option 'c' (codec name) with argument
> 'h264
> _nvenc'.
> Reading option '-profile:v' ... matched as option 'profile' (set profile)
> with a
> rgument 'high'.
> Reading option '-preset:v' ... matched as AVOption 'preset:v' with argument
> 'llh
> q'.
> Reading option '-rc:v' ... matched as AVOption 'rc:v' with argument
> 'cbr_ld_hq'.
>
> Reading option '-r:v' ... matched as option 'r' (set frame rate (Hz value,
> fract
> ion or abbreviation)) with argument '60'.
> Reading option '-g:v' ... matched as AVOption 'g:v' with argument '120'.
> Reading option '-b:v' ... matched as option 'b' (video bitrate (please use
> -b:v)
> ) with argument '8000k'.
> Reading option '-minrate:v' ... matched as AVOption 'minrate:v' with
> argument '8
> 000k'.
> Reading option '-maxrate:v' ... matched as AVOption 'maxrate:v' with
> argument '8
> 000k'.
> Reading option '-bufsize:v' ... matched as AVOption 'bufsize:v' with
> argument '8
> 000k'.
> Reading option '-gpu:v' ... matched as AVOption 'gpu:v' with argument '0'.
> Reading option '-an' ... matched as option 'an' (disable audio) with
> argument '1
> '.
> Reading option '-flush_packets' ... matched as AVOption 'flush_packets'
> with arg
> ument '0'.
> Reading option '-bsf:v' ... matched as option 'bsf' (A comma-separated list
> of b
> itstream filters) with argument 'h264_mp4toannexb'.
> Reading option '-muxrate' ... matched as AVOption 'muxrate' with argument
> '16000
> k'.
> Reading option '-pcr_period' ... matched as AVOption 'pcr_period' with
> argument
> '20'.
> Reading option '-mpegts_flags' ... matched as AVOption 'mpegts_flags' with
> argum
> ent '+resend_headers'.
> Reading option '-f' ... matched as option 'f' (force format) with argument
> 'mpeg
> ts'.
> Reading option 'udp://192.168.1.99:12345' ... matched as output url.
> Finished splitting the commandline.
> Parsing a group of options: global .
> Applying option y (overwrite output files) with argument 1.
> Applying option loglevel (set logging level) with argument debug.
> Applying option vsync (video sync method) with argument 1.
> Successfully parsed a group of options.
> Parsing a group of options: input url desktop.
> Applying option thread_queue_size (set the maximum number of queued packets
> from
>  the demuxer) with argument 5120.
> Applying option hwaccel (use HW accelerated decoding) with argument dxva2.
> Applying option hwaccel_device (select a device for HW acceleration) with
> argume
> nt 0.
> Applying option f (force format) with argument gdigrab.
> Successfully parsed a group of options.
> Opening an input file: desktop.
> [gdigrab @ 0000000000633740] Capturing whole desktop as 1920x1080x32 at
> (0,0)
> [gdigrab @ 0000000000633740] Probe buffer size limit of 5000000 bytes
> reached
> [gdigrab @ 0000000000633740] Stream #0: not enough frames to estimate rate;
> cons
> ider increasing probesize
> Input #0, gdigrab, from 'desktop':
>   Duration: N/A, start: 1569079689.981445, bitrate: 3981337 kb/s
>     Stream #0:0, 1, 1/1000000: Video: bmp, 1 reference frame, bgra,
> 1920x1080, 0
> /1, 3981337 kb/s, 60 fps, 1000k tbr, 1000k tbn, 1000k tbc
> Successfully opened the file.
> Parsing a group of options: output url udp://192.168.1.99:12345.
> Applying option c:v (codec name) with argument h264_nvenc.
> Applying option profile:v (set profile) with argument high.
> Applying option r:v (set frame rate (Hz value, fraction or abbreviation))
> with a
> rgument 60.
> Applying option b:v (video bitrate (please use -b:v)) with argument 8000k.
> Applying option an (disable audio) with argument 1.
> Applying option bsf:v (A comma-separated list of bitstream filters) with
> argumen
> t h264_mp4toannexb.
> Applying option f (force format) with argument mpegts.
> Successfully parsed a group of options.
> Opening an output file: udp://192.168.1.99:12345.
> [udp @ 0000000000659500] No default whitelist set
> Successfully opened the file.
> [AVHWDeviceContext @ 0000000000637140] Using D3D9Ex device.
> Stream mapping:
>   Stream #0:0 -> #0:0 (bmp (native) -> h264 (h264_nvenc))
> Press [q] to stop, [?] for help
> cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if
> it o
> ccurs once at the start per stream)
> detected 4 logical cores
> [graph 0 input from stream 0:0 @ 0000000006580400] Setting 'video_size' to
> value
>  '1920x1080'
> [graph 0 input from stream 0:0 @ 0000000006580400] Setting 'pix_fmt' to
> value '2
> 8'
> [graph 0 input from stream 0:0 @ 0000000006580400] Setting 'time_base' to
> value
> '1/1000000'
> [graph 0 input from stream 0:0 @ 0000000006580400] Setting 'pixel_aspect'
> to val
> ue '0/1'
> [graph 0 input from stream 0:0 @ 0000000006580400] Setting 'sws_param' to
> value
> 'flags=2'
> [graph 0 input from stream 0:0 @ 0000000006580400] Setting 'frame_rate' to
> value
>  '60/1'
> [graph 0 input from stream 0:0 @ 0000000006580400] w:1920 h:1080
> pixfmt:bgra tb:
> 1/1000000 fr:60/1 sar:0/1 sws_param:flags=2
> [format @ 0000000006581440] Setting 'pix_fmts' to value
> 'yuv420p|nv12|p010le|yuv
> 444p|p016le|yuv444p16le|bgr0|rgb0|cuda|d3d11'
> [auto_scaler_0 @ 0000000006581880] Setting 'flags' to value 'bicubic'
> [auto_scaler_0 @ 0000000006581880] w:iw h:ih flags:'bicubic' interl:0
> [format @ 0000000006581440] auto-inserting filter 'auto_scaler_0' between
> the fi
> lter 'Parsed_null_0' and the filter 'format'
> [AVFilterGraph @ 00000000006361c0] query_formats: 4 queried, 2 merged, 1
> already
>  done, 0 delayed
> [auto_scaler_0 @ 0000000006581880] picking rgb0 out of 8 ref:bgra alpha:1
> [swscaler @ 0000000000679fc0] Forcing full internal H chroma due to input
> having
>  non subsampled chroma
> [auto_scaler_0 @ 0000000006581880] w:1920 h:1080 fmt:bgra sar:0/1 -> w:1920
> h:10
> 80 fmt:rgb0 sar:0/1 flags:0x4
> [h264_nvenc @ 000000000063cc40] Loaded lib: nvcuda.dll
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuInit
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuDeviceGetCount
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuDeviceGet
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuDeviceGetAttribute
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuDeviceGetName
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuDeviceComputeCapability
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuCtxCreate_v2
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuCtxSetLimit
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuCtxPushCurrent_v2
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuCtxPopCurrent_v2
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuCtxDestroy_v2
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuMemAlloc_v2
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuMemAllocPitch_v2
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuMemsetD8Async
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuMemFree_v2
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuMemcpy2D_v2
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuMemcpy2DAsync_v2
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuGetErrorName
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuGetErrorString
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuStreamCreate
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuStreamQuery
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuStreamSynchronize
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuStreamDestroy_v2
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuStreamAddCallback
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuEventCreate
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuEventDestroy_v2
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuEventSynchronize
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuEventQuery
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuEventRecord
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuLaunchKernel
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuModuleLoadData
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuModuleUnload
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuModuleGetFunction
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuTexObjectCreate
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuTexObjectDestroy
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuGLGetDevices_v2
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuGraphicsGLRegisterImage
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuGraphicsUnregisterResource
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuGraphicsMapResources
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuGraphicsUnmapResources
> [h264_nvenc @ 000000000063cc40] Loaded sym:
> cuGraphicsSubResourceGetMappedArray
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuDeviceGetUuid
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuImportExternalMemory
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuDestroyExternalMemory
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuExternalMemoryGetMappedBuffer
> [h264_nvenc @ 000000000063cc40] Loaded sym:
> cuExternalMemoryGetMappedMipmappedAr
> ray
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuMipmappedArrayGetLevel
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuMipmappedArrayDestroy
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuImportExternalSemaphore
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuDestroyExternalSemaphore
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuSignalExternalSemaphoresAsync
> [h264_nvenc @ 000000000063cc40] Loaded sym: cuWaitExternalSemaphoresAsync
> [h264_nvenc @ 000000000063cc40] Loaded lib: nvEncodeAPI64.dll
> [h264_nvenc @ 000000000063cc40] Loaded sym: NvEncodeAPICreateInstance
> [h264_nvenc @ 000000000063cc40] Loaded sym:
> NvEncodeAPIGetMaxSupportedVersion
> [h264_nvenc @ 000000000063cc40] Loaded Nvenc version 9.0
> [h264_nvenc @ 000000000063cc40] Nvenc initialized successfully
> [h264_nvenc @ 000000000063cc40] dl_fn->cuda_dl->cuInit(0) failed ->
> CUDA_ERROR_N
> O_DEVICE: no CUDA-capable device is detected
> [h264_nvenc @ 000000000063cc40] Nvenc unloaded
> Error initializing output stream 0:0 -- Error while opening encoder for
> output s
> tream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or
> height
> [AVIOContext @ 0000000000669e80] Statistics: 0 seeks, 0 writeouts
> Conversion failed!
>
> Contacts in Nvidia corporation said that it is not possible to use cuda
> cores on 1B profile, only nvenc itself. So, the error and question are the
> same, is it possible to use nvenc with ffmpeg and init nvenc through
> directx, without using of cuda cores?
>
>
> сб, 21 сент. 2019 г. в 12:31, Dennis Mungai <dmngaie at gmail.com>:
>
> > On Sat, 21 Sep 2019 at 11:39, Johanna Nilson <jnils75 at gmail.com> wrote:
> > >
> > > Sorry, but I think that the problem is not in profile M10-1B. This
> > article (
> > > https://support.citrix.com/article/CTX217781) says that we require
> > profile
> > > with equal or more than 1GB to use NVENC, but M10-1B include 1GB, so,
> > it's
> > > ok.
> > >
> > > When I use command:
> > > ffmpeg -f gdigrab -i desktop -framerate 30 -tune zerolatency -r 30 -c:v
> > > hevc_nvenc -f mpegts udp://...
> > >
> > > FFMPEG log clearly says that:
> > > [hevc_nvenc @ 00000000005a6840] dl_fn->cuda_dl->cuInit(0) failed ->
> > > CUDA_ERROR_NO_DEVICE: no CUDA-capable device is detected
> > >
> > > There is no coda cores available in the profile M10-1B, but they are not
> > > needed for encoding. So, FFMPEG requirement of them is redundant. But I'm
> > > 100% sure that nvenc is available in configuration M10-1B. I've made a
> > > solution similar to this:
> > >
> > https://github.com/bloodelves88/CloudyNvCapture/blob/master/samples/NvFBC/NvFBCDX9NvEnc/NvFBCDX9NvEnc.cpp
> > > It works ok in M10-1B configuration. It uses Nvidia capture and Nvidia
> > > Nvenc without using cuda to produce h264 frame sequence. The problem in
> > > FFMPEG is that it requires cuda even when it is not used. So, please, can
> > > we do anything with this unneccesary requirement of cuda when we try to
> > use
> > > hardware encoding on nvidia cards?
> > >
> > > It's not only my issue. This man also have similar problems (
> > >
> > https://superuser.com/questions/1482726/is-there-a-way-to-use-nvenc-for-ffmpeg-without-cuda
> > ).
> > > The FFMPEG log is not the same, but question is the same. Changing M10-1B
> > > profile is not a option. It is sutable for using NVENC, the only problem
> > is
> > > that FFMPEG requires CUDA when is is noot needed.
> > >
> > > пт, 20 сент. 2019 г. в 18:26, Dennis Mungai <dmngaie at gmail.com>:
> > >
> > > > On Fri, 20 Sep 2019 at 17:55, Johanna Nilson <jnils75 at gmail.com>
> > wrote:
> > > > >
> > > > > nvidia-smi -L
> > > > > GPU 0: GRID M10-1B
> > > >
> > > > Seems like a known issue.
> > > > See https://support.citrix.com/article/CTX217781 and this post in
> > > > particular
> > > >
> > https://gridforums.nvidia.com/default/topic/983/xendesktop/m60-nvenc-xd-vda-7-11-only-1gb-vgpu-profiles-and-above-/post/3478/#3478
> > > > Please switch to a different vGPU with at least 2 GB of VRAM, such as
> > > > M10-4A.
> > > > See this for available profiles:
> > > > https://docs.nvidia.com/grid/latest/grid-vgpu-user-guide/index.html
> >
> > Ahh, I get it now.
> > In the NVIDIA SDK, an NVENC session can be initialized via either a
> > shared CUDA context or DirectX.
> > Which reminds me: A while back, I ran into something similar with
> > VMWare's ESXi with NVIDIA's vGPU solution (GRID) based on the Tesla
> > T4.
> > Here is what I encountered and the workarounds I tried then:
> >
> > I enabled TCC mode and rebooted:
> >
> > nvidia-smi -g 0 -fdm 1
> >
> > Then ran the command:
> >
> > ffmpeg.exe -y -thread_queue_size 5120 -use_wallclock_as_timestamps 1
> > -fflags +genpts -loglevel debug -vsync 1 ^
> > -f gdigrab -draw_mouse 0 -framerate 60 -i desktop ^
> > -c:v h264_nvenc -profile:v high -rc:v cbr_ld_hq -r:v 60 -g:v 120 -b:v
> > 8000k -minrate:v 8000k -maxrate:v 8000k -bufsize:v 8000k ^
> > -an -flush_packets 0 -bsf:v h264_mp4toannexb ^
> > -muxrate 16000k -pcr_period 20 -mpegts_flags +resend_headers
> > -mpegts_start_pid 0x15 -t 240 -f mpegts "lol.m2ts"
> >
> > log:
> >
> > C:\bin>ffmpeg.exe -y -thread_queue_size 5120
> > -use_wallclock_as_timestamps 1 -fflags +genpts -loglevel debug -vsync
> > 1 ^
> > More? -f gdigrab -draw_mouse 0 -framerate 60 -i desktop ^
> > More? -c:v h264_nvenc -profile:v high -rc:v cbr_ld_hq -r:v 60 -g:v 120
> > -b:v 8000k -minrate:v 8000k -maxrate:v 8000k -bufsize:v 8000k ^
> > More? -an -flush_packets 0 -bsf:v h264_mp4toannexb ^
> > More? -muxrate 16000k -pcr_period 20 -mpegts_flags +resend_headers
> > -mpegts_start_pid 0x15 -t 240 -f mpegts "lol.m2ts"
> > ffmpeg version N-94000-g78e1d7f421-ffmpeg-windows-build-helpers
> > Copyright (c) 2000-2019 the FFmpeg developers
> >   built with gcc 8.2.0 (GCC)
> >   configuration: --pkg-config=pkg-config --pkg-config-flags=--static
> > --extra-version=ffmpeg-windows-build-helpers --enable-version3
> > --disable-debug --disable-w32threads --arch=x86_64 --target-os=mingw32
> >
> > --cross-prefix=/home/brainiarc7/source.build/ffmpeg-windows-build-helpers/sandbox/cross_compilers/mingw-w64-x86_64/bin/x86_64-w64-mingw32-
> > --enable-libcaca --enable-gray --enable-libtesseract
> > --enable-fontconfig --enable-gmp --enable-gnutls --enable-libass
> > --enable-libbluray --enable-libbs2b --enable-libflite
> > --enable-libfreetype --enable-libfribidi --enable-libgme
> > --enable-libgsm --enable-libilbc --enable-libmodplug
> > --enable-libmp3lame --enable-libopencore-amrnb
> > --enable-libopencore-amrwb --enable-libopus --enable-libsnappy
> > --enable-libsoxr --enable-libspeex --enable-libtheora
> > --enable-libtwolame --enable-libvo-amrwbenc --enable-libvorbis
> > --enable-libvpx --enable-libwebp --enable-libzimg --enable-libzvbi
> > --enable-libmysofa --enable-libaom --enable-libopenjpeg
> > --enable-libopenh264 --enable-liblensfun --enable-libvmaf
> > --enable-libsrt --enable-demuxer=dash --enable-libxml2 --enable-nvenc
> > --enable-nvdec --extra-libs=-lharfbuzz --extra-libs=-lm
> > --extra-libs=-lpthread --extra-cflags=-DLIBTWOLAME_STATIC
> > --extra-cflags=-DMODPLUG_STATIC --extra-cflags=-DCACA_STATIC
> > --enable-amf --enable-libmfx --enable-gpl --enable-avisynth
> > --enable-frei0r --enable-filter=frei0r --enable-librubberband
> > --enable-libvidstab --enable-libx264 --enable-libx265 --enable-libxvid
> > --enable-libxavs --enable-avresample --extra-cflags='-mtune=generic'
> > --extra-cflags=-O3 --enable-static --disable-shared
> >
> > --prefix=/home/brainiarc7/source.build/ffmpeg-windows-build-helpers/sandbox/cross_compilers/mingw-w64-x86_64/x86_64-w64-mingw32
> >   libavutil      56. 28.100 / 56. 28.100
> >   libavcodec     58. 52.102 / 58. 52.102
> >   libavformat    58. 27.103 / 58. 27.103
> >   libavdevice    58.  7.100 / 58.  7.100
> >   libavfilter     7. 55.100 /  7. 55.100
> >   libavresample   4.  0.  0 /  4.  0.  0
> >   libswscale      5.  4.101 /  5.  4.101
> >   libswresample   3.  4.100 /  3.  4.100
> >   libpostproc    55.  4.100 / 55.  4.100
> > Splitting the commandline.
> > Reading option '-y' ... matched as option 'y' (overwrite output files)
> > with argument '1'.
> > Reading option '-thread_queue_size' ... matched as option
> > 'thread_queue_size' (set the maximum number of queued packets from the
> > demuxer) with argument '5120'.
> > Reading option '-use_wallclock_as_timestamps' ... matched as AVOption
> > 'use_wallclock_as_timestamps' with argument '1'.
> > Reading option '-fflags' ... matched as AVOption 'fflags' with
> > argument '+genpts'.
> > Reading option '-loglevel' ... matched as option 'loglevel' (set
> > logging level) with argument 'debug'.
> > Reading option '-vsync' ... matched as option 'vsync' (video sync
> > method) with argument '1'.
> > Reading option '-f' ... matched as option 'f' (force format) with
> > argument 'gdigrab'.
> > Reading option '-draw_mouse' ... matched as AVOption 'draw_mouse' with
> > argument '0'.
> > Reading option '-framerate' ... matched as AVOption 'framerate' with
> > argument '60'.
> > Reading option '-i' ... matched as input url with argument 'desktop'.
> > Reading option '-c:v' ... matched as option 'c' (codec name) with
> > argument 'h264_nvenc'.
> > Reading option '-profile:v' ... matched as option 'profile' (set
> > profile) with argument 'high'.
> > Reading option '-rc:v' ... matched as AVOption 'rc:v' with argument
> > 'cbr_ld_hq'.
> > Reading option '-r:v' ... matched as option 'r' (set frame rate (Hz
> > value, fraction or abbreviation)) with argument '60'.
> > Reading option '-g:v' ... matched as AVOption 'g:v' with argument '120'.
> > Reading option '-b:v' ... matched as option 'b' (video bitrate (please
> > use -b:v)) with argument '8000k'.
> > Reading option '-minrate:v' ... matched as AVOption 'minrate:v' with
> > argument '8000k'.
> > Reading option '-maxrate:v' ... matched as AVOption 'maxrate:v' with
> > argument '8000k'.
> > Reading option '-bufsize:v' ... matched as AVOption 'bufsize:v' with
> > argument '8000k'.
> > Reading option '-an' ... matched as option 'an' (disable audio) with
> > argument '1'.
> > Reading option '-flush_packets' ... matched as AVOption
> > 'flush_packets' with argument '0'.
> > Reading option '-bsf:v' ... matched as option 'bsf' (A comma-separated
> > list of bitstream filters) with argument 'h264_mp4toannexb'.
> > Reading option '-muxrate' ... matched as AVOption 'muxrate' with
> > argument '16000k'.
> > Reading option '-pcr_period' ... matched as AVOption 'pcr_period' with
> > argument '20'.
> > Reading option '-mpegts_flags' ... matched as AVOption 'mpegts_flags'
> > with argument '+resend_headers'.
> > Reading option '-mpegts_start_pid' ... matched as AVOption
> > 'mpegts_start_pid' with argument '0x15'.
> > Reading option '-t' ... matched as option 't' (record or transcode
> > "duration" seconds of audio/video) with argument '240'.
> > Reading option '-f' ... matched as option 'f' (force format) with
> > argument 'mpegts'.
> > Reading option 'lol.m2ts' ... matched as output url.
> > Finished splitting the commandline.
> > Parsing a group of options: global .
> > Applying option y (overwrite output files) with argument 1.
> > Applying option loglevel (set logging level) with argument debug.
> > Applying option vsync (video sync method) with argument 1.
> > Successfully parsed a group of options.
> > Parsing a group of options: input url desktop.
> > Applying option thread_queue_size (set the maximum number of queued
> > packets from the demuxer) with argument 5120.
> > Applying option f (force format) with argument gdigrab.
> > Successfully parsed a group of options.
> > Opening an input file: desktop.
> > [gdigrab @ 000001a5e9277bc0] Capturing whole desktop as 1920x1080x32 at
> > (0,0)
> > [gdigrab @ 000001a5e9277bc0] Probe buffer size limit of 5000000 bytes
> > reached
> > [gdigrab @ 000001a5e9277bc0] Stream #0: not enough frames to estimate
> > rate; consider increasing probesize
> > Input #0, gdigrab, from 'desktop':
> >   Duration: N/A, start: 1560869500.651357, bitrate: 3981337 kb/s
> >     Stream #0:0, 1, 1/1000000: Video: bmp, 1 reference frame, bgra,
> > 1920x1080, 0/1, 3981337 kb/s, 60 fps, 1000k tbr, 1000k tbn, 1000k tbc
> > Successfully opened the file.
> > Parsing a group of options: output url lol.m2ts.
> > Applying option c:v (codec name) with argument h264_nvenc.
> > Applying option profile:v (set profile) with argument high.
> > Applying option r:v (set frame rate (Hz value, fraction or
> > abbreviation)) with argument 60.
> > Applying option b:v (video bitrate (please use -b:v)) with argument 8000k.
> > Applying option an (disable audio) with argument 1.
> > Applying option bsf:v (A comma-separated list of bitstream filters)
> > with argument h264_mp4toannexb.
> > Applying option t (record or transcode "duration" seconds of
> > audio/video) with argument 240.
> > Applying option f (force format) with argument mpegts.
> > Successfully parsed a group of options.
> > Opening an output file: lol.m2ts.
> > [file @ 000001a5e927edc0] Setting default whitelist 'file,crypto'
> > Successfully opened the file.
> > Stream mapping:
> >   Stream #0:0 -> #0:0 (bmp (native) -> h264 (h264_nvenc))
> > Press [q] to stop, [?] for help
> > cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is
> > harmless if it occurs once at the start per stream)
> > detected 16 logical cores
> > [graph 0 input from stream 0:0 @ 000001a5e981f640] Setting
> > 'video_size' to value '1920x1080'
> > [graph 0 input from stream 0:0 @ 000001a5e981f640] Setting 'pix_fmt'
> > to value '28'
> > [graph 0 input from stream 0:0 @ 000001a5e981f640] Setting 'time_base'
> > to value '1/1000000'
> > [graph 0 input from stream 0:0 @ 000001a5e981f640] Setting
> > 'pixel_aspect' to value '0/1'
> > [graph 0 input from stream 0:0 @ 000001a5e981f640] Setting 'sws_param'
> > to value 'flags=2'
> > [graph 0 input from stream 0:0 @ 000001a5e981f640] Setting
> > 'frame_rate' to value '60/1'
> > [graph 0 input from stream 0:0 @ 000001a5e981f640] w:1920 h:1080
> > pixfmt:bgra tb:1/1000000 fr:60/1 sar:0/1 sws_param:flags=2
> > [format @ 000001a5e981c3c0] Setting 'pix_fmts' to value
> > 'yuv420p|nv12|p010le|yuv444p|p016le|yuv444p16le|bgr0|rgb0|cuda|d3d11'
> > [auto_scaler_0 @ 000001a5e981a940] Setting 'flags' to value 'bicubic'
> > [auto_scaler_0 @ 000001a5e981a940] w:iw h:ih flags:'bicubic' interl:0
> > [format @ 000001a5e981c3c0] auto-inserting filter 'auto_scaler_0'
> > between the filter 'Parsed_null_0' and the filter 'format'
> > [AVFilterGraph @ 000001a5e927dec0] query_formats: 5 queried, 3 merged,
> > 1 already done, 0 delayed
> > [auto_scaler_0 @ 000001a5e981a940] picking rgb0 out of 8 ref:bgra alpha:1
> > [swscaler @ 000001a5eb0100c0] Forcing full internal H chroma due to
> > input having non subsampled chroma
> > [auto_scaler_0 @ 000001a5e981a940] w:1920 h:1080 fmt:bgra sar:0/1 ->
> > w:1920 h:1080 fmt:rgb0 sar:0/1 flags:0x4
> > [h264_nvenc @ 000001a5e927c1c0] Loaded lib: nvcuda.dll
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuInit
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuDeviceGetCount
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuDeviceGet
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuDeviceGetAttribute
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuDeviceGetName
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuDeviceComputeCapability
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuCtxCreate_v2
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuCtxSetLimit
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuCtxPushCurrent_v2
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuCtxPopCurrent_v2
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuCtxDestroy_v2
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuMemAlloc_v2
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuMemAllocPitch_v2
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuMemsetD8Async
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuMemFree_v2
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuMemcpy2D_v2
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuMemcpy2DAsync_v2
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuGetErrorName
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuGetErrorString
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuStreamCreate
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuStreamQuery
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuStreamSynchronize
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuStreamDestroy_v2
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuStreamAddCallback
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuEventCreate
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuEventDestroy_v2
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuEventSynchronize
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuEventQuery
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuEventRecord
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuLaunchKernel
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuModuleLoadData
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuModuleUnload
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuModuleGetFunction
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuTexObjectCreate
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuTexObjectDestroy
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuGLGetDevices_v2
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuGraphicsGLRegisterImage
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuGraphicsUnregisterResource
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuGraphicsMapResources
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuGraphicsUnmapResources
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym:
> > cuGraphicsSubResourceGetMappedArray
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuDeviceGetUuid
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuImportExternalMemory
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuDestroyExternalMemory
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuExternalMemoryGetMappedBuffer
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym:
> > cuExternalMemoryGetMappedMipmappedArray
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuMipmappedArrayGetLevel
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuMipmappedArrayDestroy
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuImportExternalSemaphore
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuDestroyExternalSemaphore
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuSignalExternalSemaphoresAsync
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: cuWaitExternalSemaphoresAsync
> > [h264_nvenc @ 000001a5e927c1c0] Loaded lib: nvEncodeAPI64.dll
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym: NvEncodeAPICreateInstance
> > [h264_nvenc @ 000001a5e927c1c0] Loaded sym:
> > NvEncodeAPIGetMaxSupportedVersion
> > [h264_nvenc @ 000001a5e927c1c0] Loaded Nvenc version 9.0
> > [h264_nvenc @ 000001a5e927c1c0] Nvenc initialized successfully
> > [h264_nvenc @ 000001a5e927c1c0] 1 CUDA capable devices found
> > [h264_nvenc @ 000001a5e927c1c0] [ GPU #0 - < GRID T4-2B > has Compute SM
> > 7.5 ]
> > [h264_nvenc @ 000001a5e927c1c0]
> > dl_fn->cuda_dl->cuCtxCreate(&ctx->cu_context_internal, 0, cu_device)
> > failed -> CUDA_ERROR_UNKNOWN: unknown error
> > [h264_nvenc @ 000001a5e927c1c0] No NVENC capable devices found
> > [h264_nvenc @ 000001a5e927c1c0] Nvenc unloaded
> > Error initializing output stream 0:0 -- Error while opening encoder
> > for output stream #0:0 - maybe incorrect parameters such as bit_rate,
> > rate, width or height
> > [AVIOContext @ 000001a5e9819840] Statistics: 0 seeks, 0 writeouts
> > Conversion failed!
> >
> > I then disabled TCC mode and rebooted:
> >
> > nvidia-smi -g 0 -dm 0
> >
> > Then ran the command:
> >
> > ffmpeg.exe -y -thread_queue_size 5120 -use_wallclock_as_timestamps 1
> > -fflags +genpts -loglevel debug -vsync 1 ^
> > -f gdigrab -draw_mouse 0 -framerate 60 -i desktop ^
> > -c:v h264_nvenc -profile:v high -rc:v cbr_ld_hq -r:v 60 -g:v 120 -b:v
> > 8000k -minrate:v 8000k -maxrate:v 8000k -bufsize:v 8000k ^
> > -an -flush_packets 0 -bsf:v h264_mp4toannexb ^
> > -muxrate 16000k -pcr_period 20 -mpegts_flags +resend_headers
> > -mpegts_start_pid 0x15 -t 240 -f mpegts "lol.m2ts"
> >
> > And ran into the same issue.
> >
> > This limitation was overcome by switching to a larger vGPU config, so
> > I basically gave up on the case and never looked into it again.
> > With that in mind, perhaps you could try running the same but with
> > dxva hwaccel instead? Perhaps (and I could be wrong) switching to
> > dxva2 as a hwaccel should flip the device type for NVENC as DirectX
> > instead of CUDA.
> > That interop seems to be implemented, see
> > https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/nvenc.c#L52
> >
> > See an example of such a command with your parameters:
> >
> > ffmpeg.exe -y -thread_queue_size 5120 ^
> > -fflags +genpts -loglevel debug -vsync 1 -hwaccel dxva2 -hwaccel_device 0 ^
> > -f gdigrab -draw_mouse 0 -framerate 60 -i desktop ^
> > -c:v h264_nvenc -profile:v high -preset:v llhq -rc:v cbr_ld_hq -r:v 60
> > -g:v 120 -b:v 8000k -minrate:v 8000k -maxrate:v 8000k -bufsize:v 8000k
> > -gpu:v 0 ^
> > -an -flush_packets 0 -bsf:v h264_mp4toannexb ^
> > -muxrate 16000k -pcr_period 20 -mpegts_flags +resend_headers -f mpegts
> > "udp://..."
> >
> > Let me know how that goes.

Hey there,

You might want to open a ticket on trac, and forward this email to the
ffmpeg-devel mailing list. From what I'm seeing here, that would be
the ideal mailing list for this conversation.
I'll add Philip Langdale and Timo Rothenpieler to the thread as
they're the active maintainers of both NVENC + the related ffnvcodec
headers in the project.


More information about the ffmpeg-user mailing list