gpt4 book ai didi

来自 Google Drive 的 Android Stream 视频

转载 作者:搜寻专家 更新时间:2023-11-01 08:44:42 25 4
gpt4 key购买 nike

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

我无法获得 rtsp,因此它无法在视频 View 中运行视频,并且它不会以 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(intent);

我能够使用此代码在 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: 确保视频 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;
}

现在我使用这三个函数后,我可以获得一个由 readtIt(InputStream stream) 返回的直接视频 url 作为一个字符串,我可以用它来解析到 VideoView。

关于来自 Google Drive 的 Android Stream 视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29596614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com