ffmpeg 缩放 nvenc 保持纵横比

ffmpeg scaling nvenc maintaining aspect ratio

我想将 mkv 文件完全硬件转码为 mp4 并放大/缩小保持纵横比的内容。

使用基于 CPU 的转码,您只需添加:

scale=1920:1080:force_original_aspect_ratio=decrease

使用硬件 (CUDA) 转码可以在解码端 -resize 或在编码端 -scale_npp 进行转码,但两者似乎都无法强制执行原始纵横比。

例如,我想将 1920x800 文件放大到 1920x1080,同时用黑条填充其余部分,这样我就可以在黑条上叠加字幕...

有了这个,我可以使用 GPU 功能完全转码,而不是利用 cpu。有什么想法吗?

使用 scale_npp,您可以手动实施 force_original_aspect_ratio

假设您的最大尺寸为 1920x1080,

会是

scale_npp=w='if(gt(a\,1920/1080)\,1920\,oh*a)':h='if(gt(a\,1920/1080)\,ow/a\,1080)'

但是,scale 和 scale_npp 都不会填充输入。这需要使用 s/w 垫过滤器。