我输入的视频尺寸为720x1280。我从下面的命令获得的输出是1920x1080。
我面临的问题是,好的720p视频质量下降,输出视频质量下降。
ffmpeg -i inter.mpg -filter_complex "[0]scale=hd1080,setsar=1,boxblur=20:20[b]; [0]scale=-1:1080[v];[b][v]overlay=(W-w)/2" inter_1920x1080.mpg
如果缩小尺寸导致问题,我可以按比例放大视频尺寸以匹配1280高度。但是,有没有一种方法可以向“标尺”添加自定义值?
参考: 我已经提到了Gyan的this answer。
我现在尝试使用以下命令-
ffmpeg -i 6691602248444677381.mp4 -c:v -filter_complex "[0]scale=hd1080,setsar=1,boxblur=20:20[b]; [0]scale=-1:1080[v];[b][v]overlay=(W-w)/2" -b:v 800k output.mp4
我收到以下错误-
[NULL @ 0x7fa2af800000] Unable to find a suitable output format for '[0]scale=hd1080,setsar=1,boxblur=20:20[b]; [0]scale=-1:1080[v];[b][v]overlay=(W-w)/2'
[0]scale=hd1080,setsar=1,boxblur=20:20[b]; [0]scale=-1:1080[v];[b][v]overlay=(W-w)/2: Invalid argument
答案 0 :(得分:2)
.mpg
质量很差您正在使用编码器mpeg1video,它是.mpg
的默认值,它会输出非常旧的旧格式(MPEG-1视频)。此古老编码器的默认比特率值不足以用于现代尺寸的视频。如果这是您想要的格式,请添加输出选项-q:v 3
。增加价值以降低质量。或选择诸如-b:v 8000k
之类的比特率(出于演示目的,这只是一个任意的比特率值)。
如果不是MPEG-1格式,请使用-c:v
选项选择所需的编码器,和/或更改输出容器格式(例如.mkv
或.mp4
)。
示例:
ffmpeg -i inter.mpg -filter_complex "[0]scale=hd1080,setsar=1,boxblur=20:20[b]; [0]scale=-1:1080[v];[b][v]overlay=(W-w)/2" -c:v mpeg2video -q:v 3 inter_1920x1080.mpg
[0]scale=hd1080...
您添加了-c:v
,但未提供实际值,因此假设您的过滤图是您要使用的编码器的名称。正确的示例是-c:v libx264
。
您现在正在使用.mp4
,因此只需省略-c:v
,因为它会选择合理的默认编码器libx264。该编码器输出H.264视频。
libx264也具有默认的比特率,因此请删除-b:v 800k
。
您的命令现在应如下所示:
ffmpeg -i 6691602248444677381.mp4 -filter_complex "[0]scale=hd1080,setsar=1,boxblur=20:20[b]; [0]scale=-1:1080[v];[b][v]overlay=(W-w)/2" output.mp4