はじめに
ProcessingのVideoライブラリが使えないときの対策メモ.
随時更新していきます.
以前,書いた記事も載せておきます.
まず確認すること
最初に、Processingのバージョンが最新か確認してください。またMacの場合IntelかApple silicon正しいバージョンがインストールされているかも確認しましょう。
最新版をインストールしたら、Video libraryも再インストールし、Processingを再起動して、動作するか確認してみましょう。
次に確認すること
Windows環境でよくあるのが,Processing.exeとライブラリや作成したスケッチを管理するProcessingフォルダがあるディレクトリに日本語が含まれていると動かないことがあります.
C:Users/user/OneDrive/デスクトップ/Processing-4.0.1/processing.exe
C:Users/user/OneDrive/ドキュメント/Processing/libraies
Processing.exeはwindowsなら Cドライブ直下か,C:Program Filesに入れておきます.
C:Program Files/processing-4.0.1/processing.exe
videoライブラリはC直下にProcessingフォルダを作りlibrariesに入れるか,ユーザディレクトリに"Documents"フォルダを作り,その中にProcessing/libraries/videoとするのが良いと思います.
C:Processing/libraries/video
C:Users/user_name/Documents/Processing/libraries/video
フォルダを移動させたら,Processingの設定からSketchbook folderのパスも変更後のパスに設定し直しましょう.
Macの例
サンプルが動かないとき
Videoライブラリのサンプルが動かないときは,以下のプログラムを実行してみて下さい.
import processing.video.*;
Capture cap;
void setup() {
size(640,480);
//カメラデバイス一覧を取得しコンソールに表示
String[] cameras = Capture.list();
println(cameras);
//カメラに接続できるまでカメラデバイス一覧を取得
while (cameras.length == 0) {
cameras = Capture.list();
}
//検出された最初のカメラデバイスに接続
cap = new Capture(this, 640,480,cameras[0]);
cap.start();
}
void draw() {
image(cap, 0, 0);
}
void captureEvent(Capture c) {
c.read();
}
GStreamer Erorrが出たとき
修正中
以下参照
Internal data stream error が出たとき
videoライブラリのCaptuerクラスをインスタンス化する時に,fpsを30に設定するといけると思います.
import processing.video.*;
Captuer cap;
void setup(){
size(640, 480);
String[] cameras = Capture.list();
cap = new Captuer(this, 640, 480, cameras[0], 30)
cap.start();
}
Mac OS(Processing4)で症状が出る時
2022/10/03現在,Githubに最新のVideo Library Release 11 (2.2.1)が上がていて,MacでのInternal data stream error
に対応している様です.
カメラは動いてるけど画面が真っ暗なとき
cam.read();が入っていない場合,カメラ映像が読み込まれていない可能性があります.
void draw() {
//カメラが使用可能であればread()する
if (cap.available() == true) {
cap.read();
}
image(cap, 0, 0);
}
または
void captureEvent(Capture cap) {
cap.read();
}
稀なケース
Microsoft Surface で映像が緑がかる,または遅延する
Microsoft Surface特有のバグぽいです.正式な解決方法がなさそうで,ファームウェアアップデートで直る人や,レジストリーエディタで設定をいじると直るとか直らないとか...
応急処置としてはUSBカメラを繋げ,デバイスを指定してあげるのが良さそうです.
参考
matablo:SurfaceでprocessingのVideo.Capture映像が緑がかりフレームレートが落ちる現象について
fpsを30以下にすると動く
TAで授業のサポートをしていたときに,上記の対策を色々試してみたけど,Videoが動かない生徒がいて,試しにfpsを1にしてみたら動きました.その生徒のPCではfps25でVideoを動かせました.
実行環境
MacOS BigSur
Processing 4.0.1
GStreamer 1.20.2