我试图将我的屏幕捕获为视频,并发现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捕获特定应用程序,或者整个屏幕是否是唯一的选择?
答案 0 :(得分:17)
Ctrl + C 使用信号SIGINT
终止进程(在本例中为VLC)。
vlc://quit
选项不起作用,因为流是永不停止的源。
您可以使用TCP socket
或UNIX 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
<小时/>
执行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'}}"
正常关闭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)
<小时/>
您无法选择要录制的应用程序,但您可以指定子屏幕的坐标,宽度和高度。
--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)
vlc "dshow://" ":dshow-vdev=screen-capture-recorder" ":sout=#transcode{vcodec=mpgv,acodec=mpga}:file{dst=myscreencapture.mp4}"
按 PAUSE,然后按 CONTROL-F4
vlc --transform-type=vflip "myscreencapture.mp4"