# VIDEO IP (NewTek NDI)

**URL:** https://discourse.processing.org/t/video-ip-newtek-ndi/16037
**Category:** Libraries
**Created:** [December 2, 2019, 10:09am UTC](https://discourse.processing.org/t/video-ip-newtek-ndi/16037 "2019-12-02T10:09:41Z")
**Posts on this page:** 1
**Showing post:** 14

<div class="post-metadata">

### Author: ![Romain](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/romain/32/8483_2.png) [@Romain](https://discourse.processing.org/u/Romain)
#### Post date: [March 21, 2020, 8:12pm UTC](https://discourse.processing.org/t/video-ip-newtek-ndi/16037/14 "2020-03-21T20:12:36Z")

</div>

I tried a lot of things with the code of your link, nothing works… And I don’t know enough Eclipse to try directly his examples…  
But I also find this : [GitHub - rfikes4/haxademic-ndi-sender](https://github.com/rfikes4/haxademic-ndi-sender)  
I put correctly its Devolay .jar in Processing permanente library and I tried. this code (mixing its java example and an processing example) :

```auto
import com.walker.devolay.*;

import com.haxademic.core.draw.image.ImageUtil;

import java.awt.image.BufferedImage;
import java.awt.image.DataBuffer;
import java.nio.ByteBuffer;
import processing.video.*;

PImage pimg;
Movie movie;
DevolaySender sender;
DevolayVideoFrame videoFrame;
BufferedImage tempBuffered;
ByteBuffer byteBuffer;
DataBuffer dataBuffer;

String senderName = "NDI Processing";

void setup() {
  size(640, 360);
  Devolay.loadLibraries();
  sender = new DevolaySender(senderName);
  background(0);
  // Load and play the video in a loop
  movie = new Movie(this, "transit.mov");
  movie.loop();

  videoFrame = new DevolayVideoFrame();
  videoFrame.setResolution(width, height);
  videoFrame.setFourCCType(DevolayFrameFourCCType.NDIlib_FourCC_type_BGRX);
  videoFrame.setFrameRate((int)frameRate, 1);
}

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

void draw() {
  pimg = movie.get();
  tempBuffered = ImageUtil.pImageToBuffered(pimg);
  byteBuffer = BufferedImageToByteBuffer(tempBuffered);

  videoFrame.setData(byteBuffer);
  sender.sendVideoFrame(videoFrame);

  image(pimg, 0, 0, width, height);
}

public ByteBuffer BufferedImageToByteBuffer(BufferedImage bi) {
  int[] pixels = new int[bi.getWidth() * bi.getHeight()];
  bi.getRGB(0, 0, bi.getWidth(), bi.getHeight(), pixels, 0, bi.getWidth());

  ByteBuffer buffer = ByteBuffer.allocateDirect(bi.getWidth() * bi.getHeight() * 4);

  for (int y = 0; y < bi.getHeight(); y++) {
    for (int x = 0; x < bi.getWidth(); x++) {
      int pixel = pixels[y * bi.getWidth() + x];
      buffer.put((byte) ((pixel >> 16) & 0xFF)); // Red
      buffer.put((byte) ((pixel >> 8) & 0xFF)); // Green
      buffer.put((byte) (pixel & 0xFF)); // Blue
      buffer.put((byte) 0); // Alpha or terminating byte?
    }
  }

  buffer.flip();
  return buffer;
}

```

But at line : “Devolay.loadLibraries();”, there is the error :

> "UnsupportedClassVersionError … "  
> “This version of Processing only supports libraries and JAR files compiled for Java 1.8 or earlier.  
> A library used by this sketch was compiled for Java 1.9 or later,  
> and needs to be recompiled to be compatible with Java 1.8.  
> UnsupportedClassVersionError: com/walker/devolay/Devolay has been compiled by a more recent version of the Java Runtime (class file version 53.0), this version of the Java Runtime only recognizes class file versions up to 52.0”

… I’m lost 🙂

---

_[View the full topic](https://discourse.processing.org/t/video-ip-newtek-ndi/16037)._
