当前位置: 首页 > 知识库问答 >
问题:

来自Google drive的Android流视频

关志勇
2023-03-14

我正在构建一个Android应用程序,需要从Google drive流式传输视频。视频链接是这样的:https://docs.Google.com/file/d/--id--

我不能得到rtsp,所以它不能运行视频在videoview和它没有结束与mp4或3GP...所以我不能这样运行:

Intent Intent=新的意图(Intent.action_view);Intent.SetDataAndType(uri.parse(“https://docs.google.com/file/d/--id-”),“video/mp4”);view.getContext().StartActivity(intent);

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

WebView.GetSettings().SetJavaScriptEnabled(true);WebView.getSettings().SetPluginState(WebSettings.pluginState.on);webview.loadURL(“https://docs.google.com/file/d/--id--”);

webview.setWebChromeClient(新建WebChromeClient());

但视频不能全屏播放,也不能暂停、滞后……

那我该怎么办呢?有没有从Google drive流式播放视频

共有1个答案

谢昂雄
2023-03-14

因为我也在尝试这一点,我可以自己找到一个解决办法

1:确保视频url为https://drive.google.com/file/d/video-id/preview“

2:我从上述url下载网页内容,获得直接视频url:

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();
            }
        }
    }

//从流输出获取直接视频url

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;
    }

在我使用了这三个函数之后,我现在可以获得一个直接的视频url,该url通过readtit(inputstreamstream)作为字符串返回,我可以使用它来解析VideoView。

 类似资料:
  • 很多人都以这样或那样的形式问过这个问题,但似乎没有人有答案,而且没有一个建议的答案对我有效,所以我再问一次。 问题是,在Android5.1中,某些视频网址将无法播放。日志中唯一的错误是 现在有些人会告诉你,你想播放的视频只是设备上没有支持编解码器。不可能...首先,我仍然可以在使用Android5.0.2的同一设备上播放相同的视频,但不能在5.1.1上播放。其次,如果我把视频url加载到5.1.

  • 我能以某种方式截获来自应用程序的绝对所有流量吗?我应该做什么来做到这一点?提前谢谢你)

  • 我正试图从我的开发机器上运行的Android emulator(Android Studio的qemu)捕获https请求。我启动了带有命令行选项的模拟器-http proxy localhost:8888,以指向机器上运行的Fiddler,我已经将Fiddler根证书复制到虚拟SD卡并安装了它。http通信被完美捕获,但所有https请求都会失败,并在Fiddler中显示为: 请求: 答复: 我

  • 我正在寻找一种方法来直播视频从智能手机摄像头在浏览器,如Chrome或Edge。它应该能够传输协议,如RTMP,分段MP4,或RTP/MPEG-2传输流。 (基本上,我喜欢在Azure Media Service Portal上接收livestream数据) 我找到了类似的解决方案,但它们需要下载一个应用程序。 web解决方案需要开源或基于Microsoft产品/服务。 有没有人知道合适的方法?

  • 是否可以使用RTSP看到IP摄像机的直播流? 示例URL:rtsp:/public ip:554/1363e66e.mp4 在Ovi商店上没有视频播放器可以播放流,但我可以在桌面上的VLC上播放流。