スマホをカメラにする
スマホは多くの場合ウェブカメラより優秀です — 専用アプリを入れれば、Hologramu がほかのカメラと同じように扱えるカメラデバイスになります。
仕組み
Hologramu 自身にスマホ接続の機能はありませんし、必要もありません。OS が知って いるカメラを開くだけです。スマホ側のアプリと PC 側の小さなプログラムが組になって 仮想カメラを作り、そこから先は USB ウェブカメラと同じようにデバイス一覧に 並びます。解像度もフレームレートも、ステージ上の位置も、ほかのカメラとの合成も そのまま使えます。
つまり Hologramu 側でやることは、それを選ぶことだけです。
ヒント: スマホは 2 台目のカメラとして特に強力です。横に置いてください。 正面のウェブカメラが左右と上下を、横のスマホが奥行き — 手をどれだけ前に出した か — を決めます。置いたらステージ上でもその位置に動かしてください。 カメラを選ぶも 参照。
どのアプリを使うか
| 方法 | スマホ | PC | 接続 |
|---|---|---|---|
| DroidCam | Android, iOS | Linux, Windows | USB または Wi-Fi |
| Iriun Webcam | Android, iOS | Linux, Windows | Wi-Fi |
| 接続されたカメラ(Phone Link) | Android | Windows 11 のみ | Wi-Fi + Bluetooth |
| MJPEG ストリーム + ffmpeg | 配信できるアプリなら何でも | Linux のみ | Wi-Fi |
DroidCam と Iriun は近道で、スマホ側・PC 側どちらの OS でも使えます。ffmpeg を 使う方法は他社製の PC クライアントが要りませんが、そのぶん手作業が増えます。
USB は Wi-Fi に勝ちます。 どちらでも動きますが、ケーブルのほうが映像は明らか に素直で、家の誰かが配信を始めても途切れず、しかもスマホが充電されます。トラッ キングでは解像度より遅延のほうが効きます。
Linux: 仮想カメラデバイス
Linux では、PC 側のソフトがスマホの映像を書き込むためのデバイスが必要です。それ
を用意するのがカーネルモジュール v4l2loopback です。ほかのプログラムからは
カメラに見える /dev/video* を 1 つ増やしてくれます。
# Arch, Manjaro, EndeavourOS
sudo pacman -S v4l2loopback-dkms v4l-utils
# Debian, Ubuntu, Linux Mint, Pop!_OS
sudo apt install v4l2loopback-dkms v4l-utils
# Fedora(RPM Fusion「free」を有効にしておくこと)
sudo dnf install akmod-v4l2loopback v4l-utils
# openSUSE
sudo zypper install v4l2loopback-kmp-default v4l-utilsv4l-utils は必須ではありませんが、デバイスが本当にあるかを確かめる v4l2-ctl
が入っています。
注意: DKMS パッケージは動作中のカーネル用にモジュールをビルドするため、その
ヘッダーが必要です。無いとビルドエラーで止まります。Arch:
sudo pacman -S linux-headers(別のカーネルなら linux-zen-headers、
linux-lts-headers)。Debian/Ubuntu:
sudo apt install linux-headers-$(uname -r)。
モジュールを読み込み、デバイスに名前を付けます。
sudo modprobe v4l2loopback video_nr=10 card_label="Phone" exclusive_caps=1これでデバイスは /dev/video10 になり、Hologramu には「Phone」として出てきます。
video_nr を省くと、モジュールが空いている番号を自分で選びます。
毎回の起動時に用意させるには:
echo v4l2loopback | sudo tee /etc/modules-load.d/v4l2loopback.conf
echo 'options v4l2loopback video_nr=10 card_label="Phone" exclusive_caps=1' \
| sudo tee /etc/modprobe.d/v4l2loopback.conf確認:
lsmod | grep v4l2loopback
v4l2-ctl --list-devicesメモ: exclusive_caps=1 を付けると、デバイスは実際に誰かが書き込んでいる
ときだけカメラとして名乗ります。Hologramu は映像を出せないデバイスを隠すので、
仮想デバイスが一覧に現れるのはスマホとの接続ができてからです。順番は、
スマホのアプリを起動 → PC 側のプログラムを接続 → Hologramu でカメラを選ぶ、
となります。exclusive_caps=1 なしなら常に一覧に出ますが、何も送られていない
間は真っ黒な映像を返します。
スマホを USB でつなぐ
ケーブル接続のときだけ必要です。Wi-Fi ならどれも要りません。
# Android(ADB)
sudo pacman -S android-tools # Arch
sudo apt install adb # Debian, Ubuntu
sudo dnf install android-tools # Fedora
sudo zypper install android-tools # openSUSE
# iPhone(usbmuxd)
sudo pacman -S usbmuxd # Arch
sudo apt install usbmuxd # Debian, Ubuntu
sudo dnf install usbmuxd # Fedora
sudo zypper install usbmuxd # openSUSEAndroid では開発者向けオプションと、その中の USB デバッグを有効にする必要 があります。最初につないだとき、スマホがこのパソコンを信頼するか尋ねてきます。 iPhone はいつもの「このコンピュータを信頼」で十分です。
DroidCam を設定する
Android と iOS で動き、ケーブルでも Wi-Fi でもつながります。
- スマホに Play ストアまたは App Store から DroidCam を入れる。
- PC 用のクライアントを
dev47apps.com から入手する。Arch
では AUR パッケージ
droidcamもあります。 - Linux クライアントを展開してインストール:
cd /tmp
unzip droidcam_latest.zip -d droidcam
cd droidcam
sudo ./install-client- DroidCam は独自のループバックモジュールも持っています(
sudo ./install-video)。 すでに v4l2loopback を入れているなら不要です。両方あっても問題はなく、仮想 デバイスが 2 つになるだけです。 - スマホでアプリを開き、PC でクライアントを起動して USB か WiFi を選ぶ。 Wi-Fi ならアプリに IP アドレスが出るので、それを PC に入力します。
Iriun を設定する
接続は Wi-Fi のみですが、アドレスの入力は要りません。同じネットワークにいれば クライアントとスマホが自動で見つけ合います。
- スマホに Iriun Webcam を入れる(Android または iOS)。
- クライアントを iriun.com から入手する —
.debと.rpmがあります。.debはsudo apt install ./iriunwebcam-*.debで入れると、dpkg -iと違って依存関係も一緒に解決されます。 - v4l2loopback が前提です(上記参照)。
- 両方の機器を同じ Wi-Fi に置き、アプリとクライアントを開くだけで接続されます。
他社製クライアントなしで: MJPEG ストリーム
プロプライエタリなクライアントを入れたくない場合。多くのカメラアプリは、映像を
そのまま Web アドレスとして公開できます — Android なら IP Webcam、iOS なら
MJPEG や RTSP を出せるアプリです。アドレスはアプリに表示されます(例:
http://192.168.1.42:8080/video)。ffmpeg でそれを仮想デバイスへ流し込みます。
ffmpeg -i http://192.168.1.42:8080/video -vf format=yuv420p -f v4l2 /dev/video10トラッキング中はこのウィンドウを開いたままにしておきます。ffmpeg の導入:
sudo pacman -S ffmpeg # Arch
sudo apt install ffmpeg # Debian, Ubuntu
sudo dnf install ffmpeg # Fedora(RPM Fusion)
sudo zypper install ffmpeg # openSUSE(Packman)メモ: ffmpeg は Hologramu に同梱されておらず、システムにある場合だけ使われ ます。音声付きのクリップを 1 つのファイルに録りたいなら、どのみち必要になります。
Windows
Windows にはモジュールもパッケージ管理も挟まりません。DroidCam・Iriun・Camo の クライアントは、インストール時に自分でカメラをシステムに登録します。あとは Hologramu のデバイス一覧に出てきます。
Windows 11 なら追加ソフトなしでもできます。設定の Bluetooth とデバイス → モバイルデバイス で、ペアリング済みの Android スマホを接続されたカメラとして 共有できます。最新の Windows 11、スマホ側の Windows にリンク アプリ、そして Bluetooth が有効であることが条件で、映像自体は Wi-Fi を通ります。iPhone 向けの 同等機能はないので、そちらは DroidCam・Iriun・Camo のままです。
Hologramu で選ぶ
アバターの トラッキング → カメラ で仮想デバイスを選びます。名前は自分で付けた もの、またはクライアント名(「DroidCam」「Iriun」)になります。
- 映像(解像度 / フレームレート) — 仮想デバイスはたいてい 1 つの形式しか 出しません。設定は自動のままにして、解像度は生まれる場所、つまりスマホの アプリ側で決めてください。720p で十分です。MediaPipe はどのみち内部でもっと 小さく処理するので、画素が増えても帯域を食うだけです。
- 角度と高さ — スマホが横にあったり三脚で頭より上にあるなら、ステージ上でも そこへドラッグしてください。トラッカーがその傾きを取り除き、アバターには渡し ません。
- フレームレート — 解像度より重要です。毎秒 20 枚を切るあたりから、動きが 目に見えて重くなります。
うまくいかないとき
| 症状 | 原因 |
|---|---|
| 一覧にデバイスが出ない | スマホとの接続がまだできていない(上記の exclusive_caps=1 を参照) |
| それでも出ない | モジュール未読み込み — lsmod で確認し、なければ sudo modprobe v4l2loopback |
| カーネル更新後に消えた | DKMS で再ビルド: sudo dkms autoinstall、必要ならヘッダーを入れ直す |
| スマホと PC が互いを見つけない | ネットワークが別、ゲスト Wi-Fi、ルーターのクライアント分離 |
| 映像がカクつく・遅れる | 2.4 GHz の Wi-Fi、解像度が高すぎる — いっそ USB でつなぐ |
| 映像が真っ黒のまま | ほかのアプリがスマホのカメラを掴んでいる。配信アプリを再起動する |
ヒント: 1 時間配信し続けたスマホは熱くなり、電池も空になります。ケーブルに すれば、その 2 つが一度に片付きます。