地方在住IT系ニート

bkds

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で設定する

  1. VLCを起動
  2. ツール設定 → 左下の「すべて」を選択
  3. インターフェースメインインターフェース → 「リモートコントロールインターフェース」にチェック
  4. メインインターフェースRC を選択
  5. 「TCPコマンド入力」に0.0.0.0:4212を入力(全インターフェースで待ち受け)
  6. VLCを再起動

vcl_setting

方法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%)
quitVLCを終了

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スクリプトを組み合わせることで、音声再生の自動化やストリーム再生の制御も簡単に実現できます。

<-- Back to home
にほんブログ村 IT技術ブログ IT技術メモへ PVアクセスランキング にほんブログ村