【问题标题】:High Quality Screen Capture with FFmpeg使用 FFmpeg 进行高质量屏幕截图
【发布时间】:2014-10-11 12:30:36
【问题描述】:

我正在尝试找出在 REHL 上用于高质量屏幕捕获的命令。

我尝试了各种选择,但没有一个真正奏效。质量不够好。我对 ffmpeg 很陌生,不太了解所有不同的标志。因此,我们将不胜感激!

我尝试过的命令:

ffmpeg -y -f x11grab -r 30 -s 1920x1080 -i :0.0+0,0 -vcodec libx264 -strict -2 -b:v 16M output.mov

我尝试的第一个命令。奇怪的是它似乎没有保留指定的比特率-b:v 16M。输出视频的比特率仅为 2mb/s。这不是在截屏时指定比特率的正确方法吗?

ffmpeg -f x11grab -s 1920x1080 -r 30 -i :0.0 -qscale 0 -vcodec huffyuv output.mov

huffyuv 编解码器应该是无损的,但质量似乎并不比 libx264 输出更好。

ffmpeg -f x11grab -r 30 -s 1920x1080 -i :0.0+0,0 -vcodec copy -pix_fmt yuv420p -qscale 0 -an output.mkv
ffmpeg -f rawvideo -pix_fmt yuv420p -s:v 1920x1080 -r 30 -i output.mkv -an -c:v libx264 -qscale 0 result.mov 

我什至尝试捕获 rawvideo,然后将其转换为 libx264 编解码器视频。但输出已损坏。

我使用的是今年 4 月 23 日构建的 ffmpeg 版本。它没有我在很多帖子中提到的-vpre lossless_ultrafast 这样的预设。

编辑:

经过更多研究,这是我最终使用的命令。我必须使用 h264 编解码器和 yuv420p 作为 pixel_fmt,因为我需要能够使用 quicktime 播放 quicktimes。

ffmpeg -y -f x11grab -framerate 30 -video_size 1920x1080 -i :0.0+0,0 -c:v libx264 -pix_fmt yuv420p -qp 0 -preset ultrafast output.mov

即使 -qp 设置为 0,质量似乎也没有太大改善。但这也可能是因为根据这篇文章将 rgb 转换为 yuv 颜色空间。

https://trac.ffmpeg.org/wiki/Encode/H.264

【问题讨论】:

  • 可能缺少您的 libx264 第一行的 qscale 参数。
  • @rogerdpack libx264 忽略 -qscale。请改用-crf
  • 请在前两个命令中包含完整的ffmpeg 控制台输出。
  • stackoverflow.com/a/43464269/6180077 访问此链接以获取有效的 FFMPEG c++ mp4 格式屏幕录像机应用程序。
  • 你试过-crf 0 对我来说效果很好。

标签: video ffmpeg video-encoding screen-capture x264


【解决方案1】:

在网上找到这个,也许它会回答你的问题:

http://wiki.oz9aec.net/index.php/High_quality_screen_capture_with_Ffmpeg

编辑:如 cmets 中所述,此答案已过时。请忽略。

【讨论】:

  • 感谢您的链接。是的,我看到了那个,但是我们拥有的 ffmpeg 构建没有这些命令中使用的预设。
  • 你有什么预设?
  • 非常有限... libvpx-1080p50_60、libvpx-360p、libvpx-720p、libx264-ipod640、libvpx-1080p、libvpx-720p50_60、libx264-ipod320
  • 是的,似乎非常有限......如果我理解正确,1080p 对你来说还不够,对吧?
  • 1080p 用于 libvpx。我只是试一试。不好。 :(
猜你喜欢
  • 1970-01-01
  • 2017-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-28
  • 2020-08-01
  • 2013-11-01
  • 1970-01-01
相关资源
最近更新 更多