在ffmpeg filter_complex

时间:2019-06-21 17:06:17

标签: video ffmpeg video-processing

我输入的视频尺寸为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

1 个答案:

答案 0 :(得分:2)

问题1:.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

问题2:无法为[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