使用终端的VLC屏幕捕获

时间:2014-02-28 00:59:01

标签: bash terminal vlc screen-capture

我试图将我的屏幕捕获为视频,并发现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捕获特定应用程序,或者整个屏幕是否是唯一的选择?

6 个答案:

答案 0 :(得分:17)

录制

时如何退出

Ctrl + C 使用信号SIGINT终止进程(在本例中为VLC)。

捕获屏幕时,

vlc://quit选项不起作用,因为流是永不停止的源。

<小时/>

正确的方式 - RC (Remote Control)

您可以使用TCP socketUNIX socket连接到您的VLC。

  • TCP套接字

      

    为了能够使用TCP套接字(类似telnet的连接)远程连接到VLC,请使用 - rc-host your_host:port 。然后,通过将(使用telnet或netcat)连接到给定端口上的主机,您将获得命令shell。

  • UNIX套接字

      

    要使用UNIX套接字(本地套接字,这不适用于Windows),请使用 - rc-unix / path / to / socket 。然后可以使用此UNIX套接字传递命令。

要为VLC启用remote control界面,您需要添加选项

--extraintf rc --rc-quiet

<小时/>

如何退出

  • TCP套接字

    echo quit | nc your_host port

  • UNIX套接字

    echo quit | nc -U / path / to / socket

    <小时/>

    实施例

    1. 执行VLC

      vlc \
      screen:// --one-instance \
      -I dummy --dummy-quiet \
      --extraintf rc \
      --rc-host 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}:duplicate{dst=std{access=file,mux=mp4,dst='/Videos/screen.mp4'}}"
    2. 正常关闭VLC

      echo quit | nc localhost 8082

      如果您的计算机上没有nc (netcat),也可以使用下面的Python代码。

      import socket
      s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
      s.connect(('localhost', 8082))
      s.sendall('quit\n')
      s.shutdown(socket.SHUT_WR)

<小时/>

如何捕获特定应用程序

您无法选择要录制的应用程序,但您可以指定子屏幕的坐标,宽度和高度。

Options

  • --screen-top integer子屏幕的上边缘坐标。 默认值:0
  • --screen-left integer子屏幕的左边缘坐标。 默认值:0
  • --screen-width integer子屏幕的宽度。 默认值:&lt;全屏宽度&gt;
  • --screen-height integer子屏幕的高度。 默认值:&lt;全屏高度&gt;

答案 1 :(得分:0)

如果您在Windows上,则很重要:

,... --rc-host localhost:8082

不起作用'要​​使用本地主机ip,否则它将无法正常工作。请改用127.0.0.1:

,... --rc-host 127.0.0.1:8082

答案 2 :(得分:0)

我必须在我的机器上更改quit命令(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)

答案 3 :(得分:0)

屏幕捕获在终端机上或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以停止该功能。

就是在您的Desktop文件夹示例中找到文件:

Screencapture 2019-01-04 at 09.57.42.mp4

视频的分辨率为1280x720,但是您可以根据需要自定义此功能。

答案 4 :(得分:0)

有一种简单的方法,您不需要处理 TCP套接字/ Unix套接字。

第一步: 首先打开Vlc->工具->首选项 确保在接口选项卡下,选中“仅允许一个实例”。

如果使用上述方法找不到它,请在高级首选项标签中搜索实例 然后选中仅允许一个实例。

这可以帮助您防止开始新的录制,并且可以跟踪现有的录制。

第二步: 要开始录制,请使用以下命令

vlc screen:// --qt-start-minimized :screen-fps=5 :run-time=30 :quiet :sout=#transcode{vcodec=h264,vb072}:standard{access=file,mux=mp4,dst="C:\Users\**admin**\Desktop\screencast.mp4"}

第3步: 要保存并停止现有记录,请使用

vlc://quit

注意:在使用此命令之前,请务必检查路径

答案 5 :(得分:0)

在 Windows 设备上获取音频

  • 有声录音:
<块引用>

vlc "dshow://" ":dshow-vdev=screen-capture-recorder" ":sout=#transcode{vcodec=mpgv,acodec=mpga}:file{dst=myscreencapture.mp4}"

  • 停止录制:
<块引用>

按 PAUSE,然后按 CONTROL-F4

  • 使用“transform-type”过滤器播放,如果是反转的:
<块引用>

vlc --transform-type=vflip "myscreencapture.mp4"