web-dev-qa-db-ja.com

macOSで仮想カメラを公開する方法は?

私は自分のビデオチャット用のカメラフィルターを作成し、理想的には人気のあるビデオチャットアプリケーション(ズーム、ハングアウト、スカイプなど)のいずれか/すべてに適用したいと考えています。これが機能していると私が想像する方法は、カメラフィードを読み取り、フィルターを適用し、追加の仮想カメラを公開するmacOSアプリケーションを作成することです。この仮想カメラは、どのビデオチャットアプリケーションでも選択できます。

私はこれを行う方法を調査するのに何時間も費やしてきましたが、それが最新のmacOS APIでさえ可能かどうかはまだわかりません。 StackOverflowにも同様の質問がいくつかあります(例: herehere ))が、未回答か非常に古いものです。この質問が、2020年の時点でこれを行う方法について正しい方向にアドバイス/リンク/アイデアを集めることを期待しています。

これが私がこれまでに得たものです:

  • ライブストリーミングコミュニティには、OBS Studioという人気のツールがあります。さまざまなソース(カメラ、デスクトップなど)からの入力をキャプチャし、エフェクトを適用するためのプラグインシステムがあり、出力を人気のあるサービス(Twitchなど)にストリーミングします。ただし、macOSでストリームを仮想カメラとして公開する機能はありません。これについての議論( threadthread )では、Siphonと呼ばれるツールとCamTwistと呼ばれるツールについて話します。

  • 残念ながら、Siphonは仮想カメラを公開しません anymore : "macOS 10.14(Mojave)では、SyphonInjectは動作しません。Appleは、任意のプロセスにロードするグローバルディレクトリ。任意のプロセスに挿入しようとすると、警告なしで失敗します。SIPが無効になっている場合は機能しますが、それはひどい考えであり、提案も支援もしません。だれでもそれをする。」

  • 幸い、 CamTwist が機能します。私はそれを私のmacOSカタリナで実行し、カメラストリームに組み込みのエフェクトのいくつかを適用し、ハングアウトの設定で新しいカメラとして表示されました( restarting Chromeの後)。これは心強いことでした。

  • 残念ながら、CamTwistはかなり古く、メンテナンスも不十分です。 Quartz Composerはエフェクトの実装に使用しますが、Quartz Composer was deprecated by Apple andそれはおそらくカタリナで最後の日々を送っています。

  • 以前はmacOS SDKに CoreMediaIO と呼ばれるAPIがありましたが、これは仮想カメラを公開する方法であった可能性がありますが、このAPIも廃止されました。 明確ではない if/whatが現代的な代替案です。

  • この質問全体を尋ねる別の方法は、CamTwistはどのように実装されているのか、macOS Catalinaで引き続き機能するのか、2020年に同じことをどのように実装するのでしょうか?

これらすべてに光を当てるものは何でも大歓迎です!

6
user18184

Snap Cameraのような独自のカメラフィルターも作成したいと考えています。そこで、CoreMediaIOとSyphonについて調査しました。このGithubプロジェクトを確認しましたか? https://github.com/lvsti/CoreMediaIO-DAL-Example

このリポジトリは、Appleによる公式のCoreMediaIOサンプルコードのフォークとして始まりました。元のコードは2012年に最後に更新されて以来、古くなりませんでした。そのため、リポジトリの所有者は、最新のシステムでコンパイルできるように変更しました。

また、コードがmacOS 10.14(Mojave)で機能し、次の問題が発生していることがわかります。 https://github.com/lvsti/CoreMediaIO-DAL-Example/issues/4

CoreMediaIOによって構築された仮想カメラに画像を送信する方法がわからないため、実際にはまだカメラフィルターを作成していません。詳細を知りたいのですが。知っているなら教えてください。

1
tommy19970714

CamTwistはCoreMedioIOを使用します。それが非推奨だと思うのはなぜですか? 10.15 SDKのヘッダーを見ると、それが廃止されていることを示すものはありません。最近10.14の更新がありました。

0
Ken Thomases