FFmpeg 给视频增加黑边

您所在的位置:网站首页 ffmpeg缩放视频尺寸 FFmpeg 给视频增加黑边

FFmpeg 给视频增加黑边

2024-06-06 01:12| 来源: 网络整理| 查看: 265

使用FFmpeg给视频增加黑边需要用到 pad 这个滤镜,具体用法如下:     -vf pad=1280:720:0:93:black 按照从左到右的顺序依次为: ​    “宽”、“高”、“X坐标”和“Y坐标”,宽和高指的是输入视频尺寸(包含加黑边的尺寸),XY指的是视频所在位置。 ​ 比如一个输入视频尺寸是1280x534的源,想要加上黑边变成1280x720,那么用上边的语法可以实现,93是这样得来的,(720-534)/2。 ​ 如果视频原始1920x800的话,完整的语法应该是:     -vf 'scale=1280:534,pad=1280:720:0:93:black' 先将视频缩小到1280x534,然后在加入黑边变成1280x720,将1280x534的视频放置在x=0,y=93的地方, ​FFmpeg会自动在上下增加93像素的黑边。 注:black可以不写,默认是黑色

举例: 我原视频尺寸是 960*442

现在需要改成分辨率为720*1280 并且视频保持原比例,其余黑边填充

首先就分把视频转为 720*316

316的算法 442/(960/720)取整

482算法 (1280-316)/2

  -vf 'scale=720:619,pad=720:1280:0:482:black'

具体代码

/** * @Author * @Description 修改视频分辨率 * @Date 9:02 2022/7/21 * @Param [sourcePath, targetPath, height, width] * @return void **/ public static void updateDpiAudio(String sourcePath, String targetPath,Integer height,Integer width) throws Exception { try { ProcessWrapper ffmpeg = new DefaultFFMPEGLocator().createExecutor(); ffmpeg.addArgument("-i"); ffmpeg.addArgument(sourcePath); ffmpeg.addArgument("-vf"); //视频宽:720 BigDecimal widthRatio = new BigDecimal(width).divide(new BigDecimal(720),1,BigDecimal.ROUND_UP); BigDecimal heightReal = new BigDecimal(height).divide(widthRatio,BigDecimal.ROUND_UP); BigDecimal value = new BigDecimal(1280).subtract(heightReal).divide(new BigDecimal(2),BigDecimal.ROUND_UP); ffmpeg.addArgument("scale=720:"+heightReal.intValue()+",pad=720:1280:0:"+value.intValue()+":black"); ffmpeg.addArgument(targetPath); ffmpeg.execute(); try (BufferedReader br = new BufferedReader(new InputStreamReader(ffmpeg.getErrorStream()))) { blockFfmpeg(br); } log.info("转化视频分辨率成功={}", targetPath); } catch (IOException e) { throw new Exception("转化视频分辨率失败"); } } public static void main(String[] args) { try { updateDpiAudio("D:\\pic\\a\\6977276173130827137.mp4","D:\\pic\\a\\测试转码测试.mp4",442,960); } catch (Exception e) { e.printStackTrace(); } }



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3