Processing长时间播放高清视频出现NullPointerException 错误的解决方法

在processing开发中需要长时间播放视频时,经常会出现NullPointerException错误,可以使用PImage获取Movie中的每一帧图像的方式来替代直接在draw中直接使用Movie播放视频,代码如下:

import processing.video.*;

Movie movie;

PImage movieImage;

void setup() {

  size(800, 800);

  background(0);

  //加载及循环播放视频

  movie = new Movie(this, "bottom.mp4");

  movie.loop();

}

// 不使用以下方法

//void movieEvent(Movie m) {

//  m.read();

//}

void draw() {

  // I use the synchronization here to avoid multiple calls to draw

  // before it finishes

  synchronized(this) { 

    if (movie.available()) {

      //loads a new frame

      movie.read();

      if (movieImage==null) {

        // delayed initialization, because until the first frame is read

        // the movie object does not now its size

        movieImage=createImage(movie.width, movie.height, RGB);

        movieImage.loadPixels();

      }

      movie.loadPixels();

      //copies pixels to a PImage

      System.arraycopy(movie.pixels, 0, movieImage.pixels, 0, movie.pixels.length);

      movieImage.updatePixels();

    }

    if (movieImage!=null) {

      //draw the image/video

      image(movieImage, 0, 0, width, height);

    }

  }

}

你可能感兴趣的:(Processing长时间播放高清视频出现NullPointerException 错误的解决方法)