Récupérer video.vam (flux vidéo) avec JMF...
z980x
Messages postés
918
Statut
Membre
-
SyPiC Messages postés 187 Statut Membre -
SyPiC Messages postés 187 Statut Membre -
Bonjour à tous,
j'aimerais récupérer le flux vidéo de ma caméra IP... Le flux vidéo est en .vam (video.vam), ce qui, d'après mes recherches serait du MPEG4.
J'ai lu qu'il fallait utiliser le JMF de java... Je l'ai donc télécharger, mais voici mes problèmes:
Premièrement, je suis sous linux et j'utilise Eclipse, comment intégrer les lib JMF dans Eclipse?
Deuxièment, j'aimerais récupérer ce flux, mais comment faire??? Je ne trouve pas de tuto simple pour récupérer et afficher ce flux dans une fenêtre java... (Le flux est accessible grace à une adresse du type: http://login:pass@192.168.1.1cgi-bin/video.vam)
Pouvez vous svp, répondre à mes questions, ou à défaut, m'indiquer ou je pourrais trouver une solution???
Merci d'avance !!!
Philippe
j'aimerais récupérer le flux vidéo de ma caméra IP... Le flux vidéo est en .vam (video.vam), ce qui, d'après mes recherches serait du MPEG4.
J'ai lu qu'il fallait utiliser le JMF de java... Je l'ai donc télécharger, mais voici mes problèmes:
Premièrement, je suis sous linux et j'utilise Eclipse, comment intégrer les lib JMF dans Eclipse?
Deuxièment, j'aimerais récupérer ce flux, mais comment faire??? Je ne trouve pas de tuto simple pour récupérer et afficher ce flux dans une fenêtre java... (Le flux est accessible grace à une adresse du type: http://login:pass@192.168.1.1cgi-bin/video.vam)
Pouvez vous svp, répondre à mes questions, ou à défaut, m'indiquer ou je pourrais trouver une solution???
Merci d'avance !!!
Philippe
A voir également:
- Récupérer video.vam (flux vidéo) avec JMF...
- Comment recuperer une video sur youtube - Guide
- Montage video gratuit windows - Guide
- Recuperer message whatsapp supprimé - Guide
- Recuperer le son d'une video - Guide
- Nommez une application d'appel vidéo ou de visioconférence - Guide
3 réponses
Projets similaires avec ces liens:
http://forum.java.sun.com/thread.jspa?forumID=28&threadID=494920
http://forum.java.sun.com/thread.jspa?forumID=28&threadID=5119268
programme exemple mais en JPEG:
import java.net.*;
import com.sun.image.codec.jpeg.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
/**
*
* @author David E. Mireles, Ph.D.
*/
public class AxisCamera extends JPanel implements Runnable {
public boolean useMJPGStream = true;
public String jpgURL="http://your-ip-here/axis-cgi/jpg/image.cgi?resolution=352x240";
public String mjpgURL="http://your-ip-here/axis-cgi/mjpg/video.cgi?resolution=352x240";
DataInputStream dis;
private Image image=null;
public Dimension imageSize = null;
public boolean connected = false;
private boolean initCompleted = false;
HttpURLConnection huc=null;
Component parent;
/** Creates a new instance of AxisCamera */
public AxisCamera (Component parent_) {
parent = parent_;
}
public void connect(){
try{
URL u = new URL(useMJPGStream?mjpgURL:jpgURL);
huc = (HttpURLConnection) u.openConnection();
//System.out.println(huc.getContentType());
InputStream is = huc.getInputStream();
connected = true;
BufferedInputStream bis = new BufferedInputStream(is);
dis= new DataInputStream(bis);
if (!initCompleted) initDisplay();
}catch(IOException e){ //incase no connection exists wait and try again, instead of printing the error
try{
huc.disconnect();
Thread.sleep(60);
}catch(InterruptedException ie){huc.disconnect();connect();}
connect();
}catch(Exception e){;}
}
public void initDisplay(){ //setup the display
if (useMJPGStream)readMJPGStream();
else {readJPG();disconnect();}
imageSize = new Dimension(image.getWidth(this), image.getHeight(this));
setPreferredSize(imageSize);
parent.setSize(imageSize);
parent.validate();
initCompleted = true;
}
public void disconnect(){
try{
if(connected){
dis.close();
connected = false;
}
}catch(Exception e){;}
}
public void paint(Graphics g) { //used to set the image on the panel
if (image != null)
g.drawImage(image, 0, 0, this);
}
public void readStream(){ //the basic method to continuously read the stream
try{
if (useMJPGStream){
while(true){
readMJPGStream();
parent.repaint();
}
}
else{
while(true){
connect();
readJPG();
parent.repaint();
disconnect();
}
}
}catch(Exception e){;}
}
public void readMJPGStream(){ //preprocess the mjpg stream to remove the mjpg encapsulation
readLine(3,dis); //discard the first 3 lines
readJPG();
readLine(2,dis); //discard the last two lines
}
public void readJPG(){ //read the embedded jpeg image
try{
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(dis);
image = decoder.decodeAsBufferedImage();
}catch(Exception e){e.printStackTrace();disconnect();}
}
public void readLine(int n, DataInputStream dis){ //used to strip out the header lines
for (int i=0; i<n;i++){
readLine(dis);
}
}
public void readLine(DataInputStream dis){
try{
boolean end = false;
String lineEnd = "\n"; //assumes that the end of the line is marked with this
byte[] lineEndBytes = lineEnd.getBytes();
byte[] byteBuf = new byte[lineEndBytes.length];
while(!end){
dis.read(byteBuf,0,lineEndBytes.length);
String t = new String(byteBuf);
//System.out.print(t); //uncomment if you want to see what the lines actually look like
if(t.equals(lineEnd)) end=true;
}
}catch(Exception e){e.printStackTrace();}
}
public void run() {
connect();
readStream();
}
public static void main(String[] args) {
JFrame jframe = new JFrame();
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
AxisCamera axPanel = new AxisCamera(jframe);
new Thread(axPanel).start();
jframe.getContentPane().add(axPanel);
jframe.pack();
jframe.show();
}
}
http://forum.java.sun.com/thread.jspa?forumID=28&threadID=494920
http://forum.java.sun.com/thread.jspa?forumID=28&threadID=5119268
programme exemple mais en JPEG:
import java.net.*;
import com.sun.image.codec.jpeg.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
/**
*
* @author David E. Mireles, Ph.D.
*/
public class AxisCamera extends JPanel implements Runnable {
public boolean useMJPGStream = true;
public String jpgURL="http://your-ip-here/axis-cgi/jpg/image.cgi?resolution=352x240";
public String mjpgURL="http://your-ip-here/axis-cgi/mjpg/video.cgi?resolution=352x240";
DataInputStream dis;
private Image image=null;
public Dimension imageSize = null;
public boolean connected = false;
private boolean initCompleted = false;
HttpURLConnection huc=null;
Component parent;
/** Creates a new instance of AxisCamera */
public AxisCamera (Component parent_) {
parent = parent_;
}
public void connect(){
try{
URL u = new URL(useMJPGStream?mjpgURL:jpgURL);
huc = (HttpURLConnection) u.openConnection();
//System.out.println(huc.getContentType());
InputStream is = huc.getInputStream();
connected = true;
BufferedInputStream bis = new BufferedInputStream(is);
dis= new DataInputStream(bis);
if (!initCompleted) initDisplay();
}catch(IOException e){ //incase no connection exists wait and try again, instead of printing the error
try{
huc.disconnect();
Thread.sleep(60);
}catch(InterruptedException ie){huc.disconnect();connect();}
connect();
}catch(Exception e){;}
}
public void initDisplay(){ //setup the display
if (useMJPGStream)readMJPGStream();
else {readJPG();disconnect();}
imageSize = new Dimension(image.getWidth(this), image.getHeight(this));
setPreferredSize(imageSize);
parent.setSize(imageSize);
parent.validate();
initCompleted = true;
}
public void disconnect(){
try{
if(connected){
dis.close();
connected = false;
}
}catch(Exception e){;}
}
public void paint(Graphics g) { //used to set the image on the panel
if (image != null)
g.drawImage(image, 0, 0, this);
}
public void readStream(){ //the basic method to continuously read the stream
try{
if (useMJPGStream){
while(true){
readMJPGStream();
parent.repaint();
}
}
else{
while(true){
connect();
readJPG();
parent.repaint();
disconnect();
}
}
}catch(Exception e){;}
}
public void readMJPGStream(){ //preprocess the mjpg stream to remove the mjpg encapsulation
readLine(3,dis); //discard the first 3 lines
readJPG();
readLine(2,dis); //discard the last two lines
}
public void readJPG(){ //read the embedded jpeg image
try{
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(dis);
image = decoder.decodeAsBufferedImage();
}catch(Exception e){e.printStackTrace();disconnect();}
}
public void readLine(int n, DataInputStream dis){ //used to strip out the header lines
for (int i=0; i<n;i++){
readLine(dis);
}
}
public void readLine(DataInputStream dis){
try{
boolean end = false;
String lineEnd = "\n"; //assumes that the end of the line is marked with this
byte[] lineEndBytes = lineEnd.getBytes();
byte[] byteBuf = new byte[lineEndBytes.length];
while(!end){
dis.read(byteBuf,0,lineEndBytes.length);
String t = new String(byteBuf);
//System.out.print(t); //uncomment if you want to see what the lines actually look like
if(t.equals(lineEnd)) end=true;
}
}catch(Exception e){e.printStackTrace();}
}
public void run() {
connect();
readStream();
}
public static void main(String[] args) {
JFrame jframe = new JFrame();
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
AxisCamera axPanel = new AxisCamera(jframe);
new Thread(axPanel).start();
jframe.getContentPane().add(axPanel);
jframe.pack();
jframe.show();
}
}
Merci quand meme
Philippe