VLC RC InterfaceをTCP経由でリモートコントロールするメモ【WSL2・Linux対応】
はじめに
VLC Media PlayerにはRC(Remote Control)インターフェースが内蔵されており、TCP経由でネットワーク越しにVLCを操作することができます。 WSL2や別のLinuxサーバーからWindowsのVLCに対してコマンドを送り、音声・動画の再生をリモートで制御できます。
VLCの設定(Windows側)
RC InterfaceのTCP待ち受けを有効化する
方法1:GUIで設定する
- VLCを起動
- ツール → 設定 → 左下の「すべて」を選択
- インターフェース → メインインターフェース → 「リモートコントロールインターフェース」にチェック
- メインインターフェース → RC を選択
- 「TCPコマンド入力」に
0.0.0.0:4212を入力(全インターフェースで待ち受け) - VLCを再起動

方法2:コマンドラインで起動する
"C:\Program Files\VideoLAN\VLC\vlc.exe" --extraintf=rc --rc-host 0.0.0.0:4212
Windowsファイアウォールの設定
WSL2や別サーバーからアクセスする場合、ファイアウォールでポートを開放する必要があります。
# 管理者権限のPowerShellで実行
New-NetFirewallRule -DisplayName "VLC RC Interface" -Direction Inbound -Protocol TCP -LocalPort 4212 -Action Allow
基本的な操作(Linux / WSL2側)
接続確認
# VLCに接続してコマンドを送る
echo "help" | nc <WindowsのIPアドレス> 4212
ファイルを再生する
# Windowsのパスを指定して再生(スラッシュに変換が必要)
echo "add C:\\Users\\user\\Music\\test.mp3" | nc -q 0 <WindowsのIP> 4212
主なRCコマンド一覧
| コマンド | 説明 |
|---|---|
play | 再生 |
pause | 一時停止 / 再開 |
stop | 停止 |
next | 次のトラック |
prev | 前のトラック |
add <ファイルパス> | プレイリストに追加して再生 |
enqueue <ファイルパス> | プレイリストに追加(再生は維持) |
clear | プレイリストをクリア |
playlist | プレイリストを表示 |
volume <0-512> | 音量設定(256が100%) |
quit | VLCを終了 |
Bashスクリプトで操作する
複数のコマンドを送る場合は接続を維持しながら順番に送る必要があります。
#!/bin/bash
# vlc_control.sh
VLC_HOST="192.168.1.100" # WindowsのIPアドレス
VLC_PORT="4212"
FILE_PATH="$1"
vlc_cmd() {
echo "$1" | nc -q 1 "$VLC_HOST" "$VLC_PORT"
}
case "$1" in
play) vlc_cmd "play" ;;
pause) vlc_cmd "pause" ;;
stop) vlc_cmd "stop" ;;
next) vlc_cmd "next" ;;
prev) vlc_cmd "prev" ;;
add) vlc_cmd "add $2" ;;
volume) vlc_cmd "volume $2" ;;
*)
echo "使い方: $0 {play|pause|stop|next|prev|add <ファイル>|volume <0-512>}"
exit 1
;;
esac
# 使い方
chmod +x vlc_control.sh
./vlc_control.sh play
./vlc_control.sh volume 200
./vlc_control.sh add "C:\\Users\\user\\Music\\song.mp3"
ストリームを再生する
URLを指定することでネットワークストリームも再生できます。
# HTTPストリームを再生
echo "add http://example.com/stream.mp3" | nc 192.168.1.100 4212
# RTSPストリームを再生
echo "add rtsp://192.168.1.200/live" | nc 192.168.1.100 4212
WSL2固有の注意点
WSL2からWindowsへのアクセスはWindowsのIPアドレスを使う必要があります。
# WSL2からWindowsのIPアドレスを取得
WINDOWS_IP=$(ip route | grep default | awk '{print $3}')
echo "Windows IP: $WINDOWS_IP"
# そのままVLCに接続
echo "play" | nc "$WINDOWS_IP" 4212
まとめ
VLC RC InterfaceをTCP経由で利用することで、WSL2や別サーバーからWindowsのVLCをリモートコントロールできます。 netcatとBashスクリプトを組み合わせることで、音声再生の自動化やストリーム再生の制御も簡単に実現できます。