Во-первых, я прошу прощения за мой плохой английский.
Я пытаюсь xuggler прочитать отображаемое видео с веб-камеры ip по протоколу rts.xuggler подключается к камере и начинает читать поток.через несколько минут мое приложение зависает.Я также попытался отладить, но я не мог видеть, что произошло в нативных библиотеках, которые использует xuggler.Когда я добавил в свой код system.out.println () до mediaReader.readPacket (); и после него, я понял, что xuggler зависает в readPacket () метод.У вас есть идеи, как это решить?
Код, который я использую:
public class Test {
private static VideoImage mScreen = null;
private static IMediaListener mediaListener = new MediaListenerAdapter() {
@Override
public void onVideoPicture(IVideoPictureEvent event) {
try {
BufferedImage bi = event.getImage();//Utils.videoPictureToImage(pic);;
updateJavaWindow(bi);
}catch(Exception ex){
ex.printStackTrace();
}
}
};
/**
* @param args
*/
public static void main(String[] args) {
IMediaReader mediaReader = ToolFactory.makeReader("rtsp://10.0.1.16/live3.sdp");
mediaReader.setBufferedImageTypeToGenerate(BufferedImage.TYPE_3BYTE_BGR);
mediaReader.setAddDynamicStreams(true);
mediaReader.setQueryMetaData(false);
mediaReader.addListener(mediaListener);
mediaReader.getContainer().setInputBufferLength(64000000);
mediaReader.getContainer().setProperty("probesize", 500000);
openJavaWindow();
while(true){
System.out.println("reading packet");
IError err = mediaReader.readPacket();
System.out.println("end packet");
if(err != null ){
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);
}
}
спасибо за ваш ответ
Марек