0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Processing Video Library 問題まとめ

Last updated at Posted at 2022-09-27

はじめに

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の例

スクリーンショット 2022-10-05 15.36.45.png

サンプルが動かないとき

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

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?