标签 动画 下的文章

一般人喜欢使用历史命令功能来查看/再次调用之前在终端中输入的命令。不幸的是,那样做只会显示先前输入的命令,而不是之前输出的内容。

在 Linux 中,有许多可以用来记录终端活动的实用工具。这种工具将会帮助我们记录用户在终端中的活动,并帮助我们识别输出中有用的信息。

在这之前,我们已经介绍了一些这类实用工具了。今天,让我们接着讨论这类工具。

如果你希望尝试其它一些记录你终端活动的工具,我推荐你试试 script 命令和 Terminalizer 工具。script 是在无头服务器中记录终端活动的最佳方式之一。script 是一个记录在终端中输入过的 Unix 命令的实用工具(在某些终端中,它会记录显示在你终端中的所有东西)。它会在当前工作目录下以文本文件方式储存所有终端输出。

不过,如果你在寻找 GIF 录制器 ,你可以尝试 GifineKgifPeek

什么是 Termtosvg

Termtosvg 是一个用 Python 编写的 Unix 终端录制器,它可以将你的命令行会话保存为 SVG 动画。

Termtosvg 的特点

  • 可以制作嵌入于项目主页的简洁美观的动画。
  • 可以在 SVG 模板中自定义配色、终端 UI 和动画。
  • 兼容 asciinema 录制格式。
  • 要求 Python 版本为 3.5 或更高。

如何在 Linux 中安装 Termtosvg

它是用 Python 编写的,所以我推荐使用 pip 来安装它。

请确保你已经安装了 python-pip 包。如果你还没安装,请输入下面的命令。 对于 Debian 或 Ubuntu 用户,请使用 aptapt-get 来安装 pip

sudo apt install python-pip

对于 Archlinux 用户,请使用 pacman 来安装 pip

sudo pacman -S python-pip

对于 Fedora 用户,请使用 dnf 来安装 pip

sudo dnf install python-pip

对于 CentOS 或 RHEL 用户,请使用 yum 来安装 pip

sudo yum install python-pip

对于 openSUSE 用户,请使用 zypper 来安装 pip

sudo zypper install python-pip

最后,请执行 pip 来安装 Termtosvg。

sudo pip3 install termtosvg pyte python-xlib svgwrite

如何使用 Termtosvg

成功安装 Termtosvg 后,请使用以下命令来开始录制。

$ termtosvg
Recording started, enter "exit" command or Control-D to end

如果只是想测试它是否正常工作,随意输入几行命令即可。

$ uname -a
Linux daygeek-Y700 4.19.8-2-MANJARO #1 SMP PREEMPT Sat Dec 8 14:45:36 UTC 2018 x86_64 GNU/Linux
$ hostname
daygeek-Y700
$ cat /etc/*-release
Manjaro Linux
DISTRIB_ID=ManjaroLinux
DISTRIB_RELEASE=18.0
DISTRIB_CODENAME=Illyria
DISTRIB_DESCRIPTION="Manjaro Linux"
Manjaro Linux
NAME="Manjaro Linux"
ID=manjaro
ID_LIKE=arch
PRETTY_NAME="Manjaro Linux"
ANSI_COLOR="1;32"
HOME_URL="https://www.manjaro.org/"
SUPPORT_URL="https://www.manjaro.org/"
BUG_REPORT_URL="https://bugs.manjaro.org/"
$ free -g
free: Multiple unit options doesn't make sense.
$ free -m
free: Multiple unit options doesn't make sense.
$ pip3 --version
pip 18.1 from /usr/lib/python3.7/site-packages/pip (python 3.7)

完成后,你可以按下 CTRL+D 或输入 exit 来停止录制。录制完后,输出文件会以一个独一无二的名字被保存在 /tmp 文件夹中。

$ exit
exit
Recording ended, SVG animation is /tmp/termtosvg_5waorper.svg

我们可以在任意浏览器中打开 SVG 文件。

firefox /tmp/termtosvg_5waorper.svg

最终效果


via: https://www.2daygeek.com/termtosvg-record-your-terminal-sessions-as-svg-animations-in-linux/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:zhs852 校对:校对者ID

本文由 LCTT 原创编译,Linux中国 荣誉推出

作为一名文字工作者,我需要在我的文章中添加图片。有时为了更容易讲清楚某个概念,我还会添加视频或者 gif 动图,相比于文字,通过视频或者 gif 格式的输出,读者可以更容易地理解我的指导。前些天,我已经写了篇文章来介绍针对 Linux 的功能丰富的强大截屏工具 Flameshot。今天,我将向你展示如何从一段视频或者一些图片来制作高质量的 gif 动图。这个工具就是 Gifski,一个跨平台、开源、基于 Pngquant 的高质量命令行 GIF 编码器。

对于那些好奇 pngquant 是什么的读者,简单来说 pngquant 是一个针对 PNG 图片的无损压缩命令行工具。相信我,pngquant 是我使用过的最好的 PNG 无损压缩工具。它可以将 PNG 图片最高压缩 70% 而不会损失图片的原有质量并保存了所有的阿尔法透明度。经过压缩的图片可以在所有的网络浏览器和系统中使用。而 Gifski 是基于 Pngquant 的,它使用 pngquant 的功能来创建高质量的 GIF 动图。Gifski 能够创建每帧包含上千种颜色的 GIF 动图。Gifski 也需要 ffmpeg 来将视频转换为 PNG 图片。

安装 Gifski

首先需要确保你安装了 FFMpeg 和 Pngquant。

FFmpeg 在大多数的 Linux 发行版的默认软件仓库中都可以获取到,所以你可以使用默认的包管理器来安装它。具体的安装过程,请参考下面链接中的指导。

Pngquant 可以从 AUR 中获取到。要在基于 Arch 的系统安装它,使用任意一个 AUR 帮助程序即可,例如下面示例中的 Yay

$ yay -S pngquant

在基于 Debian 的系统中,运行:

$ sudo apt install pngquant

假如在你使用的发行版中没有 pngquant,你可以从源码编译并安装它。为此你还需要安装 libpng-dev 包。

$ git clone --recursive https://github.com/kornelski/pngquant.git
$ make
$ sudo make install

安装完上述依赖后,再安装 Gifski。假如你已经安装了 Rust 编程语言,你可以使用 cargo 来安装它:

$ cargo install gifski

另外,你还可以使用 Linuxbrew 包管理器来安装它:

$ brew install gifski

假如你不想安装 cargo 或 Linuxbrew,可以从它的 发布页面 下载最新的二进制程序,或者手动从源码编译并安装 gifski 。

使用 Gifski 来创建高质量的 GIF 动图

进入你保存 PNG 图片的目录,然后运行下面的命令来从这些图片创建 GIF 动图:

$ gifski -o file.gif *.png

上面的 file.gif 为最后输出的 gif 动图。

Gifski 还有其他的特性,例如:

  • 创建特定大小的 GIF 动图
  • 在每秒钟展示特定数目的动图
  • 以特定的质量编码
  • 更快速度的编码
  • 以给定顺序来编码图片,而不是以排序的结果来编码

为了创建特定大小的 GIF 动图,例如宽为 800,高为 400,可以使用下面的命令:

$ gifski -o file.gif -W 800 -H 400 *.png

你可以设定 GIF 动图在每秒钟展示多少帧,默认值是 20。为此,可以运行下面的命令:

$ gifski -o file.gif --fps 1 *.png

在上面的例子中,我指定每秒钟展示 1 帧。

我们还能够以特定质量(1-100 范围内)来编码。显然,更低的质量将生成更小的文件,更高的质量将生成更大的 GIF 动图文件。

$ gifski -o file.gif --quality 50 *.png

当需要编码大量图片时,Gifski 将会花费更多时间。如果想要编码过程加快到通常速度的 3 倍左右,可以运行:

$ gifski -o file.gif --fast *.png

请注意上面的命令产生的 GIF 动图文件将减少 10% 的质量,并且文件大小也会更大。

如果想让图片以某个给定的顺序(而不是通过排序)精确地被编码,可以使用 --nosort 选项。

$ gifski -o file.gif --nosort *.png

假如你不想让 GIF 循环播放,只需要使用 --once 选项即可:

$ gifski -o file.gif --once *.png

从视频创建 GIF 动图

有时或许你想从一个视频创建 GIF 动图。这也是可以做到的,这时候 FFmpeg 便能提供帮助。首先像下面这样,将视频转换成一系列的 PNG 图片:

$ ffmpeg -i video.mp4 frame%04d.png

上面的命令将会从 video.mp4 这个视频文件创建名为 “frame0001.png”、“frame0002.png”、“frame0003.png” 等等形式的图片(其中的 %04d 代表帧数),然后将这些图片保存在当前的工作目录。

转换好图片后,只需要运行下面的命令便可以制作 GIF 动图了:

$ gifski -o file.gif *.png

想知晓更多的细节,请参考它的帮助部分:

$ gifski -h

这是使用 Gifski 创建的示例 GIF 动图文件。

正如你看到的那样,GIF 动图的质量看起来是非常好的。

好了,这就是全部内容了。希望这篇指南对你有所帮助。更多精彩内容即将呈现,请保持关注!

干杯吧!


via: https://www.ostechnix.com/gifski-a-cross-platform-high-quality-gif-encoder/

作者:SK 选题:lujun9972 译者:FSSlc 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Banner 图

录制终端会话可以满足我们不同类型的需求。通过录制终端会话,你可以完整记录你在终端中执行的操作,将其保存以供后续参考。通过录制终端会话,你还可以向青少年、学生或其它打算学习 Linux 的人展示各种 Linux 命令及其用例。值得庆幸的是,市面上已经有不少工具,可以帮助我们在类 Unix 操作系统下录制终端会话。我们已经介绍过一些可以帮助你录制终端会话的工具,可以在下面的链接中找到。

今天,我们要介绍另一款录制终端操作的工具,名字叫做 Termtosvg。从名字可以看出,Termtosvg 将你的终端会话录制成一个单独的 SVG 动画。它是一款简单的命令行工具,使用 Python 语言编写,可以生成轻量级、外观整洁的动画,可以嵌入到网页项目中。Termtosvg 支持自定义 色彩主题 color themes 、终端 UI,还可以通过 SVG 模板完成动画控制。它兼容 asciinema 录制格式,支持 GNU/Linux,Mac OS 和 BSD 等操作系统。

安装 Termtosvg

PIP 是一个面向 Python 语言编写的软件包的管理器,可以用于安装 Termtosvg。如果你没有安装 PIP,可以参考下面的指导:

安装 PIP 后,运行如下命令安装 Termtosvg 工具:

$ pip3 install --user termtosvg

此外,还要安装渲染终端屏幕所需的依赖包:

$ pip3 install pyte python-xlib svgwrite

安装完毕,我们接下来生成 SVG 格式的终端会话。

将 Linux 终端会话录制成 SVG 动画

使用 termtosvg 录制终端会话十分容易。打开终端窗口,运行如下命令即可开始录制:

$ termtosvg

注意: 如果 termtosvg 命令不可用,重启操作系统一次即可。

运行 termtosvg 命令后,可以看到如下命令输出:

Recording started, enter "exit" command or Control-D to end

你目前位于一个子 Shell 中,在这里可以像平常那样输入命令。你在终端中的所作所为都会被录制。

不妨随便输入一些命令:

$ mkdir mydirectory
$ cd mydirectory/
$ touch file.txt
$ cd ..
$ uname -a

操作完成后,使用组合键 CTRL+D 或者输入 exit 停止录制。录制结果将会保存在 /tmp 目录,(由于做了唯一性处理)文件名并不会重复。

现在,你可以在命令行运行命令,使用你的浏览器打开 SVG 文件:

$ firefox /tmp/termtosvg_ddkehjpu.svg

你也可以在(图形界面的)浏览器中直接打开这个 SVG 文件( File -> )。

我用 Firefox 浏览器打开的效果如下:

下面举例说明几种使用 Termtosvg 录制终端会话的方式。

我刚刚提到,Termtosvg 录制终端会话后默认保存成 /tmp 目录下的一个 SVG 动画文件。

但你可以指定 SVG 动画文件的文件名,例如 animation.svg;也可以指定一个存放路径,例如 /home/sk/ostechnix/

$ termtosvg /home/sk/ostechnix/animation.svg

录制终端会话并使用特定模板进行渲染:

$ termtosvg -t ~/templates/my_template.svg

使用指定的 屏幕参数 screen geometry 录制终端会话:

$ termtosvg -g 80x24 animation.svg

使用 asciicast v2 格式录制终端会话:

$ termtosvg record recording.cast

将 asciicast 格式的录制结果渲染成 SVG 动画:

$ termtosvg render recording.cast animation.svg

欲了解更多细节,请参考 Termtosvg 手册

好了,本次分享就到这里,希望对你有帮助。更多精彩内容,敬请期待!

干杯!


via: https://www.ostechnix.com/how-to-record-terminal-sessions-as-svg-animations-in-linux/

作者:SK 选题:lujun9972 译者:pinewall 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

不用我说,你也知道 GIF 动画在过去几年发展迅速。人们经常在线上文字交流时使用动画增添趣味,同时这些动画在很多其他地方也显得非常有用。

在技术领域使用动画能够很快的描述出现的问题或者返回的错误。它也能很好的展现出一个软件应用产品的特性。你可以在进行线上座谈会或者在进行公司展示时使用 GIF 动画,当然,你可以在更多的地方用到它。

现在,假设你的电脑桌面上打开了多个应用程序,或者无论出于什么目的,你想制作一个 GIF 动画来记录桌面上一个应用程序窗口的操作过程。你应该怎么做呢?显然,你需要一个工具来完成这件事。

如果你正在寻找了这样一个可以记录桌面上部分区域的工具,并且它可以自动把录屏转化成 GIF 动画; 现在,本教程会介绍一个 Linux 命令行工具来实现你的需求。

开始之前,你必须知道在本教程中所有的例子都是在 Ubuntu 14.04 上测试过的,它的 Bash 版本是 4.3.11(1) 。

Gifine

这个工具的主页是 Gifine 。它基于 GTK 工具包,是用 MoonScript 使用 lgi 库编写的。Gifine 不仅能够录屏、创建动画或视频,而且能够用它来把几个小型动画或视频拼接在一起。

引述这个工具的开发者的话:“你可以加载一个视频帧的目录或者选择一个桌面的区域进行录屏。你加载了一些视频帧后,可以连续查看它们,并裁剪掉不需要的部分。最终完成录屏后可以导出为 gif 或者 mp4 文件。”

Gifine 下载/安装/配置

在指引你下载和安装 Gifine 之前,应该指出安装这个工具时需要安装的依赖包。

首先需要安装的依赖包是 FFmpeg , 这个软件包是一种记录、转化和流化音频以及视频的跨平台解决方案。使用下列命令安装这个工具;

sudo apt-get install ffmpeg

接下来是图像处理系统 GraphicsMagick。这个工具的官网说:“它提供了一个稳健且高效的工具和库的集合,支持读写并且可以操作超过 88 种主要的图像格式,比如:DPX、 GIF、 JPEG、 JPEG-2000、 PNG、 PDF、 PNM 以及 TIFF 等。”

通过下面的命令安装:

sudo apt-get install graphicsmagick

接下来的需要的工具是 XrectSel 。在你移动鼠标选择区域的时候,它会显示矩形区域的坐标位置。我们只能通过源码安装 XrectSel ,你可以从 这里 下载它。

如果你下载了源码,接下来就可以解压下载的文件,进入解压后的目录中。然后,运行下列命令:

./bootstrap

如果 configure 文件不存在,就需要使用上面的命令

./configure --prefix /usr

make

make DESTDIR="$directory" install

最后的依赖包是 Gifsicle 。这是一个命令行工具,可以创建、编辑、查看 GIF 图像和动画的属性信息。下载和安装 Gifsicle 相当容易,你只需要运行下列命令:

sudo apt-get install gifsicle

这些是所有的依赖包。现在,我们开始安装 Gifine 。使用下面的命令完成安装。

sudo apt-get install luarocks

sudo luarocks install --server=http://luarocks.org/dev gifine

请注意第二个命令可能会返回下列错误:

No package 'gobject-introspection-1.0' found

你可以用下列命令安装这个包:

sudo apt-get install libgirepository1.0-dev

然后,再一次运行 luarocks install 命令。

Gifine 使用

完成安装之后可以使用下面的命令运行这个工具:

gifine

这个应用程序的 UI 是这样的:

Gifine UI

这里你可以进行两种操作:录视频帧或者加载视频帧。如果你单击了 录制矩形区域 Record rectange 按钮,你的鼠标指针处会变成一个 + ,这样便可以在你的屏幕上选择一个矩形区域。一旦你选择了一个区域,录屏就开始了, 录制矩形区域 Record rectange 按钮就会变成 停止录制 Stop recording 按钮。

Gifine screen recording

单击 停止录制 Stop recording 完成录屏,会在 Gifine 窗口出现一些按钮。

Gifine preview

用户界面的上半部分显示已经录制的视频帧,你可以使用它下面的滑块进行逐帧浏览。如果你想要删除第 5 帧之前或第 50 帧之后的所有帧数,你可以使用 裁剪左边 Trim left of 裁剪右边 Trim rigth of 按钮进行裁剪。也有可以删除特定帧数和减半删除帧数的按钮,当然,你可以重置所有的裁剪操作。

完成了所有的裁剪后,可以使用 保存 GIF Save GIF... 保存 MP4 Save MP4... 按钮将录屏保存为动画或者视频;你会看到可以设置帧延迟、帧率以及循环次数的选项。

记住,“录屏帧不会自动清除。如果你想重新加载,可以在初始屏幕中使用 加载目录 load directory 按钮在 '/tmp' 目录中找到它们。“

总结

Gifine 的学习曲线并不陡峭 —— 所有的功能都会以按钮、文本的形式体现出来。

对我来说,最大的问题是安装 —— 需要一个个安装它的依赖包,还要处理可能出现的错误,这会困扰很多人。否则,从整体上看,Gifine 绝对称得上是一个不错的工具,如果你正在寻找这样的工具,不妨一试。

已经是 Gifine 用户?到目前为止你得到了什么经验?在评论区告诉我们。


via: https://www.howtoforge.com/tutorial/record-screen-to-animated-gif-on-linux/

作者:Ansh 译者:vim-kakali 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Kgif 是一个简单的 shell 脚本,它可以从活动窗口创建一个 GIF 文件。我觉得这个程序专门是为捕获终端活动设计的,我经常用于这个。

它将窗口的活动捕获为一系列的 PNG 图片,然后组合在一起创建一个GIF 动画。脚本以 0.5 秒的间隔截取活动窗口。如果你觉得这不符合你的要求,你可以根据你的需要修改脚本。

最初它是为了捕获 tty 输出以及创建 github 项目的预览图创建的。

确保你在运行 Kgif 之前已经安装了 scrot 和 ImageMagick 软件包。

推荐阅读:Peek - 在 Linux 中创建一个 GIF 动画录像机

什么是 ImageMagick?ImageMagick 是一个命令行工具,用于图像转换和编辑。它支持所有类型的图片格式(超过 200 种),如 PNG、JPEG、JPEG-2000、GIF、TIFF、DPX、EXR、WebP、Postscript、PDF 和 SVG。

什么是 Scrot?Scrot 代表 SCReenshOT,它是一个开源的命令行工具,用于捕获桌面、终端或特定窗口的屏幕截图。

安装依赖

Kgif 需要 scrot 以及 ImageMagick。

对于基于 Debian 的系统:

$ sudo apt-get install scrot imagemagick

对于基于 RHEL/CentOS 的系统:

$ sudo yum install scrot ImageMagick

对于 Fedora 系统:

$ sudo dnf install scrot ImageMagick

对于 openSUSE 系统:

$ sudo zypper install scrot ImageMagick

对于基于 Arch Linux 的系统:

$ sudo pacman -S scrot ImageMagick

安装 Kgif 及使用

安装 Kgif 并不困难,因为不需要安装。只需从开发者的 github 页面克隆源文件,你就可以运行 kgif.sh 文件来捕获活动窗口了。默认情况下它的延迟为 1 秒,你可以用 --delay 选项来修改延迟。最后,按下 Ctrl + c 来停止捕获。

$ git clone https://github.com/luminousmen/Kgif
$ cd Kgif
$ ./kgif.sh
Setting delay to 1 sec

Capturing...
^C
Stop capturing
Converting to gif...
Cleaning...
Done!

检查系统中是否已存在依赖。

$ ./kgif.sh --check
OK: found scrot
OK: found imagemagick

设置在 N 秒延迟后开始捕获。

$ ./kgif.sh --delay=5

Setting delay to 5 sec

Capturing...
^C
Stop capturing
Converting to gif...
Cleaning...
Done!

它会将文件保存为 terminal.gif,并且每次在生成新文件时都会覆盖。因此,我建议你添加 --filename 选项将文件保存为不同的文件名。

$ ./kgif.sh --delay=5 --filename=2g-test.gif

Setting delay to 5 sec

Capturing...
^C
Stop capturing
Converting to gif...
Cleaning...
Done!

使用 --noclean 选项保留 png 截图。

$ ./kgif.sh --delay=5 --noclean

要了解更多的选项:

$ ./kgif.sh --help

usage: ./kgif.sh [--delay] [--filename ] [--gifdelay] [--noclean] [--check] [-h]
  -h, --help                   Show this help, exit
      --check                  Check if all dependencies are installed, exit
      --delay=            Set delay in seconds to specify how long script will wait until start capturing.
      --gifdelay=         Set delay in seconds to specify how fast images appears in gif.
      --filename=   Set file name for output gif.
      --noclean                Set if you don't want to delete source *.png screenshots.

via: http://www.2daygeek.com/kgif-create-animated-gif-file-active-window-screen-recorder-capture-arch-linux-mint-fedora-ubuntu-debian-opensuse-centos/

作者:MAGESH MARUTHAMUTHU 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出