On Wed, 8 Apr 2020 at 17:57, Andy Sheimo <[email protected]> wrote: > I keep getting an error on some files and it appears to be due to a > scaler being inserted but I don't know how to fix it. Any help would be > appreciated. logging below: > > K:\Video\GAMERA THE BRAVE>ffmpeg -loglevel verbose -hwaccel cuvid > -hwaccel_output_format yuv420p -c:v mpeg2_cuvid -i > "l:\welter_originals\gamera the brave\Latatude Zero-trailer.mkv" -c:a copy > -c:v h264_nvenc test.mkv > ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers > built with gcc 9.2.1 (GCC) 20200122 > configuration: --enable-gpl --enable-version3 --enable-sdl2 > --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass > --enable-libdav1d --enable-libbluray --enable-libfreetype > --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb > --enable-libopenjpeg --enable-libopus --enable-libshine --enable-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 > --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc > --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom > --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid > --enable-d3d11va --enable-nvenc --enable-nvdec --enable-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 > Input #0, matroska,webm, from 'l:\welter_originals\gamera the > brave\Latatude Zero-trailer.mkv': > Metadata: > encoder : libmakemkv v1.15.0 (1.3.5/1.4.7) win(x64-release) > creation_time : 2020-03-05T18:41:29.000000Z > Duration: 00:02:28.75, start: 0.000000, bitrate: 4685 kb/s > Stream #0:0(eng): Video: mpeg2video (Main), 1 reference frame, > yuv420p(tv, top first, left), 720x480 [SAR 32:27 DAR 16:9], SAR 186:157 DAR > 279:157, 29.97 fps, 29.97 tbr, 1k tbn, 59.94 tbc > Metadata: > BPS-eng : 4488094 > DURATION-eng : 00:02:28.748600000 > NUMBER_OF_FRAMES-eng: 3567 > NUMBER_OF_BYTES-eng: 83449382 > SOURCE_ID-eng : 0100E0 > _STATISTICS_WRITING_APP-eng: MakeMKV v1.15.0 win(x64-release) > _STATISTICS_WRITING_DATE_UTC-eng: 2020-03-05 18:41:29 > _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES > SOURCE_ID > Stream #0:1(eng): Audio: ac3, 48000 Hz, mono, fltp, 192 kb/s (default) > Metadata: > title : Mono > BPS-eng : 192000 > DURATION-eng : 00:02:28.704000000 > NUMBER_OF_FRAMES-eng: 4647 > NUMBER_OF_BYTES-eng: 3568896 > SOURCE_ID-eng : 0180BD > _STATISTICS_WRITING_APP-eng: MakeMKV v1.15.0 win(x64-release) > _STATISTICS_WRITING_DATE_UTC-eng: 2020-03-05 18:41:29 > _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES > SOURCE_ID > File 'test.mkv' already exists. Overwrite ? [y/N] y > [mpeg2_cuvid @ 000001ec985dfbc0] Initializing cuvid hwaccel > [mpeg2_cuvid @ 000001ec985dfbc0] CUVID capabilities for mpeg2_cuvid: > [mpeg2_cuvid @ 000001ec985dfbc0] 8 bit: supported: 1, min_width: 48, > max_width: 4080, min_height: 16, max_height: 4080 > [mpeg2_cuvid @ 000001ec985dfbc0] 10 bit: supported: 0, min_width: 0, > max_width: 0, min_height: 0, max_height: 0 > [mpeg2_cuvid @ 000001ec985dfbc0] 12 bit: supported: 0, min_width: 0, > max_width: 0, min_height: 0, max_height: 0 > Stream mapping: > Stream #0:0 -> #0:0 (mpeg2video (mpeg2_cuvid) -> h264 (h264_nvenc)) > Stream #0:1 -> #0:1 (copy) > Press [q] to stop, [?] for help > [mpeg2_cuvid @ 000001ec985dfbc0] Initializing cuvid hwaccel > [mpeg2_cuvid @ 000001ec985dfbc0] Formats: Original: cuda | HW: cuda | SW: > nv12 > [graph 0 input from stream 0:0 @ 000001ec98632f00] w:720 h:480 pixfmt:cuda > tb:1/1000 fr:30000/1001 sar:186/157 sws_param:flags=2 > [h264_nvenc @ 000001ec985efe00] Loaded Nvenc version 10.0 > [h264_nvenc @ 000001ec985efe00] Nvenc initialized successfully > Output #0, matroska, to 'test.mkv': > Metadata: > encoder : Lavf58.29.100 > Stream #0:0(eng): Video: h264 (h264_nvenc) (Main), 1 reference frame > (H264 / 0x34363248), cuda(left), 720x480 [SAR 186:157 DAR 279:157], > q=-1--1, 2000 kb/s, 29.97 fps, 1k tbn, 29.97 tbc > Metadata: > BPS-eng : 4488094 > DURATION-eng : 00:02:28.748600000 > NUMBER_OF_FRAMES-eng: 3567 > NUMBER_OF_BYTES-eng: 83449382 > SOURCE_ID-eng : 0100E0 > _STATISTICS_WRITING_APP-eng: MakeMKV v1.15.0 win(x64-release) > _STATISTICS_WRITING_DATE_UTC-eng: 2020-03-05 18:41:29 > _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES > SOURCE_ID > encoder : Lavc58.54.100 h264_nvenc > Side data: > cpb: bitrate max/min/avg: 0/0/2000000 buffer size: 4000000 vbv_delay: > -1 > Stream #0:1(eng): Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, mono, > fltp, 192 kb/s (default) > Metadata: > title : Mono > BPS-eng : 192000 > DURATION-eng : 00:02:28.704000000 > NUMBER_OF_FRAMES-eng: 4647 > NUMBER_OF_BYTES-eng: 3568896 > SOURCE_ID-eng : 0180BD > _STATISTICS_WRITING_APP-eng: MakeMKV v1.15.0 win(x64-release) > _STATISTICS_WRITING_DATE_UTC-eng: 2020-03-05 18:41:29 > _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES > SOURCE_ID > [mpeg2_cuvid @ 000001ec985dfbc0] Initializing cuvid hwaccel2 > bitrate=1805.6kbits/s speed=77.9x > [mpeg2_cuvid @ 000001ec985dfbc0] Formats: Original: cuda | HW: cuda | SW: > nv12 > [graph 0 input from stream 0:0 @ 000001ec985e3a40] w:720 h:480 pixfmt:cuda > tb:1/1000 fr:30000/1001 sar:186/157 sws_param:flags=2 > [scaler_out_0_0 @ 000001ecac63f100] w:720 h:480 flags:'bicubic' interl:0 > [auto_scaler_0 @ 000001ec986aed80] w:iw h:ih flags:'bicubic' interl:0 > [scaler_out_0_0 @ 000001ecac63f100] auto-inserting filter 'auto_scaler_0' > between the filter 'Parsed_null_0' and the filter 'scaler_out_0_0' > Impossible to convert between the formats supported by the filter > 'Parsed_null_0' and the filter 'auto_scaler_0' > Error reinitializing filters! > Failed to inject frame into filter network: Function not implemented > Error while processing the decoded data for stream #0:0 > [AVIOContext @ 000001ec985f1b00] Statistics: 0 seeks, 156 writeouts > [h264_nvenc @ 000001ec985efe00] Nvenc unloaded > [AVIOContext @ 000001ec985e3bc0] Statistics: 87142507 bytes read, 2 seeks > Conversion failed! > > Try this instead:
ffmpeg -threads 1 -loglevel verbose -hwaccel cuvid -hwaccel_output_format cuda -c:v mpeg2_cuvid -extra_hw_frames 3 -i "l:\welter_originals\gamera the brave\Latatude Zero-trailer.mkv" -c:a copy -c:v h264_nvenc test.mkv Or with NVDEC: ffmpeg -threads 1 -loglevel verbose -hwaccel cuda -hwaccel_output_format cuda -extra_hw_frames 3 -i "l:\welter_originals\gamera the brave\Latatude Zero-trailer.mkv" -c:a copy -c:v h264_nvenc test.mkv See the hwaccel_output_format is set to cuda, and not the generic yuv420p. If you must use the yuv420p pixel format, then: (a). Unset -hwaccel_output_format option. When present, this disallows downloading textures to system memory. (b). Then use the hwdownload filter chained to the format=yuv420p. Note that this *might* not be supported, and may require you to use a planar pixel format such as nv12, depending on consequent filter chains. Note that doing so in your case would only decrease throughput, and is only necessary *if* you're using some software-based filter down the line, such as the generic overlay filter. Where possible, stick to either full H/W decode+encode, OR skip H/W decode entirely if the input format is likely to be unsupported by the underlying device. In the latter case, the use of the hwupload or hwupload_cuda filter(s) can then be used to create the required CUDA contexts for filters that depend on them, such as yadif_cuda, overlay_cuda, etc. Note that with hwupload filter, a device reference is required to upload hwframes to, typically via the -init_hw_device $device_type:$index=$identifier -filter_hw_device $identifier arguments, where $device_type in this case would be cuda and $index would be the GPU to use for that session, and $identifier being a unique name to identify the hardware device by. Example: -init_hw_device cuda:0=hw -filter_hw_device hw Would initialize a device type cuda, using GPU index (from nvidia-smi) as 0 (the first GPU), with the identifier passed to -filter_hw_device as hw. The filter hwupload_cuda initializes a device to use and does not require the manual step above. However, you can select *what* GPU to use by passing it directly to the filter, via: hwupload_cuda=$index To achieve the same result. On the -extra_hw_frames option and why its' needed for NVDEC (and CUVID), see this ticket: https://trac.ffmpeg.org/ticket/7562 Recommended: Limit decoder threads to 1 as shown above to prevent NVDEC from misbehaving. It will outright warn you if thread count (or surface count in use) exceeds 16. Hope that helps. _______________________________________________ ffmpeg-user mailing list [email protected] https://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email [email protected] with subject "unsubscribe".
