ProcessingのvideoライブラリがmacOS Catalinaで使えない問題への対応方法

プログラミング

カメラ映像を使用した授業でmacOS Catalinaの場合にProcessingのvideoライブラリが使えない問題が多発しています。
解決策の手順としては以下のようになります。
動画も作成したので参考にしてください。

https://github.com/processing/processing-video/issues/134#issuecomment-550000519
の記事を参考にさせていただきました。

■1.videoライブラリをバージョン1から2へ差し替える
https://github.com/processing/processing-video/releases/tag/r6-v2.0-beta4
からvideo2.0beta をダウンロード
/Users/xxxx/Documents/Processing/librariesにあるvideoと差し替える。

ない場合もここに置く。

■2.ダウンロードしたファイルのダウンロード属性を書き換える
ターミナルを開く。

コマンド

cd ~/Documents/processing/libraries/video/library/macosx
を入力してリターンするとmacosxフォルダーに行く。

コマンド

xattr -p com.apple.quarantine libavcodec.58.35.100.dylib
を入力してリターン
以下のような文字列が返ってくる。

人によって異なるので注意。

0081;5dc1bfaa;Chrome;78F18F7D-3F71-4E55-8D58-BAB946AB4707

0081を00c1に変えて、新しい文字列を作る。
00c1;5dc1bfaa;Chrome;78F18F7D-3F71-4E55-8D58-BAB946AB4707
この文字列は次のコマンドで以下のように使用する。

コマンド

xattr -w com.apple.quarantine “00c1;5dc1bfaa;Chrome;78F18F7D-3F71-4E55-8D58-BAB946AB4707” *.dylib
を入力してリターン

同様の操作を繰り返す

コマンド

cd gstreamer-1.0
を入力してリターン

コマンド

xattr -w com.apple.quarantine “00c1;5dc1bfaa;Chrome;78F18F7D-3F71-4E55-8D58-BAB946AB4707” *.dylib
を入力してリターン

■3.Processingがカメラにアクセスするのを許可する
Finderでアプリケーションに行く。
Processing.appを右クリックして、パッケージの内容を表示する。
Contents/MacOSの中にあるProcessingをダブルクリックする。
開いたprocessingに以下のカメラのテストコードを書く。
これを実行すると、カメラへのアクセスを許可するか聞いてくるので許可する。

なおカメラのテストコードではカメラ名を
“FaceTime HDカメラ(内蔵)”
などのように直接指定しても良いが、機種により微妙にカメラ名が異なるため動かないことがある。
そのため、以下のようにカメラリストを作成して0番目のカメラを指定するのが良い。

import processing.video.*;
Capture capImg;

void setup() {
size(640, 360);
String[] cameras = Capture.list();
println("Available cameras:");
for (int i = 0; i < cameras.length; i++) {
println(i, cameras[i]);
}
capImg = new Capture(this, width, height, cameras[0]);
capImg.start();
}

void captureEvent(Capture capImg) {
capImg.read();
}

void draw() {
image(capImg, 0, 0);
}

 

以下の動画で詳しく説明しています。