首页 文章

来自Google Cloud 端硬盘的Android Stream视频

提问于
浏览
2

我正在构建一个需要从Google Cloud 端硬盘播放视频的Android应用,视频链接就像这样:https:// docs.google.com/file/d/--ID--

我无法获得rtsp因此无法在视频视图中运行视频,并且它不会以mp4或3gp结束...所以我不能像那样运行它:

Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.parse(“https:// docs.google.com/file/d/--ID--”),“video / mp4”); . view.getContext()startActivity(意向);

我能够使用以下代码在webView中运行视频:

webview.getSettings() . setJavaScriptEnabled(true); . webview.getSettings()setPluginState(WebSettings.PluginState.ON); webview.loadUrl(“https:// docs.google.com/file/d/--ID--”); webview.setWebChromeClient(new WebChromeClient());

但视频无法全屏播放,无法暂停,而且滞后...

所以我该怎么做 ?无论如何从Google驱动器流式传输视频

1 回答

  • 3

    正如我正在尝试这一点,我可以自己找到解决方案

    1:确保视频网址为https://drive.google.com/file/d/VIDEO-ID/preview

    2:我从上面的网址下载网页内容并获得直接视频网址:

    public String downloadUrl(String myurl) throws IOException {
            InputStream is = null;
            try {
                URL url = new URL(myurl);
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                conn.setReadTimeout(10000);
                conn.setConnectTimeout(15000);
                conn.setRequestMethod("GET");
                conn.setDoInput(true);
                conn.connect();
                is = conn.getInputStream();
                String contentAsString = readIt(is);
                return contentAsString;
            } finally {
                if (is != null) {
                    is.close();
                }
            }
        }
    

    //从流输出中获取直接视频网址

    public String readIt(InputStream stream) throws IOException {
            BufferedReader reader = new BufferedReader(new InputStreamReader(stream, "UTF-8"));
            StringBuilder sb = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null) {
                if (line.contains("fmt_stream_map")) {
                    sb.append(line + "\n");
                    break;
                }
            }
            reader.close();
            String result = decode(sb.toString());
            String[] url = result.split("\\|");
            return url[1]; 
        }
    

    //我们需要一个函数将url解码为正常使用

    public String decode(String in) {
            String working = in;
            int index;
            index = working.indexOf("\\u");
            while (index > -1) {
                int length = working.length();
                if (index > (length - 6)) break;
                int numStart = index + 2;
                int numFinish = numStart + 4;
                String substring = working.substring(numStart, numFinish);
                int number = Integer.parseInt(substring, 16);
                String stringStart = working.substring(0, index);
                String stringEnd = working.substring(numFinish);
                working = stringStart + ((char) number) + stringEnd;
                index = working.indexOf("\\u");
            }
            return working;
        }
    

    我现在使用三个功能后,我可以得到一个直接的视频网址,由 readtIt(InputStream stream) 作为字符串返回,我可以用它来解析VideoView .

相关问题