Задать вопрос
@akimdi

Как передать координаты для захвата видео с X-сервера интерактивно в ffmpeg?

Позаимствовал команду отсюда.
ffmpeg -f x11grab -s $(slop --noopengl --format "%w"x"%h") -r 60 -i :0.0 -qscale 0 -vcodec huffyuv $(date +"%d.%m.%Y_%H:%M:%S").avi

но это работает только если нет отступов при записи, то есть проще говоря записывается полностью весь экран. Смещение позиции на экране например, указав "-s 800x600 -i :0.0+200,100" можно организовать запись блока 800x600 со смещением 200x100 относительно верхнего левого угла экрана.

Примерно так:
ffmpeg -f x11grab -s 800x600 -r 60 -i :0.0+200,100 -qscale 0 -vcodec huffyuv $(date +"%d.%m.%Y_%H:%M:%S").avi

Подскажите, как сделать так чтобы можно было интерактивно мышью выделять с помощью того же slop и потом эти координаты передавать в ffmpeg.
  • Вопрос задан
  • 154 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 2
sotvm
@sotvm
Умный поймёт, а дураку и так всё равно.
попробуй xrectsel
под ffmpeg допили сам
как пример: скрипт который c помощью byzanz-record пишет gif

#!/bin/bash

NAME="$(date +%d.%m.%Y_%H%M%S).gif"

DEFAULT_DURATION=10

echo -ne "Select area which will be recorded" 

AREA="$(xrectsel)"
IFS=+ read DIM X Y <<< $AREA
IFS=x read W H <<< $DIM

echo ""

#read -p "Enter recording duration in seconds: " USERDUR

# Duration and output file
if [ $USERDUR -gt 0 ]; then
    DURATION=$USERDUR
else
    DURATION=$DEFAULT_DURATION
fi

echo "$DURATION sec. Recording has started..." 

byzanz-record --cursor --duration=$DURATION --x=$X --y=$Y --width=$W --height=$H /tmp/"$NAME"

echo "Recording has ended."
if [ -f /tmp/"$NAME" ]; then
    xviewer /tmp/"$name"
fi

byzanz-record пишет и видео ogg, ogv, webm
Ответ написан
Комментировать
leahch
@leahch Куратор тега Linux
3D специалист. Dолго, Dорого, Dерьмово.
Можно использовать xdotool (ставится из репозиториев)

Или xwininfo, есть в стандартных утилитах.

$ xclock&
[1] 6914
$ xdotool search -name xclock  getwindowgeometry
Window 6291466
  Position: 1422,487 (screen: 0)
  Geometry: 164x164
$


$ xwininfo -name xclock

xwininfo: Window id: 0x60000a "xclock"

  Absolute upper-left X:  1417
  Absolute upper-left Y:  468
  Relative upper-left X:  5
  Relative upper-left Y:  19
  Width: 164
  Height: 164
  Depth: 24
  Visual: 0x20
  Visual Class: TrueColor
  Border width: 0
  Class: InputOutput
  Colormap: 0x22 (not installed)
  Bit Gravity State: NorthWestGravity
  Window Gravity State: NorthWestGravity
  Backing Store State: NotUseful
  Save Under State: no
  Map State: IsViewable
  Override Redirect State: no
  Corners:  +1417+468  -99+468  -99-418  +1417-418
  -geometry 164x164-94+449
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы