Skip to content

Instantly share code, notes, and snippets.

@crayfishapps
Last active July 11, 2016 10:15
Show Gist options
  • Save crayfishapps/a766f5ebbfcced39ba07fd27ba5204e2 to your computer and use it in GitHub Desktop.
Save crayfishapps/a766f5ebbfcced39ba07fd27ba5204e2 to your computer and use it in GitHub Desktop.
Acess live video stream from Axis cameras using Xuggler
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.crayfishapps</groupId>
<artifactId>Test_Xuggler</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<repositories>
<repository>
<id>xuggle repo</id>
<url>http://xuggle.googlecode.com/svn/trunk/repo/share/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>xuggle</groupId>
<artifactId>xuggle-xuggler</artifactId>
<version>5.4</version>
</dependency>
</dependencies>
</project>
package com.crayfishapps.test_xuggler;
import com.xuggle.mediatool.IMediaListener;
import com.xuggle.mediatool.IMediaReader;
import com.xuggle.mediatool.MediaListenerAdapter;
import com.xuggle.mediatool.ToolFactory;
import com.xuggle.mediatool.event.IVideoPictureEvent;
import com.xuggle.xuggler.IError;
import com.xuggle.xuggler.demos.VideoImage;
import java.awt.image.BufferedImage;
public class Test_Xuggler {
private static VideoImage mScreen = null;
private static IMediaListener mediaListener = new MediaListenerAdapter() {
@Override
public void onVideoPicture(IVideoPictureEvent event) {
try {
BufferedImage bi = event.getImage();
if (bi != null)
updateJavaWindow(bi);
}catch(Exception ex){
ex.printStackTrace();
}
}
};
public static void main(String[] args) {
IMediaReader mediaReader = ToolFactory.makeReader("rtsp://192.168.0.90/axis-media/media.amp?videocodec=h264");
mediaReader.setBufferedImageTypeToGenerate(BufferedImage.TYPE_3BYTE_BGR);
mediaReader.setQueryMetaData(false);
mediaReader.addListener(mediaListener);
openJavaWindow();
while(true){
IError err = null;
if (mediaReader != null) {
err = mediaReader.readPacket();
}
if(err != null ){
System.out.println("Error: " + err);
break;
}
}
closeJavaWindow();
}
private static void updateJavaWindow(BufferedImage javaImage)
{
mScreen.setImage(javaImage);
}
private static void openJavaWindow()
{
mScreen = new VideoImage();
}
private static void closeJavaWindow()
{
System.exit(0);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment