Wayland 环境下gif录屏
昨天在写 Firefox 的一些有趣功能的时候,需要演示一些 ui 操作步骤,这个时候截图不太能清楚记录过程,联想到 Github 上面经常有些 gif 图片演示操作步骤,用命令行 2 张图片结合生产了一张 gif 图片也是可以的,略微麻烦。在这种场景下,录屏操作步骤,然后生成一个 gif 图片是个理想的方式。当然,网站上嵌入视频也可以,但是很多平台并不支持视频上传,对于简单网页教程来说,图片更加适合。
1. 垂死挣扎
当前 Linux 生态里面 peek 和 Kooha 是主流的录屏生成 gif 的软件。令人遗憾的是:
- peek
在我的 labwc 环境下,装上 peek 录制出来的 gif 是黑屏,什么都看不到,而且作者不维护了,具体见这份申明。
- Kooha
peek 无效的情况下,没有办法,只能转战 Kooha,好不容易装完依赖包,在最终的编译阶段,报错了: libadwaita-1 的版本不对,懒得编译安装,主动放弃了。
1error: failed to run custom build command for `libadwaita-sys v0.4.1`
2
3Caused by:
4 process didn't exit successfully: `/home/mephisto/github/Kooha/_build/src/release/build/libadwaita-sys-324727e752f0426f/build-script-build` (exit status: 1)
5 --- stdout
6 cargo:rerun-if-env-changed=LIBADWAITA_1_NO_PKG_CONFIG
7 cargo:rerun-if-env-changed=PKG_CONFIG_x86_64-unknown-linux-gnu
8 cargo:rerun-if-env-changed=PKG_CONFIG_x86_64_unknown_linux_gnu
9 cargo:rerun-if-env-changed=HOST_PKG_CONFIG
10 cargo:rerun-if-env-changed=PKG_CONFIG
11 cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
12 cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
13 cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
14 cargo:rerun-if-env-changed=PKG_CONFIG_PATH
15 cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
16 cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
17 cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
18 cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
19 cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
20 cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
21 cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
22 cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
23 cargo:warning=`PKG_CONFIG_ALLOW_SYSTEM_CFLAGS="1" "pkg-config" "--libs" "--cflags" "libadwaita-1" "libadwaita-1 >= 1.4"` did not exit successfully: exit status: 1
24 error: could not find system library 'libadwaita-1' required by the 'libadwaita-sys' crate
25
26 --- stderr
27 Package dependency requirement 'libadwaita-1 >= 1.4' could not be satisfied.
28 Package 'libadwaita-1' has version '1.3.3', required version is '>= 1.4'
29
30warning: build failed, waiting for other jobs to finish...
31[45/47] Generating data/io.github.seadve.Kooha.metainfo.xml with a custom command
32FAILED: src/kooha
33/usr/bin/env CARGO_HOME=/home/mephisto/github/Kooha/_build/cargo-home /home/mephisto/.cargo/bin/cargo build --manifest-path /home/mephisto/github/Kooha/Cargo.toml --target-dir /home/mephisto/github/Kooha/_build/src --release && cp src/release/kooha src/kooha
34ninja: build stopped: subcommand failed.
特别说明,如果读者的环境能能安装 peek/Kooha,个人建议直接使用,省心省力。
2. 柳暗花明
当我准备再次使用 imagemagick 工具集,如下所示那样制作 gif 图片的时候,仿佛听到后面有人说: "你这里溢出了,这里少了个分号,这样是不对的..."。
1convert -delay 100 -loop 0 *.jpeg animatedGIF.gif
此时,我想起了 wf-recorder
,一个简易功能强大的录屏工具。也许它不光能输出 mp4/webp,也能输出 gif 呢?
我翻看了 Readme 文档,Ctrl + F
搜索 gif 关键字,并没有任何匹配结果,通常这种情况下,一个坚实的 Linux 用户是不会放弃的,最终,在 issues 列表中搜索 gif 关注找到了真解,参考 issue
你只需要命令行这样操作就好了:
1wf-recorder -f test.gif -c gif -g "$(slurp)"
- slurp 其实是另外一个软件,会让你选择范围,不带这个参数的话,会让你选择屏幕(如果使用了多屏幕的话)
- -c gif 指定编码(codec)格式,没有这个参数,输出 test.gif 会报错。
其实 wf-recorder help 文档上也有相关说明,太隐蔽了,大部分人不会注意到。
-c, --codec Specifies the codec of the video.
Supports GIF output also
.To modify codec parameters, use -p <option_name>=<option_value>
gif 图片示例(录制了好多秒,大小 792K):
停止录屏,按 Ctrl + c
, 会有报错,忽略就好。
1➜ ~ wf-recorder -f test.gif -c gif -g "$(slurp)"
2Detected output based on geometry: DP-1
3selected region 1936,44 1263x973
4Using video filter: null
5Output #0, gif, to 'test.gif':
6 Stream #0:0: Video: gif, bgr8(pc), 1262x972 [SAR 1:1 DAR 631:486], q=2-31, 200 kb/s
7^C[gif @ 0x7f031c000d40] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 1167 >= 1102
版权申明:
- 未标注来源的内容全部为原创,未经授权请勿转载(因转载后排版往往错乱、内容不可控、无法持续更新等);
- 非营利为目的,演绎本博客任何内容,请以'原文出处'或者'参考链接'等方式给出本站相关网页地址(方便读者)。
相关文章:
- 应用启动器yofi使用配置
- Ubuntu安装chrome的方法总结
- Linux安装最新版本Python
- lvs端部署
- alacritty 终端使用
- 我的工具箱
- Xray科学上网简要
- Firefox的一些有趣功能
- Ubuntu 切换系统语言
- Firefox 标题栏高度调整