我正在使用这样的东西:
avconv -f x11grab -s 1024x768 -r 24 -i 0:0 -deadline realtime -b 5000000 -minrate 200000 -maxrate 40000000 recording-filename-000.webm
哪里:
-f x11grab
-强制输入的屏幕捕获“格式”。
-s 1024x768
是输入文件(又称捕获区域)的分辨率。例如,等于桌面分辨率。如果小于该范围,则记录区域将位于左侧和顶部。在此示例中,我使用了1024x768记录区域。
-r 24
-帧率。实际电影基本上使用23到30 FPS来提供平滑的录制图像。但是,对于屏幕广播,可以减少它以降低比特率以获得更好的图像。我用24来做游戏的屏幕截图。
-i 0:0
提示使用显示0:0作为来源(设备采用xorg表示法)。如果只有1个监视器和默认的Xorg设置,则大多数情况下0:0是可以的。
-deadline realtime
-是libvpx的提示。我们想要实时捕获。我们需要实时性能。因此,libvpx将尽最大努力在实时中对VP8进行编码。为此,它在一定程度上是以质量为代价的。在给定的比特率下,质量将比非实时方式差一些。但是编码速度会飞涨。因此,在我的硬件上,它可以处理1024x768 @ 24FPS,激烈的场景,而不会丢失任何帧(不过建议使用功能强大的CPU)。在此示例中,我希望以良好的FPS和相当大的捕获面积获得高质量的实时捕获。因此编解码器的CPU使用率可能是一个问题。这就是为什么要获得良好效果确实需要此提示的原因。
-b 5000000
-目标比特率(以位/秒为单位)。我使用5Mbits来获得相当激烈的场景的大致图像。编解码器将尝试使视频的平均比特率速度保持接近此值。该值越低,质量越差,文件越小。您可以尝试一下,以了解哪种比特率适合特定用途。如果您超调,视频共享服务将下转换视频。如果您要使用自己的服务器,则由您自己来决定流量。如果下冲,图像质量会很差。随时更改价值以了解最适合您的想法。5Mbits旨在或多或少地使您在游戏中无法轻松看到图片被过度压缩的激烈场景的现场捕捉。对于捕获静态应用程序,您基本上需要的远不止于此。
-minrate
200000-是编解码器的最低允许比特率。取决于您要捕获的事物的性质,有时您可能想要强制最小比特率以无论如何保持合理的外观。有时,编解码器试探法可能会将比特率降低到远低于您想要的值,从而在某些场景下产生不良图像。即使编解码器认为场景很简单并且可以丢弃比特率,此选项也可以强制编解码器将比特率保持在最低水平。此参数的高值可能会通过防止编解码器使用较低的比特率来增加文件大小。
-maxrate 40000000
-此值控制激烈场景下的最大突发比特率。如果认为必须提高速度以保持某些场景的良好质量,我使用了很高的值来使编解码器远远高于期望的平均值。为了在所有条件下都能获得漂亮的图片,最好将其设置得足够高(40Mbits类似于BlueRay的速度,并且可以达到目的)。另一方面,如果要使用自己的服务器进行流传输,则必须在激烈的场景中以牺牲一些图片质量为代价来降低此值。其他服务器可能无法应对所需的突发比特率,无法将其实时交付给用户。然后玩家将面临缓冲区不足(这很烦人)。视频共享服务将自行处理,通常会以降低图像质量为代价将视频下变频为较低的参数。
recording-filename-000.webm
-是输出的文件名。如果使用.webm扩展名,则ffmpeg / avconv足够聪明,可以理解您想要使用WEBM。就是这么简单-avconv从文件名中猜测所需的格式。因此,.WEBM文件位于其中。
就是这样-此命令确实将屏幕录像直接定向到webm文件。不需要额外的转换,并且libvpx
建议尽可能快。由于没有声音输入规范,因此没有声音。它可能不是您想要的。对于声音,还必须指定声音流的输入源。
附注:这看起来有些复杂,但最终您会发现一种尺寸无法容纳所有尺寸。因此,为了在所有情况下都能获得漂亮的图像,您可能真的想为编解码器使用一些手柄并进行调整。Ffmpeg为您提供了您可能需要的所有句柄,而不仅仅是这些。这是视频转换和编码的重型武器。因此,对于那些想要或多或少进行高级编码的人来说,此示例是一个很好的起点,并准备尝试进行一些尝试以获得真正体面的结果。