在 ffmpeg 中去除闪烁、裁剪和放大

Posted

技术标签:

【中文标题】在 ffmpeg 中去除闪烁、裁剪和放大【英文标题】:Remove flicker, crop and upscale in ffmpeg 【发布时间】:2020-12-09 10:44:18 【问题描述】:

我花了一整天的时间在ffmpeg 行命令上,在谷歌上搜索了很多,但无法实现我想要的,因此我来这里寻求一些建议。 我有一个视频testinput.mpg,我相信它是一个mpeg-2 视频。它的尺寸为720x576,具有25 fps,总比特率为4224 kbps

第一个问题是导出的素材闪烁,我无法使用 ffmpeg 删除它,我尝试了很多命令,例如调整亮度、对比度、色调、饱和度等等。

第二个问题是提取中心部分,我可以使用以下命令使用裁剪功能完成此操作。

ffmpeg -i testinput.mpg -filter:v "crop=468:374" testoutput.mpg

但在裁剪后,我观察到比特率从 4224 kbps 下降到 761 kbps,我认为这降低了视频质量。

我想要实现的是:

    正确裁剪视频并保持相同的质量 (acodec copy vcodec copy) -> ffmpeg 不允许我同时做这两件事(裁剪和使用相同的编解码器) 消除视频中的闪烁并将其升级为 4K 或高清画质,使其在大电视(最好是 4K)上看起来不错

我请求一些有关如何达到预期结果的帮助。有人能解释一下吗?

这是我正在制作的 google drive 上的 10 秒示例视频

testinput.mpg

testoutput.mpg

谢谢

【问题讨论】:

电视会自动升级吗?如果是,则无需升级。 感谢您的评论。是的,电视会自动升级,但我观察到质量下降,并且文本周围的闪烁和阴影在大字体下非常明显。命令行是否正确?我不确定它是否在输出中保持代码相同。如果在 ffmpeg 中无法获得所需的输出,则可以,但可以帮助我消除闪烁...非常令人不安...谢谢 升级不会使其具有更高的质量。不可能给它更高的质量。因此,使用 ffmpeg 进行升级不会比电视自动升级更好。您是否曾经将 JPG 放大到 1 倍以上?看起来很糟糕。升级也在做同样的事情。 使用 yadif 过滤器去隔行是否使它看起来更好? ffmpeg -i testinput.mpg -filter:v "yadif,crop=468:374" -q:v 3 -c:a copy testoutput.mpg 还有bwdif和w3fdif。有关每个过滤器的选项和值,请参阅 filter documentation。 yadif=mode=1 可能看起来更好,具体取决于内容。 【参考方案1】:

尝试使用 yadif 过滤器进行去隔行扫描。上传到 YouTube 的命令:

ffmpeg -i input.mpg -filter:v "yadif,crop=468:374" -c:v libx265 -crf 23 -c:a copy output.mkv

不能同时过滤和stream copy (-c:v copy) 视频。但是因为音频没有被过滤,所以可以复制(-c:a copy)。

避免升级。升级不会使其具有更高的质量。从小尺寸到大尺寸,不可能给它更高的质量。这就像将 JPG 放大 1 倍以上。看起来很糟糕。放大是做同样的事情,因为信息不存在使它在更大的尺寸下看起来更好。

【讨论】:

Q1 - 此命令生成 .mkv 文件。如果我将其更改为 .mp4,它会生成一个 .mp4 文件还是我们需要添加/更改参数? Q2 - 是否可以在同一命令中用特定帧替换视频的几帧?例如。我想复制一个在 00:00:03 位置可用的帧,并在 00:00:00 到 00:00:15 范围内粘贴该帧,并将其放在同一命令行中谢谢 1) 我选择 .mkv 是因为您想要一个用于 YouTube 的命令。 .mkv 几乎可以处理任何音频格式,因此它可以让您流式复制它,从而节省时间并保持质量。如果您想要 .mp4,请将 -c:a copy 更改为 -c:a aac 并将 output.mkv 更改为 output.mp4。 2)这是一个完全不同的主题,您应该将其作为新问题发布。 Stack Overflow 旨在为每个帖子提供 1 个问题,而不是跨越多个主题的多个后续问题。 非常感谢您的帮助

以上是关于在 ffmpeg 中去除闪烁、裁剪和放大的主要内容,如果未能解决你的问题,请参考以下文章

黄聪:ffmpeg基本用法(转)

ffmpeg基本用法

在 Android 中使用 FFmpeg 将视频裁剪为方形格式

如何在 ffmpeg 中居中裁剪视频缩略图(方形缩略图)?

如何放大裁剪尺寸

在 ubuntu 上使用 ffmpeg 裁剪视频中的黑条会改变视频大小