(キャプチャボードを用いずに)一眼レフをwebカメラとして利用する方法

#背景
　テレワークやオンライン飲み会などをすることが多い昨今。
　webカメラを持っていなかったり、一眼のきれいな映像を使いたいときがあるかと思います。
　家にある一眼レフカメラをキャプチャボードなどの特殊な機材を用いずにwebカメラとして使用する方法を試したのでまとめます。（USB経由の接続方法は[こちら](https://note.com/huaa/n/n1ccdcfd15687)でもすでにまとめられています。）

追記：Canon USAから公式に一眼をウェブカメラとして使用できるソフトウェア[EosWebCamUtility](https://www.usa.canon.com/internet/portal/us/home/support/self-help-center/eos-webcam-utility/)がリリースされました。2020年8月14日現在、本記事で使用しているEos 70Dは対応していませんが、対応機種を持っている方には上記のソフトがお勧めです。

# 準備するもの
### 必要なもの
- 一眼レフカメラ（ここでは、Canon EOS 70D）
- PC（ここでは、surface laptop初代型）
- USB B mini to USB Aケーブル（カメラに付属、なくても可）

### あった方がいいもの
- カメラ用三脚
- カメラの電源ACアダプター

![IMG_20200428_115817.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628237/c62fbef6-55a0-7b6b-cb8d-52c1f41cc85e.jpeg)
設置してみた様子

# 流れ
1. カメラとPCをUSB経由、またはWi-Fi経由で接続する。
2. [SparkoCam](https://sparkosoft.com/sparkocam)を使って、カメラ映像をバーチャルwebカメラにする。

# カメラとPCを接続する
　カメラとPCを接続する方法は、USBケーブル経由で行う方法とWi-Fi経由で行う方法の二つがあります。
## USBケーブルを用いる場合
　自分の使用したEOS70Dには、出力端子としてHDMI mini端子とUSB B mini端子の二つの端子が付いています。キャプチャボードを用いる方法では、HDMI端子からの映像出力を使いますが、今回は、下のUSB端子を用います。
![IMG_20200428_120742.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628237/4e3fedff-8753-4e4e-6ee5-cf7e6bb8501a.jpeg)↑　EOS-70Dの出力端子 しぼ加工が美しい

![IMG_20200428_121008.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628237/9b8b7661-90e8-6d49-6a52-25e52b1569d6.jpeg)↑　EOS-70Dの付属USBケーブル

これらを用いて接続するだけなので簡単です。

## Wi-Fi経由で接続する場合（非推奨）
　Wi-Fi経由で接続する場合には、少々手間がかかります。
　CanonのEOS Utilityをダウンロードします。[こちら](https://cweb.canon.jp/cgi-bin/download/select-product-by-catg.cgi?i_cd_pr_catg=105)から機種、OSを選択しEOS-Utility3インストーラをダウンロードし、インストールします。
![スクリーンショット 2020-04-28 12.30.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628237/a1c5913d-a30a-32f2-11c9-a3afd9f07c3d.png)↑　上から三個目です。

　インストールを進めていくと、EOS Utility２2とEOS Utility3を両方インストールするよう出てきます。2,3でおそらく対応している機種や機能が違うのですが、どちらもインストールする必要があるようです。
![スクリーンショット 2020-04-28 12.33.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628237/852b286a-b377-8dc3-b27d-38bd7cad6443.png)
↑　インストール画面

　インストールが終了したら、デスクトップのアイコンからEOS-Utilityを起動します(これはおそらくEOS-Utility3)。
![スクリーンショット 2020-04-28 12.54.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628237/9f6a5600-d640-220e-8fb1-d8b4e0e20a1a.png)

あとは、[公式の手順](https://faq.canon.jp/app/answers/detail/a_id/87407/~/【デジタル一眼レフカメラ】eos-utility-3.xでパソコンへ画像を送信する方法%EF%BC%88wi-fi機能%EF%BC%89-%EF%BC%88eos-80d%EF%BC%89)に従ってカメラ側の設定を行いアクセスポイント経由でペアリングします。（ペアリングできることが確認できたら、一度接続を解除しておきます。）

# カメラ映像をバーチャルwebカメラにする。
　カメラ映像をバーチャルwebカメラにするために、[SparkoCam](https://sparkosoft.com/sparkocam)をインストールします。接続方法は、[こちら](https://sparkosoft.com/how-to-use-dslr-as-webcam)にも記述されています。無料版では、ロゴが入りますが、その他の制限は特になく使えます。
![スクリーンショット 2020-04-28 13.37.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628237/c3a10648-b4bc-3a35-e379-196b46525881.png)
↑　有料版は、Canonカメラ対応で49.95ドルから。

　SparkoCamを起動し、Canon Cameraのチェックボックスを入れるとカメラの映像が表示されます。（※Wi-Fi経由の場合、EOS-Utilityがカメラと接続しているとSparkoCam側が映像を取得できません。その際は、SparkoCamを開いた状態でもう一度カメラ側からWi-Fi接続をしてください。）
![スクリーンショット 2020-04-28 13.11.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628237/866e52ec-ac53-99c4-a40a-071b38e7a197.png)
↑　接続の画面 絞りやシャッタースピードなどの設定が可能

![usb_2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628237/7e2cb7a7-cfab-8b62-b6c4-76ff90a6e69b.gif)
↑　USB接続　フレーム落ち、遅延が殆どありません。

![wifi.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628237/30dbebcf-bd8c-c5c2-c9db-4de4832cb23f.gif)
↑　Wi-Fi接続　自分の環境ではフレーム落ち、遅延が結構激しいです。

# 通話テスト
主要なビデオ通話アプリでバーチャルwebカメラを認識できるか確かめてみました。
## skype
![スクリーンショット 2020-04-28 13.21.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628237/d284581b-48d2-6525-dfda-909cbd96cf93.png)
正しく認識できています。

## zoom
![スクリーンショット 2020-04-28 13.25.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628237/6aa04749-0843-c9ba-e483-12bfbdff5931.png)
正しく認識できています。

## Windows10のカメラアプリ
![スクリーンショット 2020-04-28 13.27.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628237/82eaf549-5c22-f510-ab68-e59edf0eead3.png)
正しく認識できています。

# まとめ
　SparkoCamを使うことで、キャプチャボードなどの特殊機材を用いずに一眼レフカメラをwebカメラとしてビデオ通話などに使えることが分かりました。今回の検証では、Wi-Fi経由で行うよりもUSBケーブルで行った方がフレーム落ちや遅延が少なくなることが分かりました。（ただ、Wi-Fi経由は、パソコンとカメラが離れていてもカメラだけで使えるので何か別の用途がありそうです。）

# 注意点
- カメラの音声は認識されません。別途、マイク付きのイヤホンなどが必要です。


# 感想
- Canonのwebサイトがなんとなく見づらかったです。どこにソフトがあるのかが分かりにくく感じました。例えば、EOS-Utilityの宣伝ページにダウンロードへのリンクがないなど。
- 今回の方法を調べて行く過程で、Canonはカメラのアプリケーション開発用SDK、APIを配布していることを初めて知りました。ダウンロードするには、問い合わせが必要とのことなので問い合わせたところ、個人には配布していないということでした。残念です。
- SparkoCamのようなアプリケーションは自分でも作れないものなのかを今後検証していきたいです。