bck
Alejandro Acuña
2024-11-11 f1cb4443aede6d4657bdc3396c8914d3a9f4fa93
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
package cameravlctest;
 
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.util.concurrent.CompletableFuture;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.plaf.basic.BasicComboBoxRenderer;
import uk.co.caprica.vlcj.player.base.MediaPlayer;
import uk.co.caprica.vlcj.player.base.MediaPlayerEventAdapter;
import uk.co.caprica.vlcj.player.component.EmbeddedMediaPlayerComponent;
import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer;
import uk.co.caprica.vlcj.player.embedded.videosurface.ComponentVideoSurface;
 
public class Video extends JPanel
{
    private EmbeddedMediaPlayer embeddedMediaPlayer = null;
    private ComponentVideoSurface videoSurface = null;
    private MyMediaPlayerEventAdapter myMediaPlayerEventAdapter = null;
    private JPanel panel = null;
    private EmbeddedMediaPlayerComponent mediaPlayer;
 
    public Video()
    {
        try
        {
            this.videoSurface = CameraVLCTest.mediaPlayerFactory.videoSurfaces().newVideoSurface(this);
            this.embeddedMediaPlayer = CameraVLCTest.mediaPlayerFactory.mediaPlayers().newEmbeddedMediaPlayer();
            this.embeddedMediaPlayer.videoSurface().set(videoSurface);
            this.embeddedMediaPlayer.fullScreen().set(true);
            this.panel = new JPanel();
            this.panel.setBackground(Color.black);
            this.panel.setLayout(new BorderLayout());
            
            embeddedMediaPlayer = CameraVLCTest.mediaPlayerFactory.mediaPlayers().newEmbeddedMediaPlayer();
            embeddedMediaPlayer.videoSurface().set(this.videoSurface);
            
            this.myMediaPlayerEventAdapter = new MyMediaPlayerEventAdapter();
//            this.embeddedMediaPlayer = CameraVLCTest.mediaPlayerFactory.mediaPlayers().newEmbeddedMediaPlayer();
//            this.embeddedMediaPlayer.events().addMediaPlayerEventListener(myMediaPlayerEventAdapter);
            //this.embeddedMediaPlayer.media().prepare(mrl);
//            this.embeddedMediaPlayer.media().play("rtsp://admin:Aluvisa1@172.16.11.236/", new String[]{"dummy","-dummy","--dummy"});
            
            
            mediaPlayer = new EmbeddedMediaPlayerComponent();
            mediaPlayer.mediaPlayer().events().addMediaPlayerEventListener(myMediaPlayerEventAdapter);
            mediaPlayer.mediaPlayer().fullScreen().set(true);
            
            this.setLayout(new BorderLayout());
            this.add(mediaPlayer,BorderLayout.CENTER);
         
        } catch (Exception exception)
        {
            exception.printStackTrace();
        }
    }
    
    public void play(String mrl)
    {
          mediaPlayer.mediaPlayer().media().play("rtsp://admin:Aluvisa1@172.16.11.236/");
          loadSnapshot();
    }
    
    public void loadSnapshot()
    {
        CompletableFuture.runAsync(() -> {
            try
            {
                Thread.sleep(10 * 1000);
            } catch (InterruptedException ex)
            {
                Logger.getLogger(Video.class.getName()).log(Level.SEVERE, null, ex);
            }
            JLabel labelSnapshot = new JLabel();
            {
                labelSnapshot.setIcon(new ImageIcon(mediaPlayer.mediaPlayer().snapshots().get()));
            }
            this.removeAll();
        this.revalidate();
 
 
        this.add(labelSnapshot, BorderLayout.CENTER);
        });
    }
 
    private class MyMediaPlayerEventAdapter extends MediaPlayerEventAdapter
    {
        @Override
        public void opening(MediaPlayer mp) 
        {
            System.out.println("Opening");
        }
 
        
        @Override
        public void playing(MediaPlayer mp) 
        {
            System.out.println("Playing");
        }
 
        @Override
        public void paused(MediaPlayer mp) 
        {
            System.out.println("Paused");
        }
 
        @Override
        public void stopped(MediaPlayer mp) 
        {
            System.out.println("Paused");
        }
 
        @Override
        public void finished(MediaPlayer mp) 
        {
            System.out.println("Paused");
        }
 
        @Override
        public void error(MediaPlayer mp) 
        {
            System.out.println("Error");
        }
        
        @Override
    public void snapshotTaken(MediaPlayer mediaPlayer, String filename)
        {
            System.out.println("Snapshot taken");
        }
    }
    
    
}