zoukankan      html  css  js  c++  java
  • Video capture using JMF

    http://bytes.com/topic/java/answers/714018-video-capture-using-jmf


    ————————————————————————————————————————————————————————————————————

    Hello guys,
    I am working on a IP camera for many days.But i am unable to capture the video with the JMF coding. Please provide me correct JMF coding.Please help in out.


    Thanks in advance.
    hi,

    i m also doing same things. and i have one code that capture MJPEG video format and they store all jpeg file , but i want in MPEG-4 video format so if u have any idea then give me reply....

    here is the code for MJPG video capture on ip camera
     

         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.*;
         
         
        public class AxisCamera1 extends JPanel implements Runnable
        {
            public boolean useMJPGStream = true//still image set to false
            
    //streaming set to true
            public String jpgURL="http://192.168.0.36/axis-cgi/jpg/image.cgi?resolution=352x288";
            public String mjpgURL="http://192.168.0.36/mjpg/video.mjpg";//"http://192.168.1.198/mjpg/video.mjpg";
            DataInputStream dis;
            private BufferedImage image=null;
            int counter=0;
         
            public Dimension imageSize = null;
            public boolean connected = false;
            private boolean initCompleted = false;
            HttpURLConnection huc=null;
            Component parent;
         
            /** Creates a new instance of AxisCamera1 */
            public AxisCamera1(Component parent_) {
            parent = parent_;
            }
         
            public static Image getScaledInstanceAWT(BufferedImage source, double factor) {
            int w = (int) (source.getWidth() * factor);
            int h = (int) (source.getHeight() * factor);
            return source.getScaledInstance(w, h, Image.SCALE_SMOOTH);
            }
         
            public static BufferedImage toBufferedImage(Image image) {
            new ImageIcon(image); //load image
            int w = image.getWidth(null);
            int h = image.getHeight(null);
            BufferedImage bimage = new BufferedImage(w, h, BufferedImage.TYPE_BYTE_INDEXED);
            //BufferedImage bimage = getDefaultConfiguration().createCompatibleImage(w, h, Transparency.OPAQUE);
            Graphics2D g = bimage.createGraphics();
            g.drawImage(image, 0, 0, null);
            g.dispose();
            return bimage;
            }
         
            public void connect()
            {
                try
                {
                    URL u = new URL(useMJPGStream?mjpgURL:jpgURL);
                    huc = (HttpURLConnection) u.openConnection();
                    //System.out.println("huc="+huc);
                    System.out.println(huc.getInputStream());
                    InputStream is = huc.getInputStream();
                    //System.out.println("is="+is);
                    connected = true;
                    BufferedInputStream bis = new BufferedInputStream(is);
                    //System.out.println("bis="+bis);
                    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(4,dis); //discard the first 3 lines
            readJPG();
            readLine(1,dis); //discard the last two lines
            }
         
            public void readJPG(){ //read the embedded jpeg image
            try{
            JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(dis);
            image = decoder.decodeAsBufferedImage();
         
            String s="a"+counter+".jpg";
            counter++;
            String filename="c:\\find_stillset\\"+s;
            System.out.println(filename);
         
            BufferedImage smaller = toBufferedImage(getScaledInstanceAWT(image, 1.0/3.0));//scalling image size
         
            try {
            OutputStream out = new FileOutputStream(filename);
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
            encoder.encode(smaller);
            out.close();
            } catch (Exception e) {
            System.out.println(e);
            }
         
            }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() {
                System.out.println("in Run...................");
                connect();
                readStream();
            }
         
            public static void main(String[] args) {
         
                //System.setProperty("http.proxyHost","proxy.tp.edu.sg");
            
    //    System.setProperty("http.proxyPort","80");
            JFrame jframe = new JFrame();
            jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            AxisCamera1 axPanel = new AxisCamera1(jframe);
            new Thread(axPanel).start();
            jframe.getContentPane().add(axPanel);
            jframe.pack();
            jframe.show();
            }
         
        }
    Swathi Nagaraj

    re: Video capture using JMF

    To display the image into panel i am using this code.
    Graphics g = e.Graphics;
    g.DrawImage(BufferImage, 0, 0);
    g.Dispose();

    please help me why g.DrawImage is used and about all those parameters.

    ——————————————————————————————————
    傲轩游戏网
  • 相关阅读:
    Owin
    C#不区分大小写的字符串替换(Replace)函数
    如何创建测试程序调试nginx数据结构
    一张脑图说清 Nginx 的主流程
    gdb常用命令记录
    nginx的configure流程
    c 编译器大全
    PHP 的 uniqid 函数产生的 id 真的是唯一的么?
    UUID那些事
    PHP 编码规范
  • 原文地址:https://www.cnblogs.com/cuizhf/p/2318649.html
Copyright © 2011-2022 走看看