多くの人がアニメーションGIFを投稿してEmacsの機能を披露しているのを目にしますが、それを作成することについての良い説明はありません。gifのキーフレームをEmacsのキー押下にリンクしようとするコードはありますか?プロセスを自動化するelispパッケージまたは関数はありますか?キーを押して記録を開始し、もう一度押して停止し、gifを保存するファイル名の入力を求められるようにしたいと思います。
関連する質問、Emacs内からより長いスクリーンキャストを記録するためのパッケージはありますか?
多くの人がアニメーションGIFを投稿してEmacsの機能を披露しているのを目にしますが、それを作成することについての良い説明はありません。gifのキーフレームをEmacsのキー押下にリンクしようとするコードはありますか?プロセスを自動化するelispパッケージまたは関数はありますか?キーを押して記録を開始し、もう一度押して停止し、gifを保存するファイル名の入力を求められるようにしたいと思います。
関連する質問、Emacs内からより長いスクリーンキャストを記録するためのパッケージはありますか?
回答:
はい、Emacsでスクリーンキャストを記録するためのパッケージがあります。
私は自分のコンピューターでテストしただけなので、まだ何も約束することはできませんが、私にはうまくいくと言えます。:-)
M-x camcorder-record。F12して変換が完了するのを待ちます。スクリーンキャストは、imagemagickのconvertコマンドが理解できる任意の形式で生成できます
。録音を一時停止することもできますF11!
ポップアップフレームなしで記録する場合は、を使用しますM-x camcorder-mode。
記録にcamcorder.elは、次のLinuxユーティリティを使用します。これらがあれば、すぐに使えるはずです。他の何かを使用する場合でも、camcorder-recording-command変数を構成することで機能させることができ
ます。
私のマシンでは、window-id Emacsが
(format "%x"
(string-to-number
(frame-parameter (selected-frame) 'window-id)))
WMがwminfoユーティリティで報告したIDとは異なります。
それcamcorder-window-id-offsetを修正するために変数を追加しました。デフォルト値はですが-4、これらの2つの数値を一致させるには、値を増減する必要がある場合があります。
xwininfoする適切なIDを決定するために使用していました(wminfoシステムに持っていません)。
outer-window-id(ではなくwindow-id)の使用に気づき、オフセットはもう必要ありませんが、この変更はまだmelpa-stableには反映されていません。
同様の質問を/ r / Emacsに投稿しました。
GIFを記録する場合、主なオプションは次のとおりです。
# 12 second duration, top left corner, 700x800 pixel gif
$ byzanz-record -d 12 -x 0 -y 0 -w 900 -h 700 output.gif
# more documentation at https://wiki.ubuntu.com/CreatingScreencasts
$ avconv -y -video_size 200x100 -f x11grab -i :0.0+0,50 frame-%04d.gif
$ gifsicle --loop -O3 -d5 frame-*.gif > emacs.gif
キーストロークを表示するには、キーストロークを表示するアプリケーションが必要です。key-monはこのためのGUIアプリを提供します。もちろん、押されたキーを表示するEmacsモードcommand-log-modeがあります。
私はすべてのGIFを生成するためにByzanzを使用しました。記録byzanz用のコマンドを実行する1つの画面で記録します。いくつかの例が私のガイドにあります。
最初にインストールし、このスニペットをrr(record region)の$ PATHに入れます:
#!/bin/bash
# record screencast of a region into a gif using `byzanz-record`
# 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 &
}
printf "usage: rr [time] [file]\n"
# Duration and output file
if [ $# -gt 0 ]; then
D="--duration=$@"
else
echo Default recording duration 10s to $HOME/recorded.gif
D="--duration=10 $HOME/rarecorded.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
そして、これを$ PATHのrw(record window)に:
#!/bin/bash
# record screencast of a region into a gif using `byzanz-record`
# 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 &
}
printf "usage: rr [time] [file]\n"
# Duration and output file
if [ $# -gt 0 ]; then
D="--duration=$@"
else
echo Default recording duration 10s to $HOME/recorded.gif
D="--duration=10 $HOME/rarecorded.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 ${ARGUMENTS} $D
beep
これで、rrとrwを使用して領域/ウィンドウをgifに記録できます(必要に応じて時間と位置を変更できます)。
QuickTimeプレーヤーを使用するもう1つのオプション(OSXでは動作しますが、Windowsではわかりません)。前提条件は以下のとおりです。ffmpegとgifsicle
ffmpeg -i yourscreen.mov -s 600x400 -pix_fmt rgb24 -r 10 -f gif - | gifsicle --optimize=3 --delay=3 > out.gif