Запись скринкаста (без звука) в Xubuntu Linux. На следующем изображении показано параллельное сравнение видео (слева) и рабочего стола (справа):
Скрин-каст записывается с использованием:
ffmpeg -r 30 -f x11grab -s $WIN_GEO -i :0.0+$WIN_XY -vcodec huffyuv -preset ultrafast -qp 0 output.mkv
Здесь $WIN_GEO
хранятся размеры браузера (1030x794) и $WIN_XY
местоположение браузера (1020x221).
$ cat /etc/issue
Ubuntu Trusty Tahr (development branch) \n \l
Цвета в видео отличаются от цветов, показанных на рабочем столе, что приводит к слегка размытому воспроизведению. Я читал, что это может быть связано с преобразованием между цветами RGB и YUV.
Как записать видео на рабочем столе (скрин-каст), которое при воспроизведении (например, с помощью mplayer, VLC или ffplay) дает точное соответствие цветам и четкости исходного рабочего стола?
Соответствующие страницы:
Захват видеокадров в формате XWD с последующим преобразованием в PNG дает результаты, почти идеальные для пикселя при кодировании с помощью ffmpeg.
Установите xvidcap :
mkdir -p $HOME/dev
cd $HOME/dev
svn checkout svn://svn.code.sf.net/p/xvidcap/code/trunk xvidcap-code
cd xvidcap*
./autogen.sh
LIBS="-ldl -lX11 -lXext" ./configure --prefix=/usr/local
make && sudo make install
Делайте снимки со скоростью 25 кадров в секунду:
mkdir -p $HOME/video
cd $HOME/video
xvidcap --fps 25 --quality 100 --cap_geometry 1024x768+768+288 --file out%05d.xwd
Это создает серию файлов захвата X Windows внутри $HOME/video
. Преобразуйте файлы в формат PNG с помощью ImageMagick , а затем объедините их в видео:
for i in out*.xwd; do convert -define png:color-type=2 $i $(basename $i .xwd).png; done
ffmpeg -i out%05d.png -c:v huffyuv -preset veryslow -qp 0 -qscale:v 0 output.avi
Пример скрипта:
echo "Click window to capture..."
INFO=$(xwininfo -frame)
WIN_GEO=$(echo $INFO | grep -oEe 'geometry [0-9]+x[0-9]+' | grep -oEe '[0-9]+x[0-9]+')
WIN_XY=$(echo $INFO | grep -oEe 'Corners:\s+\+[0-9]+\+[0-9]+' | grep -oEe '[0-9]+\+[0-9]+' | sed -e 's/\+/,/' )
OUTPUT_DIR=$HOME/video
echo Capturing to $OUTPUT_DIR...
rm -rf $OUTPUT_DIR
mkdir -p $OUTPUT_DIR
cd $OUTPUT_DIR
WIN_XY=$(echo $WIN_XY | tr , +)
xvidcap --fps 25 --quality 100 --cap_geometry $WIN_GEO+$WIN_XY --file out%05d.xwd
# Convert captured images to PNG format
echo "Converting XWD to PNG..."
for i in out*.xwd; do convert -define png:color-type=2 $i $(basename $i .xwd).png; done
ffmpeg -i out%05d.png -c:v huffyuv -preset veryslow -qp 0 -qscale:v 0 output.avi
Это создает высококачественное видео, которое выглядит четким с VLC , может быть отредактировано в OpenShot и загружено на различные видеохостинги. Воспроизведение с помощью MPlayer дает слегка нечеткие и бесцветные результаты.
Эй Джей Хендерсон
роджерпак