Skip to content

Instantly share code, notes, and snippets.

@sarxos
Last active January 17, 2020 08:19
Show Gist options
  • Select an option

  • Save sarxos/03b1196b5d845687d5ba to your computer and use it in GitHub Desktop.

Select an option

Save sarxos/03b1196b5d845687d5ba to your computer and use it in GitHub Desktop.
Xuggler RTSP Source Code
import com.xuggle.mediatool.IMediaListener;
import com.xuggle.mediatool.IMediaReader;
import com.xuggle.mediatool.IMediaWriter;
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;
/**
* Small test on the Xuggler library as we try and get the cameras
* streaming video that we can access through java.
* @author Ryan
* @see http://workingwithcomputervision.blogspot.com/2012/11/xuggler-rtsp-source-code.html
*/
public class XugglerVideoTest {
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();
}
}
};
/**
* @param args
*/
public static void main(String[] args) {
IMediaReader mediaReader = ToolFactory.makeReader("rtsp://username:[email protected]/ch1-s1");
// IMediaReader mediaReader = ToolFactory.makeReader("cucina01.avi"); //file
mediaReader.setBufferedImageTypeToGenerate(BufferedImage.TYPE_3BYTE_BGR);
// mediaReader.setAddDynamicStreams(false);
mediaReader.setQueryMetaData(false);
mediaReader.addListener(mediaListener);
// mediaReader.getContainer().setInputBufferLength(64000000);
// mediaReader.getContainer().setProperty("probesize", 500000);
// IMediaWriter mediaWriter = ToolFactory.makeWriter("receivedData.mp4", mediaReader);
// mediaReader.addListener(mediaWriter);
openJavaWindow();
while(true){
// System.out.println("reading packet");
IError err = null;
if (mediaReader != null)
err = mediaReader.readPacket();
// System.out.println("end packet");
if(err != null ){
System.out.println("Error: " + err);
break;
}
}
closeJavaWindow();
}
private static void updateJavaWindow(BufferedImage javaImage)
{
mScreen.setImage(javaImage);
}
/**
* Opens a Swing window on screen.
*/
private static void openJavaWindow()
{
mScreen = new VideoImage();
}
/**
* Forces the swing thread to terminate; I'm sure there is a right
* way to do this in swing, but this works too.
*/
private static void closeJavaWindow()
{
System.exit(0);
}
}
@sargispetruza
Copy link

thanks for this
you are god

@sandip-narwade
Copy link

Can u help me for following error

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" java.lang.RuntimeException: error Operation not permitted decoding video
at com.xuggle.mediatool.MediaReader.decodeVideo(MediaReader.java:513)
at com.xuggle.mediatool.MediaReader.readPacket(MediaReader.java:475)
at xuggler.XugglerVideoTest.main(XugglerVideoTest.java:55)

@unsiv
Copy link

unsiv commented Jan 17, 2020

Thanks,

Its working

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment