这是一个全新的应用程序,允许您轻松地从屏幕上录制GIF动画。
sudo apt install peek
对于旧版本的Ubuntu,您可以从PPA安装最新版本的Peek。
sudo add-apt-repository ppa:peek-developers/stable
sudo apt update
sudo apt install peek
我发现的最好的录制GIF屏幕录像的软件是拜占庭。
拜占庭非常优秀,因为它直接记录到GIF文件,质量和FPS令人印象深刻,同时使文件大小最小化。
拜占庭现在可从宇宙库中获取:
sudo apt-get install byzanz
安装完成后,您可以在终端中运行它。
这是我刚刚做的一个小例子。
byzanz-record --duration=15 --x=200 --y=300 --width=700 --height=400 out.gif
parted
,qike-gui
用于ike
,还有许多其他类似的工具。虽然有人开发了一个应用程序是很棒的,但命令行工具同样也很棒,尤其对于技术倾向的人来说(例如,你可以使用它和cron构建一个小型的家长监控工具)。 - Kroltanxwininfo
只会显示整个窗口的大小,或者我做错了什么。但是在Debian上,xdotool getmouselocation
对我有用,并且显示鼠标指针的当前位置 - 不错的技巧:watch -t -n 0.0001 xdotool getmouselocation
(来自https://stackoverflow.com/a/37238106/4940240)。为了完整起见,这里有一个关于byzanz的“gui-script”:https://www.maketecheasier.com/record-screen-as-animated-gif-ubuntu/ - MacMartinsudo apt-get install imagemagick mplayer gtk-recordmydesktop
mplayer -ao null <video file name> -vo jpeg:outdir=output
convert output/* output.gif
convert output.gif -fuzz 10% -layers Optimize optimised.gif
gifsicle -O in.gif -o out.gif
我刚试了一下,文件大小减小了100倍。 - Yrogirgconvert
步骤合并为一个:convert output/* -layers Optimize output.gif
。对我来说,这样做既加快了处理时间,又使输出文件更小。我没有看到分开执行这些步骤的任何理由。(我没有尝试-fuzz 10%
参数。) - thejoshwolfeconvert <input-files> -limit area 0 -layers Optimize <output-file>
;否则由于内存溢出问题,convert
会被终止。 - mpontilloconvert
语句使它变得非常丑陋。根据文档(http://www.imagemagick.org/script/command-line-options.php#layers),`optimize`实现可能会随时间改变。但是稍微调整了带有`-coalesce`标志的`convert`语句后,情况有所改善,但仍然不够理想。最终,我不得不使用`-layers optimize-transparency设置以获得最佳结果:
convert 'output/*.jpg' -coalesce -layers optimize-transparency optimised.gif`。 - user486425本答案包含三个shell脚本:
byzanz-record-window
- 用于选择要录制的窗口。byzanz-record-region
- 用于选择要录制的屏幕部分。感谢Bruno Pereira向我介绍了byzanz
!它非常有用,可以创建GIF动画。在某些情况下,颜色可能会有所偏差,但文件大小弥补了这一点。例如:40秒,3.7Mb。
$PATH
文件夹中。这是使用第一个脚本制作特定窗口的屏幕录制的示例。
byzanz-record-window 30 -c output.gif
$DELAY
中硬编码),以便您准备录制。beep
函数中定义),byzanz
将开始。30
的意思),byzanz
结束。蜂鸣声将再次播放。byzanz-record-window
中加入了-c
标志,以说明我的shell脚本的任何参数都会附加到byzanz-record
本身。 -c
标志告诉byzanz
在屏幕录制中也包括光标。man byzanz-record
}}或byzanz-record --help
获取更多详细信息。
byzanz-record-window
#!/bin/bash
# Delay before starting
DELAY=10
# Sound notification to let one know when recording is about to start (and ends)
beep() {
paplay /usr/share/sounds/KDE-Im-Irc-Event.ogg &
}
# Duration and output file
if [ $# -gt 0 ]; then
D="--duration=$@"
else
echo Default recording duration 10s to /tmp/recorded.gif
D="--duration=10 /tmp/recorded.gif"
fi
XWININFO=$(xwininfo)
read X <<< $(awk -F: '/Absolute upper-left X/{print $2}' <<< "$XWININFO")
read Y <<< $(awk -F: '/Absolute upper-left Y/{print $2}' <<< "$XWININFO")
read W <<< $(awk -F: '/Width/{print $2}' <<< "$XWININFO")
read H <<< $(awk -F: '/Height/{print $2}' <<< "$XWININFO")
echo Delaying $DELAY seconds. After that, byzanz will start
for (( i=$DELAY; i>0; --i )) ; do
echo $i
sleep 1
done
beep
byzanz-record --verbose --delay=0 --x=$X --y=$Y --width=$W --height=$H $D
beep
byzanz-record-region
依赖项:从xrectsel获取xrectsel
。克隆存储库并运行make
以获取可执行文件(如果它抗议没有makefile,请运行./bootstrap
和./configure
,然后再运行`make)。
#!/bin/bash
# Delay before starting
DELAY=10
# Sound notification to let one know when recording is about to start (and ends)
beep() {
paplay /usr/share/sounds/KDE-Im-Irc-Event.ogg &
}
# Duration and output file
if [ $# -gt 0 ]; then
D="--duration=$@"
else
echo Default recording duration 10s to /tmp/recorded.gif
D="--duration=10 /tmp/recorded.gif"
fi
# xrectsel from https://github.com/lolilolicon/xrectsel
ARGUMENTS=$(xrectsel "--x=%x --y=%y --width=%w --height=%h") || exit -1
echo Delaying $DELAY seconds. After that, byzanz will start
for (( i=$DELAY; i>0; --i )) ; do
echo $i
sleep 1
done
beep
byzanz-record --verbose --delay=0 ${ARGUMENTS} $D
beep
带有简单GUI对话框的脚本:
#!/bin/bash
# AUTHOR: (c) Rob W 2012, modified by MHC (https://askubuntu.com/users/81372/mhc)
# NAME: GIFRecord 0.1
# DESCRIPTION: A script to record GIF screencasts.
# LICENSE: GNU GPL v3 (http://www.gnu.org/licenses/gpl.html)
# DEPENDENCIES: byzanz,gdialog,notify-send (install via sudo add-apt-repository ppa:fossfreedom/byzanz; sudo apt-get update && sudo apt-get install byzanz gdialog notify-osd)
# Time and date
TIME=$(date +"%Y-%m-%d_%H%M%S")
# Delay before starting
DELAY=10
# Standard screencast folder
FOLDER="$HOME/Pictures"
# Default recording duration
DEFDUR=10
# Sound notification to let one know when recording is about to start (and ends)
beep() {
paplay /usr/share/sounds/freedesktop/stereo/message-new-instant.oga &
}
# Custom recording duration as set by user
USERDUR=$(gdialog --title "Duration?" --inputbox "Please enter the screencast duration in seconds" 200 100 2>&1)
# Duration and output file
if [ $USERDUR -gt 0 ]; then
D=$USERDUR
else
D=$DEFDUR
fi
# Window geometry
XWININFO=$(xwininfo)
read X < <(awk -F: '/Absolute upper-left X/{print $2}' <<< "$XWININFO")
read Y < <(awk -F: '/Absolute upper-left Y/{print $2}' <<< "$XWININFO")
read W < <(awk -F: '/Width/{print $2}' <<< "$XWININFO")
read H < <(awk -F: '/Height/{print $2}' <<< "$XWININFO")
# Notify the user of recording time and delay
notify-send "GIFRecorder" "Recording duration set to $D seconds. Recording will start in $DELAY seconds."
#Actual recording
sleep $DELAY
beep
byzanz-record -c --verbose --delay=0 --duration=$D --x=$X --y=$Y --width=$W --height=$H "$FOLDER/GIFrecord_$TIME.gif"
beep
# Notify the user of end of recording.
notify-send "GIFRecorder" "Screencast saved to $FOLDER/GIFrecord_$TIME.gif"
另请参阅:
byzanz-record-region
的另一个改进版本。xrectsel
已从FFcast2中分离出来;它现在是一个独立的存储库,位于https://github.com/lolilolicon/xrectsel。 - Rmanobeep \n command \n beep
这样的方式,最好改成这样 - beep \n ( sleep $DURATION; beep; ) & \n command
。原因是即使停止录制后,主程序在第二个蜂鸣声响起之前可能需要很长时间来渲染和生成输出。 - Anmol Singh Jaggisudo make install
。 - Nicolas Raoul我使用的最好的工具之一是ffmpeg
。它可以将来自屏幕录制工具(如kazam
)的大多数视频转换为其他格式。
从软件中心安装它 - 如果您安装了出色的ubuntu-restricted-extras
软件包,它会自动安装。
Kazam可以输出视频格式mp4
或webm
。通常情况下,以mp4
格式输出会获得更好的结果。
将视频转换为gif的基本语法如下:
ffmpeg -i [inputvideo_filename] -pix_fmt rgb24 [output.gif]
转换的GIF图像 - 特别是每秒25/29帧的标准GIF图像可能非常大。例如,以25fps为基础的800Kb、15秒长的webm视频文件可以输出为435 MB!
您可以通过多种方法来减小文件大小:
使用选项-r [每秒帧数]
。例如
ffmpeg -i Untitled_Screencast.webm -r 1 -pix_fmt rgb24 out.gif
文件大小从435 MB减小到19 MB
使用选项-fs [filesize]
。例如
ffmpeg -i Untitled_Screencast.webm -fs 5000k -pix_fmt rgb24 out.gif
-s [宽度x高度]
。例如ffmpeg -i Untitled_Screencast.webm -s 320x200 -pix_fmt rgb24 out.gif
-loop_output 0
。例如ffmpeg -i Untitled_Screencast.webm -loop_output 0 -pix_fmt rgb24 out.gif
如果您使用imagemagick
的convert
命令,并将模糊因子设置在3%到10%之间,您可以显著减小图像大小
convert output.gif -fuzz 3% -layers Optimize finalgif.gif
将其中一些选项结合起来,以便在Ask Ubuntu上减少到可管理的程度。
ffmpeg -i Untitled_Screencast.webm -loop_output 0 -r 5 -s 320x200 -pix_fmt rgb24 out.gif
convert output.gif -fuzz 8% -layers Optimize finalgif.gif
demo.mkv
,你可以运行以下命令:docker run --rm -v $(pwd):/tmp/video/ jrottenberg/ffmpeg -i /tmp/video/demo.mkv -framerate 1/2 -pix_fmt rgb24 -loop 0 /tmp/video/demo.gif
,然后执行sudo chown $USER:$USER demo.gif
。 - czerasz-loop_output
这样的选项... - user364819ubuntu-restricted-extras
很棒吗? - Severus Tux-loop
。所以应该是-loop 0
。这是一个在Ubuntu 16.04.01上可用的命令:ffmpeg -f x11grab -r 25 -s 100x100 -i :0.0+500,500 -pix_fmt rgb24 -loop 0 out2.gif
。+500,500
是开始100x100矩形的X,Y位置。xgrab
将屏幕作为输入。 - sanborSilentcast 是另一个用于创建动画 .gif 图像的出色 GUI 工具。其特点包括:
4个录制模式:
整个屏幕
窗口内部
带有装饰的窗口
自定义选择
5种输出格式:
.gif
.mp4
.webm
.png
(帧)
.mkv
无需安装(便携版)
自定义工作目录
自定义帧率
sudo add-apt-repository ppa:sethj/silentcast
sudo apt-get update
sudo apt-get install silentcast
Silentcast仍处于开发阶段,虽然它相当稳定,但您可能会遇到一些错误。如果确实遇到,请在项目的GitHub问题跟踪器上报告它们。如果您在安装PPA时遇到困难,并且正在运行受支持的Ubuntu版本,请在下方留言或通过联系维护者(即我)在Launchpad上进行沟通。
我创建了 record-gif.sh
,是 Rob W的 byzanz-record-region
的改进版本:
一个简单的GUI工具用于
byzanz
,改善了用户体验(可选择的鼠标区域,录制进度条,可重放的录制)。
$HOME/record.again
)。我还创建了一个安装脚本
curl --location https://git.io/record-gif.sh | bash -
sudo apt install autoconf byzanz
。在Ubuntu中,默认情况下它是没有安装的。 - Crantiszautoconf
和 byzanz
。你可以试一下吗? - Édouard LopezGDK_SCALE=1
,因为它不支持HiDPI。https://i.imgur.com/Y1KYZdU.gif 在脚本前添加也可以,但很麻烦。 - Mark Jeronimusscreenkey
的README文件,使用key-mon
工具:
sudo apt-get install key-mon
key-mon
xrectsel
获取屏幕坐标,并将其放入一个byzanz
命令中byzanz
命令key-mon --visible_click
会在鼠标点击时在鼠标指针周围画一个圆圈 - 这是我更喜欢的方式,但在Ubuntu 14.04.5 LTS中,这个功能有些问题,因为这个圆圈出现和消失得不够快,无法正确地展示点击(即鼠标按下和释放)的过程。imagemagick
mplayer
gtk-recordmydesktop
运行桌面录制器来捕捉屏幕/应用程序的一部分,以用作屏幕录像
从https://github.com/nicolas-raoul/ogv2gif下载ogv2gif.sh
运行:./ogv2gif.sh yourscreencast.ogv
GIF文件将放在相同的目录中
100%受到maniat1k's answer的启发。