所以我正在尝试使用 Nvenc 来加速视频编码。目的是有 1 个输入视频文件和 1 个输入字幕,并获得不同分辨率的多个输出,字幕硬编码或刻录到视频中。我尝试了多种方法,但不知道该怎么做。
这是我目前正在使用的命令:
ffmpeg -hwaccel cuvid -i 3030025890-TEST.mp4 -i output_ar.srt -filter_complex "[0:v]scale_npp=1920:1080, hwdownload,format=nv12[base], [base]subtitles=output_ar.srt[marked]" -map "[marked]" -c:v h264_nvenc -map 0:v:0 -map 0:a:0 -g 50 -b:v 5M -maxrate 5.5M -minrate 4M -bufsize 5M -preset fast 1080_output.mp4
这是输出:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '3030025890-TEST.mp4':
Metadata:
major_brand : M4V
minor_version : 1
compatible_brands: isomavc1mp42
creation_time : 2021-01-05T13:45:58.000000Z
Duration: 00:45:04.28, start: 0.000000, bitrate: 5574 kb/s
Stream #0:0(und): Video: h264 (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 5000 kb/s, 25 fps, 25 tbr, 25k tbn, 50 tbc (default)
Metadata:
creation_time : 2021-01-05T13:45:58.000000Z
handler_name : ETI ISO Video Media Handler
encoder : Elemental H.264
Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 93 kb/s (default)
Metadata:
creation_time : 2021-01-05T13:45:58.000000Z
handler_name : ETI ISO Audio Media Handler
Stream #0:2(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 93 kb/s (default)
Metadata:
creation_time : 2021-01-05T13:45:58.000000Z
handler_name : ETI ISO Audio Media Handler
Stream #0:3(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 93 kb/s (default)
Metadata:
creation_time : 2021-01-05T13:45:58.000000Z
handler_name : ETI ISO Audio Media Handler
Stream #0:4(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 93 kb/s (default)
Metadata:
creation_time : 2021-01-05T13:45:58.000000Z
handler_name : ETI ISO Audio Media Handler
Stream #0:5(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 93 kb/s (default)
Metadata:
creation_time : 2021-01-05T13:45:58.000000Z
handler_name : ETI ISO Audio Media Handler
Stream #0:6(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 93 kb/s (default)
Metadata:
creation_time : 2021-01-05T13:45:58.000000Z
handler_name : ETI ISO Audio Media Handler
Input #1, srt, from 'output_ar.srt':
Duration: N/A, bitrate: N/A
Stream #1:0: Subtitle: subrip
[Parsed_subtitles_3 @ 0x5601070b1dc0] Shaper: FriBidi 0.19.7 (SIMPLE)
Fontconfig error: Cannot load default config file
[Parsed_subtitles_3 @ 0x5601070b1dc0] No usable fontconfig configuration file found, using fallback.
Fontconfig error: Cannot load default config file
[Parsed_subtitles_3 @ 0x5601070b1dc0] Using font provider fontconfig
Stream mapping:
Stream #0:0 (h264) -> scale_npp (graph 0)
subtitles (graph 0) -> Stream #0:0 (h264_nvenc)
Stream #0:0 -> #0:1 (h264 (native) -> h264 (h264_nvenc))
Stream #0:1 -> #0:2 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
[h264 @ 0x56010792f980] Error creating a NVDEC decoder: 1
[h264 @ 0x56010792f980] Failed setup for format cuda: hwaccel initialisation returned error.
[Parsed_subtitles_3 @ 0x560107364cc0] Shaper: FriBidi 0.19.7 (SIMPLE)
Fontconfig error: Cannot load default config file
[Parsed_subtitles_3 @ 0x560107364cc0] No usable fontconfig configuration file found, using fallback.
Fontconfig error: Cannot load default config file
[Parsed_subtitles_3 @ 0x560107364cc0] Using font provider fontconfig
Impossible to convert between the formats supported by the filter 'graph 0 input from stream 0: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
[aac @ 0x56010734d400] Qavg: 65536.000
[aac @ 0x56010734d400] 2 frames left in the queue on closing
Conversion failed!
编辑:取得了一些进展。我现在不再收到错误,但在查看输出时,没有刻录字幕。命令:
ffmpeg -hwaccel cuvid -c:v h264_cuvid -i 3030025890-TEST.mp4 -c:v h264_nvenc -map 0:v:0 -map 0:a:0 -g 50 -b:v 5M -maxrate 5.5M -minrate 4M -bufsize 5M -vf "scale_npp=1920:1080, hwdownload, format=nv12, subtitles=output_ar.srt, hwupload" -preset fast 1080_output.mp4