애니메이션 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
. 그러나 두 숫자를 일치 시키려면 값 을 늘리거나 줄여야합니다.
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 .
Byzanz 를 사용 하여 gif를 기록했습니다.
먼저 설치 하고이 스 니펫을 $ PATH의 rr (record region)에 넣으십시오.
#!/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 (레코드 창)에 있습니다.
#!/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 플레이어를 사용하는 또 다른 옵션 (OSX에서는 작동하지만 Windows에서는 모르겠습니다). 필수 조건은 다음 ffmpeg
과 같습니다.gifsicle
ffmpeg -i yourscreen.mov -s 600x400 -pix_fmt rgb24 -r 10 -f gif - | gifsicle --optimize=3 --delay=3 > out.gif