English version is here
mtplvcapは、NikonのカメラのLive ViewをWebSocketでブラウザにリレーするマルチプラットフォーム対応 (Windows, Mac, Linux) のソフトです。
mtplvcapとOBSを組み合わせることで、NikonのカメラをHDMIキャプチャーボードなしでWebカメラにできます。お気に入りのカメラでGoogle Hangouts・Meet・Zoomを楽しみましょう!
機種 | LV 利用可 | ステータス | 高解像度 | 確認した人 |
---|---|---|---|---|
D3 | Yes | ? | 動作確認をお待ちしています! | |
D3X | Yes | ? | 動作確認をお待ちしています! | |
D3S | Yes | ? | 動作確認をお待ちしています! | |
D4 | Yes | ? | 動作確認をお待ちしています! | |
D4S | Yes | ? | 動作確認をお待ちしています! | |
D5 | Yes | ? | 動作確認をお待ちしています! | |
D6 | Yes | ✅ | ✅ | @puhitaku |
D90 | Yes | ✅ | ? | @sachaos |
D300 | Yes | #31 | ? | 追加の動作確認をお待ちしています! |
D300S | Yes | ? | 動作確認をお待ちしています! | |
D500 | Yes | ✅ | ✅ | @yasuoeto |
D600 | Yes | ✅ | ? | @ohtayo |
D610 | Yes | ✅ | ? | @hazlitt |
D700 | Yes | ✅ | ? | @Jokler |
D750 | Yes | ✅ | ? | @anonymous |
D780 | Yes | ✅ | ✅ | @puhitaku |
D800 | Yes | ✅ | ? | @pcjpnet |
D800E | Yes | ✅ | ? | @Higomon |
D810 | Yes | ✅ | @GlassOnTin | |
D850 | Yes | ✅ | ✅ | @puhitaku |
D3200 | Yes | ✅ | @Ivisi | |
D3300 | Yes | ✅ | @unasuke | |
D3400 | Yes | ✅ | ? | @chefaustin |
D3500 | Yes | ✅ | ? | @fedegratti |
D5000 | Yes | ✅ | @rch850 | |
D5100 | Yes | ✅ | @shigureanko | |
D5200 | Yes | ✅ | @ThatSameer | |
D5300 | Yes | ✅ | @puhitaku | |
D5500 | Yes | ✅ | ? | @nasustim |
D5600 | Yes | ✅ | ? | @tadasv |
D7000 | Yes | ✅ | ? | @takashi0314 |
D7100 | Yes | ✅ | ? | @TheMidlander |
D7200 | Yes | ✅ | ? | @br_spike_love |
D7500 | Yes | ✅ | ✅ | @puhitaku |
Df | Yes | ✅ | ? | @anonymous |
Z5 | Yes | ✅ | ✅ | @ag-eitilt |
Z6 | Yes | ✅ | ✅ | @ShadowXii |
Z6II | Yes | ✅ | ✅ | @puhitaku |
Z6III | Yes | ? | 動作確認をお待ちしています! | |
Z7 | Yes | ✅ | ✅ | @zacheadams |
Z7II | Yes | ✅ | ✅ | @puhitaku |
Z8 | Yes | ✅ | ✅ | @evanslify |
Z9 | Yes | ✅ | ✅ | @oxpa |
Z30 | Yes | ✅ | ✅ | @puhitaku |
Z50 | Yes | ✅ | ✅ | @puhitaku |
Z fc | Yes | ✅ | ✅ | @puhitaku |
Z f | Yes | #75 |
通常のフレーム解像度はいずれの機種も 640x424 ですが、比較的新しい機種は 1024xXXX のような高い解像度をサポートしている場合があります。いくつかのモデルは既に解像度の変更ができていますが、サポートしていながら解像度の変更に失敗する機種もあります。この問題は、今後解決方法が判明次第実装し解決する予定です。
マーク | 説明 |
---|---|
? |
未確認 |
空白 | 高解像度をサポートしない |
🤔 | 高解像度をサポートしているが設定に失敗する |
✅ | 高解像度をサポートしていて設定も成功する |
注釈: リンクが張られていない機種は動作未確認だが多分そもそも LV 機能を持たない
- 1ケタ機種の一部 D1, D1X, D1H, D2H, D2X, D2Hs, D2Xs
- 2ケタ機種の一部 D40, D40x, D50, D60, D70, D70s, D80
- 3ケタ機種の一部 D100, D200
- 4ケタ機種の一部 D3000, D3100
- Nikon 1 シリーズ
- 1 J5 は LV を開始しようとすると「未サポート」と応答が返ってくる
- 知られていない MTP の命令を使うとおそらく LV を有効化できる
- Nikon 1 シリーズの LV やテザー撮影についてなにか情報をお持ちの方はぜひ教えて下さい
- COOLPIX シリーズ
OS | OBS | 仮想カメラ | ブラウザ |
---|---|---|---|
Windows 10 version 1909, Build 18363.900, amd64 | 25.0.8 | OBS Virtualcam 2.0.5 | Microsoft Edge 84.0.522.44 (Chromium Edge) |
macOS 10.15.5 Catalina, amd64 | 25.0.8 | obs-mac-virtualcam 3ca8f62 v1.2.0 | Google Chrome 84.0.4147.89, Microsoft Edge 84.0.522.44 |
macOS 11.2.3 Big Sur, arm64 | 26.1.2 | Microsoft Edge 88.0.705.68 | |
Debian 10 Buster, amd64 | 25.0.7-442-ge3942061 | obs-v4l2sink 1ec3c8a | Mozilla Firefox 68.10.0esr |
Debian sid (2021-03-27), amd64 | 26.1.2-290-ga52012e8c |
※ ブラウザはビデオ通話の動作テストを行ったもので、載っているブラウザでないと動作しないわけではありません
注釈: このセクションにあるShellのコードスニペットは全部コピペできます。
重要! Windowsでは、カメラを接続して自動でインストールされるドライバをWinUSBの汎用ドライバで置き換える必要があります。 置き換えると、手動でドライバを指定し直さない限りカメラはMTPデバイスとして認識されなくなります(カメラ自体に何かを書き込んだりはしません) 元に戻すのは至って簡単です; こちらのガイドを参照してください。
-
カメラをPCに接続します
-
Zadigをここからダウンロードして開きます
-
List All Devices
にチェックを入れます -
画面上のリストにカメラ名があるのを確認し、選択します
(このスクショは置き換え後に撮ったものなので、ボタンの表記が "Reinstall Driver" となっていますが気にしないでください)
-
中央下の選択ボックスで
WinUSB (vX.X.X.X)
を選択します- 他の選択肢は動作しないので注意してください
-
Replace Driver
ボタンを押して完了するまで待ちます- デバイスマネージャーを起動して確認してみてください
- Windows用の実行ファイル (mtplvcap_windows_amd64.zip) をここからダウンロードします
- ZIPをダブルクリックして展開します
mtplvcap.exe
をダブルクリックして実行します- カメラのシャッターが開くのを確認してください
-
MSYS2をここからダウンロードしてインストールします
-
スタートメニューから "MSYS2 MSYS" を実行します
-
依存するパッケージをインストールします
- パッケージグループ
mingw-w64-x86_64-toolchain
とその他のパッケージを一度にインストールしようとするとエラーになる報告が上がっていて、これらは別々にインストールしたほうが良いかもしれません
pacman -Sy pacman -S mingw-w64-x86_64-toolchain pacman -S \ mingw-w64-x86_64-libusb \ mingw-w64-x86_64-go \ mingw-w64-x86_64-pkg-config \ git
- パッケージグループ
-
PATHを追加します
echo 'PATH=$PATH:/mingw64/bin:/mingw64/lib/go/bin' >> ~/.bashrc source ~/.bashrc
-
このリポジトリをクローンします
git clone https://github.com/puhitaku/mtplvcap.git
-
cd
してビルドして起動しますcd mtplvcap CGO_CFLAGS='-Wno-deprecated-declarations' go build . ./mtplvcap.exe -debug server
- カメラのシャッターが開くのを確認してください
GOROOT=/mingw64/lib/go go build .
のようにGOROOTの指定が要るかもしれません
-
ゴール!
- ビルドされたバイナリは移動したり再配布したりすることが可能です
C:\msys64\mingw64\bin\libusb-1.0.dll
からlibusb-1.0.dll
をmtplvcap.exe
と同じディレクトリにコピーしてくればどこでも起動できます
ドライバをWinUSBに置き換えた場合、mtplvcapで使用できる代わりに、 一般的なMTPで通信するアプリ(例: 写真を取り込むアプリなど)が使用できなくなります。 以下の手順で元に戻すことができます。
-
スタートボタンを右クリックし、「デバイス マネージャー」をクリックします
-
"ユニバーサル シリアル バス デバイス" 以下にあるカメラを右クリックし、「ドライバーの更新」をクリックします
-
「コンピューターを参照してドライバーソフトウェアを検索」をクリックします
-
「コンピューター上の利用可能なドライバーの一覧から選択します」をクリックします
-
一覧から「MTP USB デバイス」を選択し「次へ」をクリックします
-
「ドライバーが正常に更新されました」と表示されたら完了です
mtplvcap
コマンドは sudo
付きで実行してください。背景や理由については #68 をご覧ください。
-
Homebrewをインストールします
-
libusbをインストールします
brew install libusb
-
macOS用の実行ファイル (mtplvcap_macos_amd64.zip) をここからダウンロードします
-
ZIPを展開して起動します
unzip mtplvcap_macos_amd64.zip ./macos/mtplvcap
- 初回はセキュリティのアラートが出て実行できないはずです
-
検証されていないバイナリの実行を許可する
- 「キャンセル」でダイアログを消します (ゴミ箱には入れないでください!)
- 「システム環境設定」 -> 「セキュリティとプライバシー」 と開き、「このまま許可」 をクリック
mtplvcap
ももう一度起動し「開く」をクリック
- カメラのシャッターが開くのを確認してください
-
依存パッケージをインストールします
brew install golang git
-
XCode Command Line Toolsをインストールします
xcode-select --install
-
このリポジトリをクローンします
git clone https://github.com/puhitaku/mtplvcap.git
-
cd
してビルドして起動しますcd mtplvcap CGO_CFLAGS='-Wno-deprecated-declarations' go build . ./mtplvcap -debug server
- カメラのシャッターが開くのを確認してください
-
ゴール!
ビルド済みバイナリはありますが、Linuxはディストリによって環境が大きく異なるため、手でビルドすることをおすすめします。
-
libusbをインストールします
# For Debian/Ubuntu: sudo apt install libusb-1.0.0
# For Arch: pacman --sync libusb
-
Linux用の実行ファイル (mtplvcap_linux_amd64.zip) をここからダウンロードします
-
ZIPを展開して起動します
unzip mtplvcap_linux_amd64.zip ./linux/mtplvcap
- カメラのシャッターが開くのを確認してください
-
依存パッケージをインストールします
# For Debian/Ubuntu: sudo apt install golang-go libusb-1.0.0-dev
# For Arch: pacman --sync go libusb
-
cd
してビルドして起動しますcd mtplvcap CGO_CFLAGS='-Wno-deprecated-declarations' go build . ./mtplvcap -debug server
- カメラのシャッターが開くのを確認してください
$ ./mtplvcap -help
Usage of ./mtplvcap:
-backend-go
force gousb as libusb wrapper (not recommended)
-debug string
comma-separated list of debugging options: usb, data, mtp, server
-host string
hostname: default = localhost, specify 0.0.0.0 for public access (default "localhost")
-max-resolution
change the resolution to the max (experimental)
-port int
port: default = 42839 (default 42839)
-product-id string
PID of the camera to search (in hex), default=0x0 (all) (default "0x0")
-server-only
serve frontend without opening a DSLR (for devevelopment)
-vendor-id string
VID of the camera to search (in hex), default=0x0 (all) (default "0x0")
http://localhost:42839/view
を開くとキャプチャされたフレームが見えますhttp://localhost:42839/mjpeg
を開くと MJPEG ストリームを返します (OctoPrint でタイムラプスを撮影する時などに適しています)http://localhost:42839/snapshot
を開くと最新の JPEG フレーム画像が見えます
http://localhost:42839
を開くとカメラを制御するコントローラーが使えます- "Auto Focus" セクションは一定間隔もしくは手動でAFを動作させられます
- "Rate Limit" セクションはフレームレートの上限を設定でき、CPU消費量の削減に使えます
- "Information" セクションはキャプチャされているフレームの大きさ、FPS、プレビューが見えます
-
mtplvcapをインストールし、動作することを確認します
-
OBS (Open Broadcaster Software) をここからインストールします
-
OBSバーチャルカメラをインストールします(OSにより異なります; ググってください)
-
OBSの設定を開き「映像」タブを開きます
-
Live Viewの画像サイズとぴったり合うように映像サイズを設定します
- mtplvcapを起動して
localhost:42839
を開くと「Information」セクションにサイズが載っています
- mtplvcapを起動して
-
「ブラウザ」ソースを追加します
-
「幅」と「高さ」の値を「映像」タブの設定と同じ値に設定します
-
URLを
http://localhost:42839/view
に設定します -
バーチャルカメラをONにしてチャットアプリを設定します
-
キター!!!
- このソフトはアルファ版です
- 勝手にLVが止まる
- この自動オフは「パワーオフ時間」の設定で延長できますが、ものによって最大30分だったり、無制限だったりします
- D5300の場合: "カスタムメニュー" -> "c AEロック・タイマー" -> "c2 パワーオフ時間" -> "カスタマイズ" -> "ライブビュー表示" -> "30分"
- 現状では、LVが止まっていたら自動で開始するというワークアラウンドで対処しています
- この自動オフは「パワーオフ時間」の設定で延長できますが、ものによって最大30分だったり、無制限だったりします
- D5000: コントローラー画面で画像サイズが異常
- 正確には640x426
- Windowsのみ: MinTTY(MSYS2付属のターミナルエミュレータ)でmtplvcapを動かしている時、Ctrl-Cで終了すると終了処理が行われずに突然Killされる
- 終了処理が行われないので、次の起動時に初期化に失敗したり、ケーブルの抜き差しが必要になったりします
- これはMinTTYおよびでは知られた動作であり、mtplvcapのバグではありません
- winptyをpacmanでインストールして、それ経由で起動すると解決します:
pacman -Sy winpty && winpty ./mtplvcap
- Explorerから直接mtplvcapを起動するのは問題ありません、ただしバツボタンではなく必ずCtrl-Cで終了してください
- IssueもPRも大歓迎です。CONTRIBUTING.mdに従って提出してください。
- まだごく一部の機種しか動作確認できていません。是非お手持ちのカメラが動作したかどうか教えてください。何卒!
このプログラムはgithub.com/hanwen/go-mtpfsからForkして大改造したものです。 go-mtpfsの成熟したMTP実装のおかげで実装のスタートを切れました。Han-Wenさん本当にありがとうございます。
github.com/dukus/digiCamControlもMTPのペイロードをパースするために大いに参考にしました。 もしこのコードがなかったらmtplvcapは実装できていなかったと思います。