zoukankan      html  css  js  c++  java
  • android接收mjpg-streamer软件视频流

    [代码]主要实现代码

    package cn.dong.mjpeg;
     
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
     
    import android.app.Activity;
    import android.content.pm.ActivityInfo;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.RectF;
    import android.os.Bundle;
    import android.view.SurfaceHolder;
    import android.view.Window;
    import android.view.SurfaceHolder.Callback;
    import android.view.SurfaceView;
     
    public class surface extends Activity implements Runnable{
        private SurfaceHolder holder;    
        private Thread mythread;    
        private Canvas canvas;
        URL videoUrl;
        private String url;
        private int w;
        private int h;
        HttpURLConnection conn;
        Bitmap bmp;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.surface);
             
            url = getIntent().getExtras().getString("CameraIp");
             
            w = getWindowManager().getDefaultDisplay().getWidth();
            h = getWindowManager().getDefaultDisplay().getHeight();
             
            SurfaceView surface = (SurfaceView)findViewById(R.id.surface);
             
            surface.setKeepScreenOn(true);// 保持屏幕常亮 
            mythread = new Thread(this);     
            holder = surface.getHolder();
            holder.addCallback(new Callback() {
                 
                @Override
                public void surfaceDestroyed(SurfaceHolder holder) {
                    // TODO Auto-generated method stub
                     
                }
                 
                @Override
                public void surfaceCreated(SurfaceHolder holder) {
                    // TODO Auto-generated method stub
                    mythread.start();
                }
                 
                @Override
                public void surfaceChanged(SurfaceHolder holder, int format, int width,
                        int height) {
                    // TODO Auto-generated method stub
                     
                }
            });
     
        }
    private void draw() {
            // TODO Auto-generated method stub
            try {    
                InputStream inputstream = null;
                //创建一个URL对象
    //          url = "http://192.168.8.1:8083/?action=snapshot";
                videoUrl=new URL(url);    
                //利用HttpURLConnection对象从网络中获取网页数据
                conn = (HttpURLConnection)videoUrl.openConnection();
                //设置输入流
                conn.setDoInput(true);
                //连接
                conn.connect();
                //得到网络返回的输入流
                inputstream = conn.getInputStream();
                //创建出一个bitmap
                bmp = BitmapFactory.decodeStream(inputstream); 
                canvas = holder.lockCanvas(); 
                canvas.drawColor(Color.WHITE);
                RectF rectf = new RectF(0, 0, w, h);
                canvas.drawBitmap(bmp, null, rectf, null);
                holder.unlockCanvasAndPost(canvas);
                //关闭HttpURLConnection连接
                conn.disconnect();
            } catch (Exception ex) {    
            } finally {      
            } 
        }
         
        @Override
        public void run() {
            // TODO Auto-generated method stub
            while(true){
                draw();
            }
        }
         
    }
    
  • 相关阅读:
    利用dockerfile定制镜像
    发布Docker 镜像到dockerhub
    Docker 停止容器
    133. Clone Graph
    132. Palindrome Partitioning II
    131. Palindrome Partitioning
    130. Surrounded Regions
    129. Sum Root to Leaf Numbers
    128. Longest Consecutive Sequence
    127. Word Ladder
  • 原文地址:https://www.cnblogs.com/sirius-swu/p/6815840.html
Copyright © 2011-2022 走看看