bonjour,

j'essaye de lire un flux "streaming" d'un camera ip grâce au protocole RTSP avec JMF.

je rencontre cependant des soucis :

voici le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 public static void main(String[] args) {
        // TODO code application logic here
        Player player = null;
 
 
 
        String mediaFile ="rtsp://[]:554/live.sdp";
        try {
 
        MediaLocator mrl = new MediaLocator(mediaFile);
        //URL url = new URL(mediaFile);
        // DataSource ds = Manager.createDataSource(mrl);
        player = Manager.createPlayer(mrl);
 
 
        //player = Manager.createPlayer(mrl);
       // player.realize();
       // player.prefetch();
       JFrame jf = new JFrame();
       jf.add(player.getControlPanelComponent());
       jf.add(player.getVisualComponent());
       jf.setVisible(true);
       jf.pack();
        //player.start();
 
        }
        catch (Exception e) {
        System.err.println("Got exception "+e.getMessage());
        }
    }
voici les erreurs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
javax.media.NotRealizedError: Cannot get control panel component on an unrealized player
	at com.sun.media.BasicPlayer.getControlPanelComponent(BasicPlayer.java:509)
	at[]
Exception in thread "main" javax.media.NotRealizedError: Cannot get control panel component on an unrealized player
	at com.sun.media.BasicPlayer.getControlPanelComponent(BasicPlayer.java:509)
	at []

en changeant quelque peu le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 String mediaFile ="rtsp://[monip]:554/live.sdp";
        try {
 
        MediaLocator mrl = new MediaLocator(mediaFile);
        //URL url = new URL(mediaFile);
        // DataSource ds = Manager.createDataSource(mrl);
            if(mrl != null)
            {
                try
                {
                    player = Manager.createPlayer(mrl);
                }
                catch(NoPlayerException e)
                {
                    System.out.println(e.getStackTrace());
                    player = null;
                }
                catch (MalformedByteSequenceException e)
                {
                    System.out.println(e.getStackTrace());
                    player = null;
                }
                player.realize();
 
 
                    //player = Manager.createPlayer(mrl);
                // player.realize();
                // player.prefetch();
                JFrame jf = new JFrame();
                //jf.add(player.getControlPanelComponent());
                //jf.add(player.getVisualComponent());
                jf.setVisible(true);
                jf.pack();
                    //player.start();
            }
            else
            {
                System.out.println("MRL can't build because mrl is empty");
            }
 
        }
        catch (Exception e) {
        System.err.println("Got exception "+e.getMessage());
        }
j'ai un nouveau message d'erreurs :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
Exception in thread "JMF thread: com.sun.media.content.rtsp.Handler@181497d[ com.sun.media.content.rtsp.Handler@181497d ] ( realizeThread)" java.lang.ArrayIndexOutOfBoundsException: 0
	at com.sun.media.content.rtsp.RtspUtil.rtspStart(RtspUtil.java:310)
	at com.sun.media.content.rtsp.Handler.initRtspSession(Handler.java:166)
	at com.sun.media.content.rtsp.Handler.doRealize(Handler.java:84)
	at com.sun.media.RealizeWorkThread.process(BasicController.java:1400)
	at com.sun.media.StateTransitionWorkThread.run(BasicController.java:1339)