Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Video 在处理中播放视频_Video_Arduino_Processing - Fatal编程技术网

Video 在处理中播放视频

Video 在处理中播放视频,video,arduino,processing,Video,Arduino,Processing,我正在用Arduino读取电容式传感器,触摸到的传感器数量被传送到处理,目前只有1或2个 在处理过程中,我试图根据接收到的传感器数量播放视频。我需要能够在播放过程中切换不同的视频,播放结束后,如果按相同的数字,视频应该跳回开始 这是正在处理的代码 import processing.serial.*; 导入处理。视频。*; 电影录影带1、录影带2; 串口; 炭素; 炭素; 布尔播放=假; //浮动时间=0; 无效设置(){ 全屏(JAVA2D); 帧率(25); video1=新电影(这是“re

我正在用Arduino读取电容式传感器,触摸到的传感器数量被传送到处理,目前只有1或2个

在处理过程中,我试图根据接收到的传感器数量播放视频。我需要能够在播放过程中切换不同的视频,播放结束后,如果按相同的数字,视频应该跳回开始

这是正在处理的代码

import processing.serial.*;
导入处理。视频。*;
电影录影带1、录影带2;
串口;
炭素;
炭素;
布尔播放=假;
//浮动时间=0;
无效设置(){
全屏(JAVA2D);
帧率(25);
video1=新电影(这是“redFIN.mp4”);
video2=新电影(本片为“greenFIN.mp4”);
端口=新的串行(这是Serial.list()[0],9600);
}
无效电影事件(电影m){
m、 read();
}
void draw(){
如果(port.available()>0){//如果数据可用,
in=char(port.read());
印刷(英文);
}
如果(in='1'){
视频1.播放();
视频2.停止();
in=先前的in;
if(in==previousIn){
视频1.跳转(0);
}
}
图像(视频1、0、0、宽度、高度);
如果(in=='2'){
视频2.播放();
视频1.停止();
in=先前的in;
if(in==previousIn){
视频2.跳跃(0);
}
}
图像(视频2,0,0,宽度,高度);
}
目前,我可以在视频之间切换,但只能从电影1切换到电影2,当从电影2返回到电影1时,我会得到电影1的音频,但它会一直显示电影2的最后一帧


如果您能深入了解为什么会发生这种情况,我将不胜感激。

您已经非常接近了,但仍有几个方面无法达到您预期的效果:

  • 使用
    image()
    绘制
    video1
    video2
    :只需渲染一个视频
  • if(in==previousIn)
    条件可能在设置
    previousIn
    之前发生(顺便说一句,您正在设置Other)。(否则,条件将始终为真)
  • 这是一个使用第三个
    Movie
    变量的版本,该变量仅是对
    video1
    video2
    的引用,具体取决于上下文:

    import processing.serial.*;
    import processing.video.*;
    
    Movie video1, video2, currentVideo;
    
    Serial port;
    char in;
    char previousIn;
    boolean playing = false;
    //float time = 0;
    
    void setup() {  
      fullScreen(JAVA2D);
      frameRate(25);
      video1 = new Movie(this, "redFIN.mp4");
      video2 = new Movie(this, "greenFIN.mp4");
      // default to video1
      currentVideo = video1;
      port = new Serial(this, Serial.list()[0], 9600);
    }
    
    void movieEvent(Movie m) {
      m.read();
    }
    
    void draw() {  
      if ( port.available() > 0) {  // If data is available,
        in = char(port.read());
        print(in);
      }
    
      if (in == '1') {  
        video1.play();
        video2.stop();
        if (in == previousIn) {
          video1.jump(0);
        }
        previousIn = in;
        currentVideo = video1;
      }
    
      if (in =='2') {
        video2.play();
        video1.stop();
        if (in == previousIn) {
          video2.jump(0);
        }
        previousIn = in;
        currentVideo = video2;
      }
      
      image(currentVideo, 0, 0, width, height);
    }
    

    非常感谢,它按预期工作!我想出了一种不同的方法(基于另一个聪明人的代码和更多的代码行),但是你的评论和解释对于学习和更好的理解来说是惊人的!