переключение видео в обработке 3 - PullRequest
0 голосов
/ 18 января 2020

Я пытаюсь переключать видео в обработке с использованием arduino и PIR сенсора. Я новичок в этом, поэтому вот что я хочу добиться, чтобы «video1» было на l oop во время работы программы, но всякий раз, когда ИК-датчик обнаруживает движение, он воспроизводит «видео» во всю длину и затем переключается обратно на «video1». "и продолжайте цикл до тех пор, пока ИК-датчик не станет неактивным.

заранее спасибо <3 </p>

edit: вроде как работает, но не go возвращается к "video1" после окончания "video".

вот код:

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"); 
  }
}

1 Ответ

0 голосов
/ 21 января 2020

По моему опыту, в библиотеке обработки видео есть ошибка, точно сообщающая о времени воспроизведения и остановке / зацикливании.

Я рекомендую распечатать video.time() в draw() в качестве меры отладки, потому что вам может потребоваться повернуть это очень строгое == 10.0 до более слабого / менее точного порогового диапазона с учетом вероятности пропуска этого точного времени.

Например,

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

Off-topi c: Ваш код в целом это хорошо и читабельно. Не забывайте, что вы можете заменить:

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

на:

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

В качестве альтернативы вы можете использовать третью ссылку Movie, на которую вы указываете или video или video1 в зависимости от вашего случая, устраняя необходимость в условии, заставляя вас всегда проверять, назначен ли эталон перед использованием.

...