it-swarm.com.ru

Захват экрана VLC с использованием терминала

Я пытаюсь захватить мой экран как видео и нашел VLC, вероятно, лучшим решением. Что мне нужно сделать, это захватить определенное приложение, используя терминал, а затем остановить захват. Прямо сейчас я могу захватить с помощью терминала с помощью следующей команды:

/Applications/VLC.app/Contents/MacOS/VLC -I dummy screen:// --screen-fps=25 --quiet --sout "#transcode{vcodec=h264,vb072}:standard{access=file,mux=mp4,dst="Desktop/vlc-output-terminal.mp4"}"

Это здорово, это работает. Вопрос в том, как выйти из записи с помощью терминала? Прямо сейчас я должен сделать Control+C на терминале, чтобы выйти из него. Я видел vlc://quit онлайн, но я не уверен, как использовать эту команду.

Кроме того, кто-нибудь знает, возможно ли захватить определенное приложение, используя VLC, или единственный вариант - весь экран?

13
intl

Как НЕ выйти при записи

Ctrl+C процесс kill (в данном случае VLC) с сигналом SIGINT.

Параметр vlc://quit не будет работать при захвате экрана, потому что поток является бесконечным источником.


Правильный путь - RC (Рпереигрывать Сontrol)

Вы можете подключиться к своему VLC, используя TCP socket или UNIX socket.

  • TCP-сокет

    Чтобы иметь возможность удаленного подключения к вашему VLC с помощью сокета TCP (telnet-подобное соединение), используйте - rc-Host your_Host: port . Затем, подключившись (используя telnet или netcat) к хосту на заданном порту, вы получите команду Shell.

  • Сокет UNIX

    Чтобы использовать сокет UNIX (локальный сокет, это не работает для Windows), используйте - rc-unix/path/to/socket . Команды могут быть переданы с использованием этого сокета UNIX.

Чтобы включить удаленное управление интерфейс для VLC, вам нужно будет добавить опции

--extraintf rc --rc-quiet

Как выйти

  • TCP-сокет

    эхо бросить | nc your_Host порт

  • Сокет UNIX

    эхо бросить | nc -U/путь/к/сокету


    Пример

    1. Выполнить VLC

      vlc\
       screen: // - один экземпляр\
       - я пустышка - пустышка\
       - extraintf rc\
       - rc- Хост localhost: 8082\
       - rc-quiet\
       - screen-follow-mouse\
       - screen-mouse-image = "mouse_pointer.png"\
       - screen-left = 0 - screen-top = 0 - screen-width = 800 - screen-height = 600\
       - no-video: screen-fps = 15: screen -caching = 300\
       - sout "#transcode {vcodec = h264, vb = 800, fps = 5, scale = 1, acodec = none}: дубликат {dst = std {доступ = файл, mux = mp4, ДСТ = '/ Видео/screen.mp4'}}"
    2. Изящно отключение VLC

      эхо бросить | nc localhost 8082

      Вы также можете использовать код Python ниже, если у вас нет nc (netcat) на вашем компьютере.

      сокет импорта 
       s = socket.socket (socket.AF_INET, socket.SOCK_STREAM) 
       s.connect (('localhost', 8082)) 
       s.sendall ('quit\п ') 
       s.shutdown (socket.SHUT_WR)

Как захватить конкретное приложение

Вы не можете выбрать приложение для записи, но можете указать координаты, ширину и высоту подэкрана.

Options

  • --screen-top integer Верхняя кромочная координата подэкрана. Значение по умолчанию: 0
  • --screen-left integer Левая Edge-координата подэкрана. Значение по умолчанию: 0
  • --screen-width integer Ширина подэкрана. Значение по умолчанию: <полная ширина экрана>
  • --screen-height integer Высота подэкрана. Значение по умолчанию: <высота экрана>
17
P̲̳x͓L̳

Снимок экрана на терминале или iterm в Mac OS 2019:

Добавьте псевдоним .bashrc или .zshrc для VLC:

alias vlc='/Applications/VLC.app/Contents/MacOS/VLC'

Затем добавьте эту функцию в свой .bashrc или .zshrc:

screencapture(){
vlc \
-I dummy screen://\
--dummy-quiet \
--screen-follow-mouse \
--screen-mouse-image="/Users/YOUR_HOME_DIR/Desktop/awesome.jpg" \
--screen-left=0 --screen-top=0 --screen-width=1280 --screen-height=720 \
--no-video :screen-fps=15 :screen-caching=300 \
--sout "#transcode{vcodec=h264,vb=800,fps=5,scale=1,acodec=none}:duplicate{dst=std{access=file,mux=mp4,dst='/Users/YOUR_HOME_DIR/Desktop/Screencapture $(date +%Y-%m-%d) at $(date +%H.%M.%S).mp4'}}"
}

Откройте новый сеанс терминала и выполните: screencapture

Когда закончите, сделайте CTRl + C, чтобы остановить функцию.

Вот и найдите файлы в вашем рабочем столе, например:

Screencapture 2019-01-04 at 09.57.42.mp4

Видео будет 1280x720, но вы можете настроить эту функцию так, как вам нравится.

0
Khalil Gharbaoui

Важно, если вы находитесь на Windows:

,... --rc-Host localhost:8082

Не работает, вы должны использовать локальный IP-адрес хоста, иначе он не будет работать. Вместо этого используйте 127.0.0.1:

,... --rc-Host 127.0.0.1:8082
0
NetworkSys Co. Ltd

Мне пришлось изменить команду выхода на моей машине (WIN 10):

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('127.0.0.1', 8082))
s.sendall('quit\n'.encode())
s.shutdown(socket.SHUT_WR)
0
user2462619