我正在使用 avconv 将 MPEG 传输流转换为 H264。我的主要目标是从源视频文件中捕获高质量的屏幕截图。
TS 文件是隔行扫描的,因此我首先将其转换为 H264,然后尝试从编码的视频中截取屏幕截图。但是,质量不佳 - 我看到屏幕高对比度区域的边缘参差不齐,还有一些类似于 JPEG 压缩伪影的噪点。
我正在尝试各种质量预设、Yadif 去隔行和降噪的组合,但质量似乎仍然有所欠缺。
文件大小并不重要——只要截图质量高,我并不介意最终得到巨大的视频文件。压缩时间有点重要,但我不介意编码步骤是否需要很长时间。
我应该使用哪些设置才能从这些视频文件中获取最高质量的屏幕截图?假设我有一个 1080i 输入,我如何才能生成尽可能接近 1080p 的屏幕截图?当然,输出的质量不可能高于输入,但我希望尽可能接近。
我将使用 avconv 从视频中提取屏幕截图,但为了测试,我将暂停 VLC 来检查质量。
答案1
在 1mn 标记处进行无损截图:
ffmpeg -i input.1080i.ts -vf yadif -ss 01:00 -vframes 1 screenshot.png
(很抱歉使用 ffmpeg,但 avconv 命令应该非常接近 - 如果不相同的话)
但是,首先你必须确保去隔行扫描是正确的选择。源是 1080i 并不意味着它不是逐行内容隔行扫描,在这种情况下你应该不是解除隔行。
有可能电视电影化内容,在这种情况下您应该使用 fieldmatch 过滤器(我希望它在 avconv 中可用):
ffmpeg -i input.1080i.telecined.ts -vf fieldmatch -ss 01:00 -vframes 1 screenshot.png
最后,如果 1080i 实际上是逐行扫描的话,那么您就不需要任何一个了!
ffmpeg -i input.1080i.eu.ts -ss 01:00 -vframes 1 screenshot.png
-ss 01:00
另外,请注意,虽然通过在输入前附加可以获得更快的结果,但最终的时间可能不准确。