我正在Windows 10的命令行上使用ffmpeg,我想让Cuda尝试缩短执行时间。像这样的简单cut命令可以正常工作,并且其执行时间减少了60-70%。很棒。
ffmpeg -hwaccel cuvid -c:v h264_cuvid -ss 00:00:10 -i in.mp4 -c:v h264_nvenc out.mp4
现在,我尝试使用-filter_complex标志在视频上叠加,淡入淡出和转换png图像。有效的非cuda增强命令是以下命令:
ffmpeg -i in.mp4 -loop 1 -t 75 -i overlay.png -filter_complex "[1:v]fade=t=in:st=30:d=0.3:alpha=1,fade=t=out:st=35.7:d=0.3:alpha=1[png1];[0:v][png1]overlay=x='if(gte(t,30), (t-30)*10, NAN)'" -movflags +faststart out.mp4
然后,我像这样在命令中添加了与cuda相关的标志。
ffmpeg -hwaccel cuvid -c:v h264_cuvid -i in.mp4 -loop 1 -t 75 -i overlay.png -filter_complex "[1:v]fade=t=in:st=30:d=0.3:alpha=1,fade=t=out:st=35.7:d=0.3:alpha=1[png1];[0:v][png1]overlay=x='if(gte(t,30), 60-tanh((t-30)*30/5)*60, NAN)'" -movflags +faststart -c:v h264_nvenc out.mp4
但是它不起作用。我收到此错误。
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
我什至不知道这意味着什么。我可以使用Cuda在GPU上实际运行任何ffmpeg命令吗?我已经找到了有关hwupload_cuda标志的信息,但是我不确定是否应该使用它以及如何使用它。到目前为止,我的尝试失败了。 关于如何修改命令以使其在GPU上运行的任何建议? 谢谢。
答案 0 :(得分:0)
只需添加
hwdownload,YOUR_FILTER,hwupload
像这样:
ffmpeg.exe
-y
-hwaccel_device 2
-hwaccel cuvid
-c:v h264_cuvid
-i input.mp4
-vfhwdownload,format=nv12,drawtext=textfile=file.txt:x=0:y=0:fontfile='c\:\/windows\/fonts\/arial.ttf',hwupload
-c:v h264_nvenc
-f mp4 output.mp4"