Video

GIF 截屏;UNIX方式

  • March 13, 2021

要對螢幕的選定部分進行靜態螢幕截圖,我經常scrot使用-s shot.png. 這非常適合在 StackExchange 文章中添加插圖。我什至發現這個腳本可以自動將這樣的截圖上傳到Imgur.com並在我的 X 剪貼板中放置一個連結!

讓我們把它變成十二個我如何類似地創建一個 GIF 截屏影片?

Ask Ubuntu 上討論過, & co之類程序旨在“使用者友好”,但根據我的經驗,這些程序有缺陷、效率低下、大多無法編寫腳本並且不適合像這樣的一次性小事情。recordmydesktop``byzanz

我只想選擇一個區域並記錄一個 GIF,使用我可以理解的控制台命令,而不是一些神秘的無法編寫腳本的 GUI 怪物。

我怎樣才能做到這一點?

好吧

GIF vimcast!

我開始ffcast,做了vim,退出ffcast,然後converted .avi.gif

我在另一個終端上執行了錄製命令。$PATH在此答案的末尾為您完善了腳本。

發生了什麼?

擷取

FFcast 幫助使用者以互動方式選擇螢幕區域並將幾何圖形移交給外部命令,例如 FFmpeg,以進行螢幕錄製。

ffcast是Arch Linux 社區(主要是lolilolicon)的一些 hacking的光榮產品。你可以在 github 上找到它(或者在Arch ers的 AUR中)。它的依賴列表只是and ,儘管您需要(AUR 連結))進行互動式矩形選擇。bash``ffmpegxrectsel

您還可以ffmpeg在命令之後附加標誌。我設置-r 15為以每秒 15 幀的速度擷取並-codec:v huffyuv進行無損錄製。(玩這些來調整大小/質量的權衡。)

送禮

ImageMagick 可以讀取.avi影片並具有一些 GIF 優化技巧,可以在保持質量的同時大幅減小文件大小:-layers Optimizetoconvert呼叫通用優化器。ImageMagick 手冊也有一個關於高級優化的頁面

最終腳本

這就是我的$PATH. 它在轉換之前記錄到一個臨時文件中。

#!/bin/bash
TMP_AVI=$(mktemp /tmp/outXXXXXXXXXX.avi)
ffcast -s % ffmpeg -y -f x11grab -show_region 1 -framerate 15 \
   -video_size %s -i %D+%c -codec:v huffyuv                  \
   -vf crop="iw-mod(iw\\,2):ih-mod(ih\\,2)" $TMP_AVI         \
&& convert -set delay 10 -layers Optimize $TMP_AVI out.gif

感謝BenCffcast在最近更新後找出正確標誌的偵探工作。

如果您想在基於 Debian 的發行版上安裝依賴項,Louis編寫了有用的安裝說明

哇!

引用自:https://unix.stackexchange.com/questions/113695