ProcessingのVideoライブラリがmacOS Catalinaで動かないのを直した

2020/5/21での動作確認です。
先日macOSをアップデートしました。春だし、ストレージ整理も兼ねて。
そしたらProcessingがGStreamerを書き換えても動かなかったんですよね。
zoomのように大人しく、「セキュリティ設定」にprocessingが追加できれば動きそうですが、普通にスケッチを走らせただけでは出てこず、Videoライブラリ(Capture)が動きません。対処にちょっと手間取ったので、ここで共有します。

はじめに

ここに載せる策は、Githubのissues等で私が見つけた解決策です。私自身が発明した解法ではありません。GStreamerを書き換える方法は後述するとおり、すでに日本語での案内がありますが、macOSにカメラの使用権を許可させる方法の日本語での案内は、おそらく5/21現在なかったので、この記事を書いています。

動作環境

macOS Catalina ver 10.15.4
processing 3.5.4
Video Library Release 6 (version 2.0-beta4) //githubからDLが必要です

はじめにとった策

Processing video library 使えない問題について(macOS Catalina)
Mac OS CatalinaでProcessingのVideoキャプチャが動かなくなった時の対処法
Github-Video capture not working in Mac OS Catalina #134

ここをもとに、
Video Library Release 6 (version 2.0-beta4)の導入と、
ターミナルでGStreamerの属性を書き換え。しかし動かず。

スクリーンショット 2020-05-21 12.07.36

エラー文

//本来はするべきじゃないけど、長すぎたので省略
~~
Available cameras:
[0] "FaceTime HDカメラ(内蔵)"
[1] "CamTwist"
[2] "CamTwist (2VUY)"
BaseSrc: [avfvideosrc0] : Failed to open device: Cannot use FaceTime HDカメラ(内蔵)
//しかも成功後に元の状態に戻したら、BaseSrcからのエラー文が違うので、参考にもならない。CamTwistは関係ない物なのでスルー

問題は、カメラ情報の取得まではうまくいっているのに、カメラが使えないってことです。

やっぱりセキュリティ設定のあたりが怪しいな、しかしProcessingがカメラへのアクセスを要求してこない......と悩んでいたところで、見つけました。

加えて以下の処理をすることで、動くようになりました。

原本
Github-Video capture not working in Mac OS Catalina #134

手順
ProcessingからProcessingーjavaをインストール

ターミナルからProcessingーjavaを経由してVideoライブラリを含むスケッチを起動

macOSから「Processingがカメラへのアクセスを求めています」という旨のアラートが表示されるので同意

その後はターミナルを経由しなくてもスケッチが動くようになる。

1.ProcessingからProcessingーjavaをインストール

スクリーンショット 2020-05-21 12.24.58

ここを押せばProcessingーjavaをインストールできます。これでターミナルからProcessingを動かすことができます。

2.ターミナルからProcessingーjavaを経由してVideoライブラリを含むスケッチを起動

ターミナルを起動したら、以下のコマンドを打ちます

processing-java --sketch= 「Videoライブラリを使用したスケッチのパス名」  --run

「Videoライブラリを使用したスケッチのパス名」は環境に合わせて変更してください。私の場合は、Videolibraryのサンプルスケッチ「GettingStartedCapture」を使用したのでこんな感じに

processing-java --sketch=/Users/「私のユーザー名」/Documents/Processing/libraries/video/examples/Capture/GettingStartedCapture --run

processing-java --sketch=でスケッチを指定、--runで走らせます。

3.macOSから「Processingがカメラへのアクセスを求めています」という旨のアラートが表示されるので同意

スケッチが走れば、Processingがカメラへのアクセスを求めてきます。
セキュリティに不安がなければ許可しましょう。許可しないと使えませんが。
するとこんな感じで、Processingにカメラへのアクセスを許可することができました。

スクリーンショット 2020-05-21 12.35.31

このあと、Processingを一度再起動すれば、今後ターミナルを経由しなくても、スケッチが動くようになります。

いいなと思ったら応援しよう!