首先,我對我的壞英語表示歉意。使用xuggler凍結應用程序
我想讓xuggler使用rts協議從ip webcam讀取顯示視頻。 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);
}
}
感謝您的回答
馬立克