カメラとの通信を libusb で実装してライブビューを取得し、OBS (Open Broadcaster Software) の仮想カメラ機能でWebカメラ化するツールを実装しました。
2020年の世界的パンデミックによりリモートワーク需要が急増し、Web カメラの入手が大変困難となったことから、一眼レフを Web カメラとして使用するテクニックが急激に一般的になりました。
しかしながら、対応に積極的な Canon のようなベンダーでも対応が Windows のみ(良くて後日 macOS に対応)が一般的で、Nikon を含むいくつかの消極的な一眼レフベンダーはそもそも対応発表が大きくずれ込む事態となりました。
このような状況を打開するため、というかそもそも私自身が所有する Nikon D5300 をWebカメラにしたかったため、マルチプラットフォーム対応なツールの自力開発に踏み切りました。
ポイント
- マルチプラットフォームに対応した OSS である libusb と OBS を利用することで、同一のコードで主要な3 OS である Windows/macOS/Linux に対応
- Go の強力な並行処理バックエンドを駆使し、USB通信・WebSocket・静的ファイル配信などの非同期処理を1プロセスに実装
- 通信の実際の内容や既存 OSS を参考に、ライブビュー画像の連続取得だけでなくオートフォーカスや絞りなど必要な調整を行えるように実装
- 機種間の動作の差異をコントリビューターと一緒に調べ、多くの機種(2020年9月現在 12機種)での動作を実現
リポジトリ
GitHub: puhitaku/mtplvcap