【发布时间】:2016-08-01 09:10:48
【问题描述】:
我需要播放来自http://www.cda.pl 的视频,它会从 web 服务响应中提供 Url,例如 http://www.cda.pl/video/videoId,但我的问题是如何从此链接中查找视频 Url? Cda 是第三方服务器,如 youTube,但不提供任何 API 或库,所以请帮助我。
【问题讨论】:
我需要播放来自http://www.cda.pl 的视频,它会从 web 服务响应中提供 Url,例如 http://www.cda.pl/video/videoId,但我的问题是如何从此链接中查找视频 Url? Cda 是第三方服务器,如 youTube,但不提供任何 API 或库,所以请帮助我。
【问题讨论】:
经过多天的 RND 我找到了解决方案,CDA.PL 是第三方服务器,它不提供任何 api,而且它的视频网址在一天左右到期,所以我们不能直接使用视频网址,但每次都来自 @987654321 @ 按以下方式使用 Webview 并在 Player 中播放视频 URL。
public void getVideoPath(String path) {
if (progressDialog == null) {
// in standard case YourActivity.this
progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setMessage("Loading...");
progressDialog.show();
}
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.setScrollbarFadingEnabled(false);
webView.getSettings().setBuiltInZoomControls(true);
webView.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT");
webView.setWebViewClient(new WebViewClient() {
//If you will not use this method url links are opeen in new brower not in webview
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
//Show loader on url load
public void onLoadResource(WebView view, String url) {
}
public void onPageFinished(WebView view, String url) {
try {
webView.loadUrl("javascript:window.HTMLOUT.processHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
} catch (Exception exception) {
exception.printStackTrace();
}
}
});
webView.loadUrl(path);
}
class MyJavaScriptInterface {
@JavascriptInterface
@SuppressWarnings("unused")
public void processHTML(String html) {
int start = html.indexOf("class=\"player-video\" src=\"");
int end = html.indexOf("\" preload=\"metadata\"");
String finalUrl = html.substring((start + 26), (end));
playUrl(finalUrl);
}
}
try it.
【讨论】: