人生クソ怯み

ワクワクのもっと先へ物語は続いていくんだ twitter→@solf_poke

タダでiPhoneをwebカメラ的サムシングにするアレ

ソルフです。タイトル通り、webカメラ?USBカメラ?が、必要になった時に手持ちのブツだけでなんとかするアレをやりました。

他人のコード丸パクリだし内容もQiitaに書くほどのことでもないのでブログに書く。

こういう方法もあるんだよ、という紹介だけ。要はクックパッドのつくレポだよね(適当)

 

 

使用環境

  • xcode ver10.1
  • Swift4
  • iPhone6s (iOS12.0)

経緯

友達とスカイプポケカをやることになり、スマホで撮影しながらポケカやるのは色々と大変そうだと思い、webカメラがあればいいなぁと思ったのですが、基本ビデオ通話もpc付属のインカメラでなんとかなるわけで、そんなもん持ってないと。

ここで思いついたのは、iPhonewebカメラにするアプリを使用すること。

ただまあ、無料版もあるのですが無料版だと製品ロゴやテロップなどが入ってしまい、すごく邪魔。有料版を買えばそのロゴを消すことができるものの、そんなめんどいことやってられないわけで。

というか、誰かが作ったんだから俺でも作れるでしょ。んなもんに金払いたくねえよ!!というのが本音。

 

というわけで作ってみました(そう大げさなものでもない)

 

作り方を考える

実は、前に卒研をやる中でwebカメラが必要になってiphonewebカメラにする系のアプリを導入したことがあったのです。

その時の感じを思い出すと、カメラに映った映像をミラーリングし、pc側のソフトでそのミラーリングで飛んできた映像を仮想webカメラとして認識させるような作りだった気がしました。

今使っているノートPCがmacbookなので、QuickTimePlayerを用いることでミラーリングを行えます。Skypeで用いるだけならSkypeのウィンドウ共有をQuickTimeに指定してあげれば仮想webカメラ化する必要はないので、作るべき内容は「UIもなんもない背面カメラの映像を写すだけのアプリ」ということになりました。簡単そう!w

 

作ってみる

簡単そうとはいえ、ろくにswiftを使える人間ではないので先人の知恵を借りることにしました。

「swift カメラ」とかでググったら余裕で出てきた。マジ感謝。

qiita.com

↑偉大な先人様

 

とはいえ、これをこのままコピペしてしまうと横画面では使えません。

正直横画面でしか使う予定がなかったので、終盤の一行

self.cameraPreviewLayer?.connection?.videoOrientation = AVCaptureVideoOrientation.portrait

のportraitをlandscapeRightにしてしまいました。

アプリ自体も横画面のみの対応にしてしまいましょう。ビルド設定なんやらをやるところのGeneralのDeployment InfoでOrientationをLandscape Right以外のチェックを外す。

縦でも横でも使いたい!って人はチェック外さずにさっきの一行を条件文で分けてあげればいいんじゃないかな(適当)

 

f:id:solf_poke:20190616235915p:plain

こんな感じで。

あと、ビルドする前にInfo.plistにPrivacy - Camera Usage Descriptionを追加してあげましょう。

カメラ使用タイミングでカメラの使用許可を取れないとアプリとして使用できないみたいです。

 

で、iphoneを接続してビルドしてあげたら完成。さっき書いた通りQuickTimeミラーリングしてみましょう

 

f:id:solf_poke:20190616235544p:plain

あら可愛い

実機ビルドしたことない人はここで証明書やらなんやらを作ることになるのでそこはまあQiitaなりなんなり読んで乗り切りましょう。そんなに難しいことはやらなかったはず

 

というわけで、こういう感じにもできるよというお話でした。

手順が多いのでめんどく見えるだろうけどそんな時間かかりません。だいたい20分くらい。

マジのwebカメラとして運用したい場合はこのミラーリングした映像をウィンドウキャプチャみたいなので仮想webカメラ化してあげればいいのかな、と。

iPhoneのアプリ作るのも公開さえしなければ案外簡単に作れるのでやってみてね。

 

 

 

 

 

 

 

…よし!!今週の土日も有意義に過ごしたな!!!!!(震え声)