【问题标题】:video toggle in Processing 3处理 3 中的视频切换
【发布时间】:2020-01-18 12:31:10
【问题描述】:

我正在尝试使用 arduino 和 PIR 传感器在处理中切换视频。我是新手,所以这是我想要实现的,“video1”将在程序运行时循环播放,但只要 PIR 传感器检测到运动,它就会全长播放“video”,然后切换回“video1”并继续循环直到 PIR 传感器处于非活动状态。

提前感谢

编辑:它有点工作,但在“视频”结束后不会回到“video1”。

代码如下:

import processing.video.*;
import processing.serial.Serial;

static final int PORT_INDEX = 0, BAUDS = 9600;
String myString;

Movie video, video1;



void setup() {
  size(1920, 1088);
  video = new Movie(this, "movie.mov");
  video1 = new Movie(this, "movie1.mov");
  final String[] ports = Serial.list();
  printArray(ports);
  new Serial(this, ports[PORT_INDEX], BAUDS).bufferUntil(ENTER);
  frameRate(25);

  video.stop();
   video1.loop();
}


boolean isToggled;
boolean mo = false;

void movieEvent(Movie m) { 
      m.read(); 
}



void draw() {
  background(0);
  set(0,0,isToggled? video : video1);
  if (video.time() == 10.0) {
    isToggled = false;

  }
}

void serialEvent(final Serial s) {
  myString = s.readString().trim();
  redraw = true;

  if (myString.equals("Motion detected!")) {
    isToggled = true;
    video.play();
    println("skria"); 
  }
}

【问题讨论】:

    标签: video arduino processing


    【解决方案1】:

    根据我的经验,处理视频库有一个错误,可以准确地报告播放时间和停止/循环。

    我建议在draw() 中打印出video.time() 作为调试措施,因为您可能需要将非常严格的== 10.0 转换为更宽松/不太精确的阈值范围,以考虑到可能会错过那个确切的时间。

    例如

    if (video.time() => 9.59) {
     isToggled = false;
    }
    

    题外话: 您的代码总体上很好且可读。 请记住,您可以替换:

      background(0);
      set(0,0,isToggled? video : video1);
    

    与:

    background(isToggled? video : video1);image(isToggled? video : video1,0,0);

    或者,您可以使用第三个 Movie 引用,根据您的情况指向 videovideo1,通过强制您始终确保始终在使用前分配引用来消除对条件的需求.

    【讨论】:

      猜你喜欢
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多