FFmpeg 去隔行过滤器 yadif_cuda 不可用?

FFmpeg 去隔行过滤器 yadif_cuda 不可用?

FFmpeg 报告发布版本和静态版本均显示“没有这样的过滤器:‘yadif_cuda’”。FFmpeg 文档没有规定。

$ ffmpeg -loglevel debug -ss 01:16:20 -i Hi8_02.dv -t 10 -vf "yadif_cuda, scale=hd720:flags=bilinear" -c:v dnxhd -profile:v dnxhr_sq Hi8_02test.mov
ffmpeg version N-47911-g1dcb5b7dca-static https://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516
  configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg
  libavutil      56. 25.100 / 56. 25.100
  libavcodec     58. 43.100 / 58. 43.100
  libavformat    58. 25.100 / 58. 25.100
  libavdevice    58.  6.101 / 58.  6.101
  libavfilter     7. 46.101 /  7. 46.101
  libswscale      5.  4.100 /  5.  4.100
  libswresample   3.  4.100 /  3.  4.100
  libpostproc    55.  4.100 / 55.  4.100
Splitting the commandline.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument 'debug'.                                                                                            
Reading option '-ss' ... matched as option 'ss' (set the start time offset) with argument '01:16:20'.                                                                                             
Reading option '-i' ... matched as input url with argument 'Hi8_02.dv'.                          
Reading option '-t' ... matched as option 't' (record or transcode "duration" seconds of audio/video) with argument '10'.                                                                         
Reading option '-vf' ... matched as option 'vf' (set video filters) with argument 'yadif_cuda, scale=hd720:flags=bilinear'.                                                                       
Reading option '-c:v' ... matched as option 'c' (codec name) with argument 'dnxhd'.              
Reading option '-profile:v' ... matched as option 'profile' (set profile) with argument 'dnxhr_sq'.
Reading option 'Hi8_02test.mov' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option loglevel (set logging level) with argument debug.
Successfully parsed a group of options.
Parsing a group of options: input url Hi8_02.dv.
Applying option ss (set the start time offset) with argument 01:16:20.
Successfully parsed a group of options.
Opening an input file: Hi8_02.dv.
[NULL @ 0x673f740] Opening 'Hi8_02.dv' for reading
[file @ 0x6740040] Setting default whitelist 'file,crypto'
[dv @ 0x673f740] Format dv probed with size=2048 and score=75
[dv @ 0x673f740] Before avformat_find_stream_info() pos: 0 bytes read:32768 seeks:0 nb_streams:1
[dv @ 0x673f740] All info found
[dv @ 0x673f740] Estimating duration from bitrate, this may be inaccurate
[dv @ 0x673f740] After avformat_find_stream_info() pos: 120000 bytes read:120000 seeks:0 frames:2
Input #0, dv, from 'Hi8_02.dv':
  Metadata:
    timecode        : 02:01:40;13
  Duration: 01:42:32.05, start: 0.000000, bitrate: 28771 kb/s
    Stream #0:0, 1, 1001/30000: Video: dvvideo, 1 reference frame, yuv411p(topleft), 720x480 [SAR 8:9 DAR 4:3], 0/1, 25000 kb/s, 29.97 fps, 29.97 tbr, 29.97 tbn, 29.97 tbc
    Stream #0:1, 1, 1/30000: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
Successfully opened the file.
Parsing a group of options: output url Hi8_02test.mov.
Applying option t (record or transcode "duration" seconds of audio/video) with argument 10.
Applying option vf (set video filters) with argument yadif_cuda, scale=hd720:flags=bilinear.
Applying option c:v (codec name) with argument dnxhd.
Applying option profile:v (set profile) with argument dnxhr_sq.
Successfully parsed a group of options.
Opening an output file: Hi8_02test.mov.
File 'Hi8_02test.mov' already exists. Overwrite ? [y/N] y
[file @ 0x6747a40] Setting default whitelist 'file,crypto'
Successfully opened the file.
detected 4 logical cores
Stream mapping:
  Stream #0:0 -> #0:0 (dvvideo (native) -> dnxhd (native))
  Stream #0:1 -> #0:1 (pcm_s16le (native) -> aac (native))
Press [q] to stop, [?] for help
cur_dts is invalid (this is harmless if it occurs once at the start per stream)
[AVFilterGraph @ 0x6747d40] No such filter: 'yadif_cuda'
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #0:0
[AVIOContext @ 0x6747ac0] Statistics: 0 seeks, 0 writeouts
[AVIOContext @ 0x6748440] Statistics: 240000 bytes read, 1 seeks
Conversion failed!

答案1

静态版本没有该过滤器,因为它需要链接到 NVIDIA SDK,而 NVIDIA SDK 是非自由软件,因此无法重新分发。此外,将它捆绑给没有 NVIDIA GPU 的用户也没有多大意义。

因此你必须:

获得对该过滤器以及其他 NVENC/NVDEC 功能的支持。

相关内容