ffmpeg оказался не таким уж сложным. Набросал скрипт:
#!/bin/bash
# ffmpeg.org
# -f x11grab — grab video from X11 server
# -i :0.0 — use default screen.display as input
# :0.0+10,20 — x-,y-offset
# -s — video size (resolution)
# -r 10 — frame rate 10 fps
# -b 64k — bitrate 64 kbit/sec (default = 200 kbit/s).
# -f alsa -i pulse — grab audio from microphone
# -f alsa -i plughw:0,0 — grab audio from sound card
# -ar freq — audio sampling frequency (default = 44100 Hz).
# -ab bitrate — audio bitrate in bit/s (default = 64k).
OUTPUT=$1
if [ -z $OUTPUT ]; then
OUTPUT=~/screencast.avi
fi
ffmpeg \
-f alsa -i pulse \
-f x11grab -s 1440x900 -r 10 -i :0.0 \
-metadata author="yzh44yzh" \
-metadata title="Looking for silver bullet. Part 1." \
-metadata comment="Flex, IDEA, Maven, Flexmojos, Linux" \
$OUTPUT
Работает ок. Надо будет только повозиться с битрейтом, чтобы качество картинки было получше, а то шрифты получаются размазанные и почти не читаемые.
Один только нюанс — звук захватывается с микрофона, но не захватываются системные звуки. В частности — музыка из rhythbox. А я бы хотел, чтобы это тоже было. Гуглил, пробовал захватывать звук напрямую со звуковой карты ( -f alsa -i plughw:0,0 ) — нет, все равно слышно только микрофон.
Если кто-то может помочь с этим, подскажите плз.
Replies (6)
-
<juick.com> Может какой-нибудь общий миксер сделать? Виртуальную звуковую карту?/1 · ReplyСпасибо за инструкцию! Выбрал в регуляторе громкости GNOME такой профиль — ur1.ca (скриншот), системные звуки захватываются. // ffmpeg -f alsa -ac 2 -i pulse -r 25 -g 120 -s 1360x768 -f x11grab -i :0.0 -acodec pcm_s16le -vcodec qtrle screencast.mov (с хорошим качеством)/2 · Replyнадо же, пост был 11 месяцев назад. И только сегодня я это дело поправлял:
yura ~/bin $ cat screencast
#!/bin/bash
OUTPUT=$1
if [ -z $OUTPUT ]; then
OUTPUT=screencast
fi
ffmpeg \
-f alsa -i pulse \
-f x11grab -s 1024x768 -r 20 -i :0.0+50,50 \
-vcodec mpeg4 -acodec pcm_s16le -sameq \
-metadata author="yzh44yzh" \
-y $OUTPUT-raw.mkv
ffmpeg -i $OUTPUT-raw.mkv \
-acodec aac -ab 128k -ac 2 -strict experimental \
-vcodec libx264 -vpre hq -crf 25 -threads 0 -y $OUTPUT.mp4
exit 0


