画面をビデオとしてキャプチャしようとしていますが、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を使用して特定のアプリケーションをキャプチャできるかどうか、または画面全体が唯一のオプションであるかどうかを誰かが知っていますか?
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のインターフェースを有効にするには、オプションを追加する必要があります
--extraintf rc --rc-quiet
TCPソケット
エコー終了| ncyour_Hostポート
UNIXソケット
エコー終了| nc -U/path/to/socket
VLCを実行する
vlc\ screen:// --one-instance\ -ダミー--dummy-quiet\ -extraintfrc\ -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}:duplicate {dst = std {access = file、mux = mp4、dst = '/ Videos/screen.mp4'}} "
VLCを正常にシャットダウンします
エコー終了| 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
従属画面の幅。 デフォルト値:<全画面幅>--screen-height integer
従属画面の高さ。 デフォルト値:<全画面の高さ>スクリーンキャプチャターミナルまたはMac OSのiterm 2019:
VLCのエイリアスを.bashrc
または.zshrc
に追加します。
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になりますが、この機能は好きなようにカスタマイズできます。
Windowsを使用している場合は重要です。
,... --rc-Host localhost:8082
ローカルホストIPを使用する必要があります。そうでない場合は機能しません。代わりに127.0.0.1を使用してください。
,... --rc-Host 127.0.0.1:8082
さて、あなたが扱う必要のない簡単なアプローチがありますTCPソケット/ Unixソケット。
ステップ1:最初に[Vlc]-> [ツール]-> [設定]の下を開きます[インターフェイス]タブ [1つのインスタンスのみを許可する]をオンにしてください。
上記の方法で見つからない場合は、[高度な設定]タブでインスタンスを検索し、[1つのインスタンスのみを許可する]をオンにします。
これにより、新しい録音が開始されないようにし、既存の録音を追跡することができます。
ステップ2:記録を開始するには、このコマンドを使用します
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
注:このコマンドを使用する前に、必ずパスを確認してください
自分のマシン(WIN 10)でquitコマンドを変更する必要がありました:
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)