差分
このページの2つのバージョン間の差分を表示します。
次のリビジョン | 前のリビジョン 次のリビジョン両方とも次のリビジョン | ||
processing:catalinaでvideoライブラリ [2020/04/25 11:59] – 作成 baba | processing:catalinaでvideoライブラリ [2020/06/05 11:04] – baba | ||
---|---|---|---|
行 1: | 行 1: | ||
====== macOS Catalina以降のvideoライブラリ利用 ====== | ====== macOS Catalina以降のvideoライブラリ利用 ====== | ||
- | macOSはCatalina(10.15)以降は32bit動作のアプリケーション及びライブラリが動作しなくなりました。それに伴いProcessingのvideoライブラリを動作させるためには、少し工夫が必要になりました。Processingのjavaモードでどうしてもvideoライブラリを動作させないと行けないんだという方に向けた内容です。このような状況では授業でvideoライブラリを使うのは割けた方がいいです。どうしても使いたいのなら p5js で授業をしたほうがよいです。以下、動作までのまとめ情報。 | + | macOSはCatalina(10.15)以降は32bit動作のアプリケーション及びライブラリが動作しなくなりました。手元の環境では映像ファイルの再生はできるが,カメラを開くことができない.特に以下のエラーの場合は64bit動作との兼ね合いの可能性が高いです. |
+ | |||
+ | < | ||
+ | libc++abi.dylib: | ||
+ | </ | ||
+ | |||
+ | それに伴いProcessingのvideoライブラリを動作させるためには、少し工夫が必要になりました。Processingのjavaモードでどうしてもvideoライブラリでカメラを動作させないと行けないんだという方に向けた内容です。このような状況では授業でvideoライブラリを使うのは割けた方がいいです。どうしても使いたいのなら p5js で授業をしたほうがよいです。以下、動作までのまとめ情報。 | ||
同様の問題はすでにgithub上で議論されています。以下がそのissueスレッドです。 | 同様の問題はすでにgithub上で議論されています。以下がそのissueスレッドです。 | ||
行 15: | 行 21: | ||
===== 解決方法 ===== | ===== 解決方法 ===== | ||
- | | + | |
+ | |||
+ | ちなみにmacOSでは日本語環境だと、書類というフォルダ名ですが、実体はDocumentsというフォルダ名であることを注意してください。terminalで利用するときは Documentsとなります。 | ||
+ | |||
+ | 次にターミナルで~/ | ||
+ | $ xattr -p com.apple.quarantine libavcodec.58.35.100.dylib | ||
+ | |||
+ | すると | ||
+ | 00c1; | ||
+ | という文字列が帰ってきます。これは実行環境によって微妙に変わるようですが、最初の4文字が00c1でない場合は、そこだけ00c1に変更してください。その後下記をターミナルで実行しますが、その際 STRING 部分は上記の文字列で読み替えてください。 | ||
+ | |||
+ | $ xattr -w com.apple.quarantine " | ||
+ | $ cd gstreamer-1.0 | ||
+ | $ xattr -w com.apple.quarantine " | ||
+ | |||
+ | ここまででライブラリの準備は終わりです。では次にmacOS側のセキュリティ設定を修正します。ひょっとすると現状までの準備で動作する人がいるかも知れません。その人はすでに過去Processingを利用していて、カメラのセキュリティ設定が適切になされている場合になります。私の環境もそうでしたが、ここまでの修正だけでは実行時にエラーがでてしまいました。それはmacOS側でProcessingがカメラを利用することを許可していないのが原因です。そこであとは「設定」→「セキュリティとプライバシー」→「プライバシー」→「カメラ」をクリックすると出てくるカメラ利用許可一覧にProcessingが入ればよいです。ただし3.5.4を利用してカメラ動作のサンプルを実行しても、「カメラの使用を許可しますか?」ダイアログがでることなく、そのままプログラムが終了してしまいます。通常はこのダイアログボックスにユーザが許可をだすことで、macOSのプライバシー設定に自動で反映されるのですが、そこがProcessingとmacOS側で連携が取れていません。 | ||
+ | |||
+ | ただしこれはProcessingをGUI操作で実行した場合に起こるようで、terminalから直接Processingを起動すると、ちゃんとダイアログボックスが表示されます。つまり手順としては、 | ||
+ | - Processingを一旦終了 | ||
+ | - terminal で Processing/ | ||
+ | - $ ./ | ||
+ | - 新規スケッチファイルの中に下記のプログラムをコピーして実行する | ||
+ | < | ||
+ | import processing.video.*; | ||
+ | |||
+ | Capture cam; | ||
+ | |||
+ | void setup() { | ||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | if (cameras.length == 0) { | ||
+ | | ||
+ | | ||
+ | } else { | ||
+ | | ||
+ | for (int i = 0; i < cameras.length; | ||
+ | | ||
+ | } | ||
+ | |||
+ | // The camera can be initialized directly using an | ||
+ | // element from the array returned by list(): | ||
+ | cam = new Capture(this, | ||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | void draw() { | ||
+ | if (cam.available() == true) { | ||
+ | | ||
+ | } | ||
+ | | ||
+ | // The following does the same, and is faster when just drawing the image | ||
+ | // without any additional resizing, transformations, | ||
+ | // | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | 以上で、カメラの許可ダイアログが表示されると思います。これを許可してあげると自動でセキュリティ設定にもProcessingが追加されるのを確認してください。以降は通常のGUI操作でProcessingを起動しても問題はありません。 | ||
+ | 以上。 | ||