見出し画像

Mac OS CatalinaでProcessingのVideoキャプチャが動かなくなった時の対処法

(2021/9/9追記) Processing 4では、この記事の方法は必要ありません。こちらの記事をご覧ください! 

--------

2019年10月にリリースされたMac OSの最新OS 「Catalina」。
タイトルの通り、ProcessingのVideoライブラリのCaptureが使えなくなる、という問題がありました。

Videoライブラリのレポジトリissueが立っており、どうやら最新版 (ベータ) のライブラリを入れれば直るという空気になっていることを確認してから、ずっと腰が重くて、、やっと検証してみました!!多摩美の教え子のみなさん、学期が終わってからですみません!!

検証環境

・Mac OS Catalina (10.15.2)
Processing 3.5.3
※ 本日時点で2020年1月リリースの3.5.4があり、この記事の手順で同様に解決確認しました
Video Library Release 6 (version 2.0-beta4)

ではさっそく始めます。

インストール済みのVideoライブラリの確認

ツール → ツールを追加 → Librariesタブ で "Video" と入力して絞り込む

画像4

これまでに使っていた人は、1.0.1 がインストールされていると思います。
今回初めて人は未インストールでも問題ないです。

最新のVideoライブラリ (version2.0-beta4) をダウンロード

VideoライブラリのレポジトリのReleasesタブから最新バージョンをダウンロードします。

スクリーンショット-2020-01-23-0.35.31

librariesフォルダの中のライブラリを置き換える

~/Documents/Processing/libraries/ (書類/Processing/libraries) の中にvideoというフォルダがあるので、先程ダウンロードしたzipを解凍したもので上書きします。未インストールの場合は、ダウンロードしたものを置くだけでOK。

Processing再起動→プログラム実行→失敗

ライブラリのバージョン表記が「2.0-beta4」に変わりました!

画像5

では、本家サイトからCaptureのサンプルを拾ってきてテストしてみます。

import processing.video.*;

Capture cam;

void setup() {
 size(640, 480);

 String[] cameras = Capture.list();
 
 if (cameras.length == 0) {
   println("There are no cameras available for capture.");
   exit();
 } else {
   println("Available cameras:");
   for (int i = 0; i < cameras.length; i++) {
     println(cameras[i]);
   }
   
   // The camera can be initialized directly using an 
   // element from the array returned by list():
   cam = new Capture(this, cameras[0]);
   cam.start();     
 }      
}

void draw() {
 if (cam.available() == true) {
   cam.read();
 }
 image(cam, 0, 0);
 // The following does the same, and is faster when just drawing the image
 // without any additional resizing, transformations, or tint.
 //set(0, 0, cam);
}

Catalinaではこんなダイアログが出るかもしれません。出たら「OK」で許可します。

画像6

しかし、その次に「"libgstreamer-1.0.0.dylib"は、開発元を検証できないため開きません。」というアラートが出て、プログラムの実行に失敗してしまいます。Webからダウンロードしたライブラリがセキュリティ上、実行に失敗しているようです。

画像7

しかし、諦める必要はありません、解決方法も開発元のissue上のコメントに載っています!

ターミナルで解決

以下のコマンドを順に実行すればいいそうです。videoのライブラリのディレクトリに移動して、ファイルの拡張属性と呼ばれる情報を設定し直しているようです。

$ cd ~/Documents/processing/libraries/video/library/macosx
$ xattr -p com.apple.quarantine libavcodec.58.35.100.dylib
$ 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

↓ 実行結果 (配色はこちらで紹介したIcebergです)

スクリーンショット 2020-01-23 0.20.10

再びProcessing再起動 → プログラム実行

無事にサンプルプログラムが動作して、カメラの映像が表示されました!


[宣伝] 多摩美統合デザイン学科の卒展が、本日 (1/23) から開催されます!

2018年度から多摩美の統合デザイン学科というところで、Processingを使ってプログラミングを教えています。その初年度に教えた学生たちが、いよいよ卒展を迎えます!

「I am」
開催期間: 2020年1月23日(木)  〜 1月26日(日)
会場: 多摩美術大学上野毛キャンパス (Google Maps)
時間: 9:00〜17:00 (入場無料)
SNS:  Twitter / Instagram / note

キャンパスは八王子ではなく、上野毛ですのでアクセスしやすいかと思います。ぜひ週末にいかがでしょう。ランチは「蕎麦はやかわ」がおすすめです。

この記事が気に入ったらサポートをしてみませんか?