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 標題欄高度調整