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](https://assets.st-note.com/production/uploads/images/26282788/picture_pc_e16ef684a002e371bd46b01bb82cd198.png?width=1200)
エラー文
//本来はするべきじゃないけど、長すぎたので省略
~~
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](https://assets.st-note.com/production/uploads/images/26283580/picture_pc_d5540a7d3ce20e60d6f645aa25d5d312.png?width=1200)
ここを押せば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](https://assets.st-note.com/production/uploads/images/26284318/picture_pc_c2b661dfae29a7664393cf691df33175.png?width=1200)
このあと、Processingを一度再起動すれば、今後ターミナルを経由しなくても、スケッチが動くようになります。
この記事が気に入ったらサポートをしてみませんか?