admin管理员组文章数量:1659741
http://blog.csdn/conowen/article/details/24027401
/********************************************************************************************
* author:conowen@大钟
* E-mail:conowen@hotmail
* http://blog.csdn/conowen
* 注:本文为原创,仅作为学习交流使用,转载请标明作者及出处。
********************************************************************************************/
最近在做视频采集相关的软件,需要获得在线视频播放的真正地址。由于每家视频的对外api不一样,而且每家视频的获取方式都不一样,给获取主流视频网站的真正地址带来了一定的麻烦。
随着移动互联网的发展,HTML5技术的迅速普及,现在主流在线视频播放网站都支持Html5点播技术。而且这些视频网站必须遵循HTML5的规范,这就统一了,不会写一种方式,然后用在其他的视频网站又不能工作。
支持HTML5视频的页面都会有一个video标签的。
video标签的规范如下
属性
属性 | 值 | 描述 |
---|---|---|
autoplay | autoplay | 如果出现该属性,则视频在就绪后马上播放。 |
controls | controls | 如果出现该属性,则向用户显示控件,比如播放按钮。 |
height | pixels | 设置视频播放器的高度。 |
loop | loop | 如果出现该属性,则当媒介文件完成播放后再次开始播放。 |
muted | muted | 规定视频的音频输出应该被静音。 |
poster | URL | 规定视频下载时显示的图像,或者在用户点击播放按钮前显示的图像。 |
preload | preload | 如果出现该属性,则视频在页面加载时进行加载,并预备播放。 如果使用 "autoplay",则忽略该属性。 |
src | url | 要播放的视频的 URL。 |
width | pixels | 设置视频播放器的宽度。 |
@来自互联网
实现思路:
通过Android的webview载入页面,
页面载入完毕后,执行JavaScript代码,通过javascript代码调用Android本地代码即可。
Android本地Java执行javascript代码可以直接通过webview的loadurl方法执行。
[javascript] view plain copy print ?
- view.loadUrl("javascript:window.js_method.showSource(document.getElementsByTagName('video')[0].src);"); // iqiyi
javascript调用Android本地java代码主要通过WebView.addJavascriptInterface();方法
- mWebView.addJavascriptInterface(new InJavaScriptLocalObj(), "js_method");//添加java script接口
具体实现过程如下
[javascript] view plain copy print ?
- private void getPlayUriFromHtml5() {
- // mWebView.getSettings()
- // .setUserAgentString(
- // "Android Mozilla/5.0 AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30");
- // http://code.google/p/mofmof-js/wiki/UserAgentStrings
- Log.i(TAG, "getPlayUriFromHtml5");
- WebView mWebView;
- mWebView = new WebView(this);
- initSettings(mWebView);
- mWebView.getSettings()
- .setUserAgentString(
- "Mozilla/5.0 (iPhone; CPU iPhone OS 7_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D5145e Safari/9537.53");
- mWebView.addJavascriptInterface(new InJavaScriptLocalObj(), "js_method");//添加java script接口
- mWebView.loadUrl(playUriTemp);
- }
- @SuppressLint("SetJavaScriptEnabled")
- private void initSettings(WebView mWebView) {
- WebSettings webSettings = mWebView.getSettings();
- //开启java script的支持
- webSettings.setJavaScriptEnabled(true);
- // 启用localStorage 和 essionStorage
- webSettings.setDomStorageEnabled(true);
- // 开启应用程序缓存
- webSettings.setAppCacheEnabled(true);
- String appCacheDir = this.getApplicationContext()
- .getDir("cache", Context.MODE_PRIVATE).getPath();
- webSettings.setAppCachePath(appCacheDir);
- webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);
- webSettings.setAppCacheMaxSize(1024 * 1024 * 10);// 设置缓冲大小,我设的是10M
- webSettings.setAllowFileAccess(true);
- mWebView.setWebViewClient(mWebViewClient);
- }
- private WebViewClient mWebViewClient = new WebViewClient() {
- @Override
- public void onPageFinished(WebView view, String url) {
- view.loadUrl("javascript:window.js_method.showSource(document.getElementsByTagName('video')[0].src);"); // iqiyi
- // view.loadUrl("javascript:window.js_method.showSource('<head>'+" +
- // "document.getElementsByTagName('html')[0].innerHTML+'</head>');");
- super.onPageFinished(view, url);
- }
- };
- class InJavaScriptLocalObj {
- public void showSource(String html5url) {
- if (html5url != null && !GETHTML5_COMPLETE) {
- GETHTML5_COMPLETE = true;
- realPlayUrl = html5url;
- mEventHandler.sendEmptyMessage(GET_REALPLAYURL_COMPLETE);
- }
- Log.i("conowen", "html5url=" + html5url);
- }
- }
网页加载完毕之后,就可以直接输出HTML5的真正播放地址了。
[java] view plain copy print ?
- 04-18 17:09:39.855: I/conowen(5545): http://pl.youku/playlist/m3u8?vid=174867986&type=mp4&ts=1397812170&keyframe=0&ep=ciGdHUGMVM8G7CLbij8bNiWzdiEHXP8N8heDhttqBtQnTey8&sid=039781216914212a9a2f8&token=3543&ctype=12&ev=1&oip=1876824509
需要注意一点的就是。浏览器的UserAgent一定要设置为移动端的浏览器ua,如iphone的,这样才可以伪装,让页面显示出HTML5的video标签。
[javascript] view plain copy print ?
- mWebView.getSettings()
- .setUserAgentString(
- "Mozilla/5.0 (iPhone; CPU iPhone OS 7_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D5145e Safari/9537.53");
版权声明:本文标题:获取优酷(youku),土豆(tudou),乐视(letv),爱奇艺(iqiyi)等HTML5页面上的视频真正地址 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1729834834a1214327.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论