Ubuntuでスクリーンをキャプチャしてアニメーションgifを保存する!!!【byzanz-record】
Ubuntuでアニメーションgifをスクリーンキャプチャによって作ろうとしたのですが、そのためのアプリは標準搭載されておらず、インストールにつまづいたので備忘録的にメモしときます。
動作環境
- Ubuntu12.04
byzanz-record
byzanz-recordは画面の位置を選択してその範囲のgif画像を作ることが出来るソフトです。
byzanz-recordのインストール
sudo add-apt-repository ppa:fossfreedom/byzanz # 途中でレポジトリを追加するか聞かれるのでEnter
sudo apt-get update
sudo apt-get -y install byzanz
使い方
byzanz-record --duration=15 --x=200 --y=300 --width=700 --height=400 out.gif
引数で保存したい映像の名前を指定します。(今回はout.gif)
オプションで値を指定することで画面の撮影をすることができます。
duration | 撮影する時間 |
x | 撮影する映像の左端の位置 |
y | 撮影する映像の上端の位置 |
width | 撮影する映像の幅 |
height | 撮影する映像の高さ |
問題点
全画面撮影したいといった時にウィンドウサイズを知っておく必要があったり、ある特定の部分だけ撮影したいといった時にその位置のx座標y座標を調整しなければいけない。
byzanz-record-window、byzanz-record-region
この問題を解決してくれるラッパーを見つけました。
byzanz-record-windowは全画面撮影用、byzanz-record-regionは画面選択撮影用です。
まずはbyzanz-record-windowから
全画面撮影 byzanz-record-window
byzanz-record-windowの作成
cd ~/ && touch byzanz-record-window
vi byzanz-record-window # 好きなエディタでどうぞ
#!/bin/bash
# Delay before starting
DELAY=5
# 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
chmod +x byzanz-record-window # 実行権限を与える
sudo mv byzanz-record-window /usr/local/bin # どこからでも起動できるように
使い方
byzanz-record-window
で起動させると、画面を選択出来ます。撮影したい画面上でクリック。
すると、撮影までのカウントダウンが始まります。
デフォルトの撮影時間は10秒、保存場所は/tmp/record.gifです。
撮影時間と保存場所を変えたい場合は、
byzanz-record-window 5 hoge.gif # 撮影時間5秒、保存場所hoge.gif
と引数に与えることで変更できます。
保存したgifは右クリックからブラウザで開くとかで見ることが出来ます!
画面選択撮影 byzanz-record-region
xrectselのインストール
byzanz-record-regionにはxrectselのインストールが必要です。
git clone https://github.com/lolilolicon/xrectsel.git
cd xrectsel
.bootstrap
.configure
.configureでエラーが出ました。
$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking for library containing XOpenDisplay... no
configure: error: libx11 is required
libx11がいるようなのでインストール(libx11というパッケージは無いようです)
sudo apt-get -y install libx11-dev
さて、もう一度
.configure
sudo make
sudo make install
byzanz-record-regionの作成
byzanz-record-windowの時とほぼ同じなので説明は省略
cd ~/ && touch byzanz-record-region
vi byzanz-record-region
#!/bin/bash
# Delay before starting
DELAY=5
# 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
chmod +x byzanz-record-region
sudo mv byzanz-record-region /usr/local/bin
使い方
撮影する前に画面を選ぶのではなくドラッグで範囲を選択するということ以外はbyzanz-record-windowと同じです。
参考にしたサイト
How to create animated GIF images of a screencast? – ask
ubuntu
lolilolicon/xrectsel – GitHub
パッケージ: libx11-dev (2:1.4.99.1-0ubuntu2.3) – ubuntu
packages