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 垫过滤器。
我想将 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 垫过滤器。