質問: AndroidをWebカメラとして使うアプリがありますが、あのようなアプリはどのような仕組みで動いているのでしょうか? Android自体をUVC(USB Video Class)対応のデバイスとして動作させるようなことはできなかったと思うのですが、 どのようにカメラから映像を取得して、USBカメラとしてPC側に認識させているのでしょうか? (もしかして: Android Accessory ProtocolのドライバをPC側にインストールしてPC側をホストとして認識させてカメラの映像を流している?) 勉強のためにDroidCamのようなアプリを作ってみたいのですがどこから始めればよいのかわからないのです。 (Androidのアプリはいくつか作ったことがあります) どうすればよいのでしょうか?
回答: 間近に迫ったWindows10のアップデート(20H1)でネットワークカメラのサポートが行われるようです。 Windows 10 デバイスへのネットワーク カメラの接続 (ビルド 18995) Announcing Windows 10 support for Network Cameras! Connecting Network Cameras to Windows 10 Devices ONVIF Profile SとかRTSP Uniform Resource Identifierといった仕様をAndroid側で実装していると、Windows10 (20H1)以後はネットワークカメラとして使えるようです。 その場合はAndroid側での開発だけで出来るのではないでしょうか。 ONVIF / ONVIF Streaming Specification RFC 7826 - Real-Time Streaming Protocol Version 2.0 ONVIF/RTSP サーバー/クライアントのソースコードを公開しているらしい会社?サイトがありました。 Happytime ONVIF & RTSP Source Code アップデート前だと以下のような概要の記事があります。 AndroidスマホをWEBカメラとして使えるようにするアプリ「IP Webcam」&「DroidCam」 How to use your Android phone as a webcam for your PC How to Use an Android Phone As a Webcam For PC [Windows & Linux]. AndroidスマホをWebカメラにしてテレワーク これらの記事ではいずれもネットワークでサーバー(Android側)/クライアント(PC側)の接続をしているようですね。 接続は独自プロトコルか、RTSP等の既存プロトコルを使って、仮想Webカメラデバイスとして実現しているのでしょう。 Convert RTSP stream to virtual web camera RTSP stream to virtual video device on Windows 8 デバイスドライバの考え方についての記事がこれだと思われます。 In Skype, can I use a camera installed on another computer? USB/IP PROJECT