ソルフです。タイトル通り、webカメラ?USBカメラ?が、必要になった時に手持ちのブツだけでなんとかするアレをやりました。
他人のコード丸パクリだし内容もQiitaに書くほどのことでもないのでブログに書く。
こういう方法もあるんだよ、という紹介だけ。要はクックパッドのつくレポだよね(適当)
使用環境
- xcode ver10.1
- Swift4
- iPhone6s (iOS12.0)
経緯
友達とスカイプでポケカをやることになり、スマホで撮影しながらポケカやるのは色々と大変そうだと思い、webカメラがあればいいなぁと思ったのですが、基本ビデオ通話もpc付属のインカメラでなんとかなるわけで、そんなもん持ってないと。
ここで思いついたのは、iPhoneをwebカメラにするアプリを使用すること。
ただまあ、無料版もあるのですが無料版だと製品ロゴやテロップなどが入ってしまい、すごく邪魔。有料版を買えばそのロゴを消すことができるものの、そんなめんどいことやってられないわけで。
というか、誰かが作ったんだから俺でも作れるでしょ。んなもんに金払いたくねえよ!!というのが本音。
というわけで作ってみました(そう大げさなものでもない)
作り方を考える
実は、前に卒研をやる中でwebカメラが必要になってiphoneをwebカメラにする系のアプリを導入したことがあったのです。
その時の感じを思い出すと、カメラに映った映像をミラーリングし、pc側のソフトでそのミラーリングで飛んできた映像を仮想webカメラとして認識させるような作りだった気がしました。
今使っているノートPCがmacbookなので、QuickTimePlayerを用いることでミラーリングを行えます。Skypeで用いるだけならSkypeのウィンドウ共有をQuickTimeに指定してあげれば仮想webカメラ化する必要はないので、作るべき内容は「UIもなんもない背面カメラの映像を写すだけのアプリ」ということになりました。簡単そう!w
作ってみる
簡単そうとはいえ、ろくにswiftを使える人間ではないので先人の知恵を借りることにしました。
「swift カメラ」とかでググったら余裕で出てきた。マジ感謝。
↑偉大な先人様
とはいえ、これをこのままコピペしてしまうと横画面では使えません。
正直横画面でしか使う予定がなかったので、終盤の一行
self.cameraPreviewLayer?.connection?.videoOrientation = AVCaptureVideoOrientation.portrait
のportraitをlandscapeRightにしてしまいました。
アプリ自体も横画面のみの対応にしてしまいましょう。ビルド設定なんやらをやるところのGeneralのDeployment InfoでOrientationをLandscape Right以外のチェックを外す。
縦でも横でも使いたい!って人はチェック外さずにさっきの一行を条件文で分けてあげればいいんじゃないかな(適当)
こんな感じで。
あと、ビルドする前にInfo.plistにPrivacy - Camera Usage Descriptionを追加してあげましょう。
カメラ使用タイミングでカメラの使用許可を取れないとアプリとして使用できないみたいです。
で、iphoneを接続してビルドしてあげたら完成。さっき書いた通りQuickTimeでミラーリングしてみましょう
あら可愛い
実機ビルドしたことない人はここで証明書やらなんやらを作ることになるのでそこはまあQiitaなりなんなり読んで乗り切りましょう。そんなに難しいことはやらなかったはず
というわけで、こういう感じにもできるよというお話でした。
手順が多いのでめんどく見えるだろうけどそんな時間かかりません。だいたい20分くらい。
マジのwebカメラとして運用したい場合はこのミラーリングした映像をウィンドウキャプチャみたいなので仮想webカメラ化してあげればいいのかな、と。
iPhoneのアプリ作るのも公開さえしなければ案外簡単に作れるのでやってみてね。
…よし!!今週の土日も有意義に過ごしたな!!!!!(震え声)