我正在寻找一个可以以 WebM 格式输出的桌面录像机/截屏应用程序,或者一个可以将生成的 .ogv 格式转换gtk-recordmydesktop
为 WebM 的程序。
我选择 WebM 作为我需要的格式,因为它似乎是 YouTube 支持的唯一免费编解码器,我的录制内容将保存在 YouTube 上。我以前尝试上传 .ogv,但得到的是纯绿色视频,所以这对我来说不行。
我住在美国,我有意识地尽量远离任何可能存在软件专利问题的东西,比如gstreamer0.10-plugins-ugly
或gstreamer0.10-plugins-bad
。正是出于这个原因,我最初对 Tibesti 感兴趣(例如),但这需要安装上述软件包。
我在网上搜索了一些免费(既省钱又自由)的解决方案,但到目前为止一无所获。有什么建议吗?
答案1
12.04 LTS
看起来ffmpeg
不再正常工作在此版本中,用于recordmydesktop
将 的 .ogv 录音转换为 WebM。由于不再维护,建议改用其替代品avconv
,该替代品在包中提供libav-tools
(如果已安装,它似乎会自动安装ffmpeg
)。
转换所需使用的命令avconv
与以下内容没有太大区别ffmpeg
:
avconv -i input.ogv output.webm
因此,如果有人在 12.04(或可能更高版本)中遇到同样的问题,尝试仅使用免费软件包将 .ogv 转换为 .webm,这就是我解决它的方法。如果您要录制视频以展示新功能或使用视频记录问题,这应该会有所帮助。
答案2
我正在使用类似这样的东西:
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。
就是这样 - 此命令会直接将屏幕录制到 webm 文件。无需额外转换,并且libvpx
会尽可能快。由于没有声音输入规范,因此没有声音。它可能是您想要的,也可能不是。对于声音,您还必须指定声音流的输入源。
PS 这可能看起来有点过于复杂,但最终你会发现,一刀切是行不通的。因此,为了在所有情况下都能获得好看的图片,你可能真的需要一些编解码器的句柄,并希望对其进行调整。Ffmpeg 为你提供了你可能需要的所有句柄,甚至更多。它是视频转换和编码的重武器。因此,对于那些想要进行或多或少高级编码并准备进行一些实验以获得真正不错的结果的人来说,这个例子是一个很好的起点。
答案3
Ctrl您可以在 Ubuntu 11.10 + GNOME Shell 中通过按下+ Shift+ Alt+R组合键进行 WebM 录音。
第一次按下组合键时,通知区域会出现一个红色圆圈,表示录音已开始。第二次按下组合键时,红色圆圈消失,您的录音将保存在目录中${HOME}/Videos
。
更多信息请点击这里:Gnome Shell 备忘单:屏幕录制