在 videoView/webView 中显示来自网络的 .bin 视频

问题描述 投票:0回答:1

我有一个摄像头,可以将 .bin 视频流式传输到网站,我想在我的 Android 应用程序中显示该视频。

由于某种原因,它甚至在 WebView 中也没有显示,我该怎么解决这个问题?我尝试使用毕加索库,但没有成功。我也尝试过类似的方法,但也不起作用:

protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
   
        VideoView videoView = findViewById(R.id.videoView); 
        Uri uri = Uri.parse(videoUrl);
        videoView.setVideoURI(uri); 
        MediaController mediaController = new MediaController(this); 
        mediaController.setAnchorView(videoView); 
        mediaController.setMediaPlayer(videoView); 
        videoView.setMediaController(mediaController); 
        videoView.start(); 
java android binary mp4
1个回答
0
投票

我想通了,对于任何对此感兴趣的人来说,代码是:

Thread thread = new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                URL url = new URL(getIP.url);
                try {
                    //http parametre
                    connection = (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("GET");
                    connection.setConnectTimeout(1000 * 5);
                    connection.setReadTimeout(1000 * 5);
                    connection.setDoInput(true);
                    connection.connect();

                        InputStream in = connection.getInputStream();
                        InputStreamReader isr = new InputStreamReader(in);
                        BufferedReader br = new BufferedReader(isr);

                        String data;
                        int len;
                        byte[] buffer;

                        while ((data = br.readLine()) != null) {
                            if (data.contains("Content-Type:")) {
                                data = br.readLine();
                                len = Integer.parseInt(data.split(":")[1].trim());
                                bis = new BufferedInputStream(in);
                                buffer = new byte[len];

                                int t = 0;
                                while (t < len) {
                                    t += bis.read(buffer, t, len - t);
                                }

                                Bytes2ImageFile(buffer, getExternalFilesDir(Environment.DIRECTORY_PICTURES) + "/0A.jpg");
                                final Bitmap bitmap = BitmapFactory.decodeFile(getExternalFilesDir(Environment.DIRECTORY_PICTURES) + "/0A.jpg");
                                runOnUiThread(new Runnable() {
                                    @Override
                                    public void run() {
                                        //connectButton.setText("OFF");
                                        imageView.setImageBitmap(bitmap);
                                    }
                                });
                            }
                    }

                } catch (IOException e) {
                    e.printStackTrace();
                }
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (bis != null) {
                        bis.close();}

                    if (fos != null) {
                        fos.close();}

                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    });
    thread.start();
© www.soinside.com 2019 - 2024. All rights reserved.