获取优酷(youku),土豆(tudou),乐视(letv),爱奇艺(iqiyi)等HTML5页面上的视频真正地址
http://blog.csdn.net/conowen/article/details/24027401
/********************************************************************************************
* author:conowen@大钟
* E-mail:conowen@hotmail.com
* http://blog.csdn.net/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方法执行。
- 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接口
具体实现过程如下
- 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.com/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的真正播放地址了。
- 04-18 17:09:39.855: I/conowen(5545): http://pl.youku.com/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标签。
- 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页面上的视频真正地址相关推荐
- 通过JAVA获取优酷、土豆、酷6、6间房等视频
为什么80%的码农都做不了架构师?>>> 通过JAVA获取优酷.土豆.酷6.6间房.56视频,现在很多社会网站都有这个功能,用户输入优酷.土豆.酷6.6间房.56视频地址后,能 ...
- JAVA获取优酷、土豆、酷6等视频实例
通过JAVA获取优酷.土豆.酷6.6间房.56视频,现在很多社会网站都有这个功能,用户输入优酷.土豆.酷6.6间房.56视频地址后,能找到对应的视频及视频的缩略图,有些社区网站还能获取到视频的时长. ...
- JAVA获取优酷、土豆、酷6、6间房等视频
通过JAVA获取优酷.土豆.酷6.6间房.56视频,现在很多社会网站都有这个功能,用户输入优酷.土豆.酷6.6间房.56视频地址后,能找到对应的视频及视频的缩略图,有些社区网站还能获取到视频的时长. ...
- 获取优酷、土豆、酷6、6间房等视频
通过JAVA获取优酷.土豆.酷6.6间房.56视频,现在很多社会网站都有这个功能,用户输入优酷.土豆.酷6.6间房.56视频地址后,能找到对应的视频及视频的缩略图,有些社区网站还能获取到视频的时长. ...
- 【转】通过JAVA获取优酷、土豆、酷6、6间房等视频
通过JAVA获取优酷.土豆.酷6.6间房.56视频,现在很多社会网站都有这个功能,用户输入优酷.土豆.酷6.6间房.56视频地址后,能找到对应的视频及视频的缩略图,有些社区网站还能获取到视频的时长. ...
- 分享:通过JAVA获取优酷、土豆、酷6、6间房等视频
分享:通过JAVA获取优酷.土豆.酷6.6间房等视频 2011年12月27日 通过JAVA获取优酷.土豆.酷6.6间房.56视频,现在很多社会网站都有这个功能,用户输入优酷.土豆.酷6.6间房.56视 ...
- 优酷 youku 土豆 等视频网 视频下载
1. 在地址栏复制你要下载的视频的网址,如http://v.youku.com/v_show/id_XMTU3NTMyMzQ0.html 2. 打开一个空白网页,在地址栏输入网址: www.kisst ...
- 爱奇艺、优酷、腾讯视频竞品分析报告2016(二)
接上一篇<爱奇艺.优酷.腾讯视频竞品分析报告2016(一)> http://milkyqueen520.blog.51cto.com/11233158/1760192 2.4 产品设计与交 ...
- 互联网晚报 | 06月16日 星期四 | 优酷会员涨价;微信朋友圈广告可直达天猫店;爱奇艺否认百度出售其股份...
优酷会员价格追平腾讯爱奇艺,单月价格将调整至30元 6月15日,优酷宣布调整会员价格.6月21日零时起,月卡调整至30元.季卡78元.年卡258元,88VIP不受影响.调整后优酷会员价格追平腾讯爱奇艺 ...
最新文章
- 【CVPR Oral】TensorFlow实现StarGAN代码全部开源,1天训练完
- Linux 命令之 xargs -- 给其他命令传递参数的一个过滤器
- 锐浪报表数据源access_kylin+SuperSet实现实时大数据报表的快速开发
- 相干光通信系统的调制与解调
- Root cause be too many concurrent connections error could not open clinet transport with jdbc uri
- springboot1.5.4 log4j
- Java 求100以内的质数(素数)
- Windows下使用SSH命令登录Linux服务器
- 2021.12.10 vue vue-cil (12)
- 爬虫进阶:使用fiddler抓取手机app数据
- 苍狼敏捷软件开发团队建设指南-1-团队模型
- 用计算机唱歌 丑八怪乐谱,得力计算器乐谱丑八怪 | 手游网游页游攻略大全
- 【转载】详细设计说明书模板
- 服务器运维事项,云服务器的运维工作要注意的事项
- 游戏计算机的显示器,电竞显示器一般多大尺寸?玩游戏电脑显示器多大合适?...
- 【圣诞树代码】送她六棵圣诞树,祝她圣诞快乐~(送女朋友必备!)
- (转)当AI变成宣传武器:继续深扒大数据公司Cambrige Analytica
- mysql 数据库增量备份与恢复
- JAVA根据模板导出PPTX
- CenterNet环境配置No module named '_ext'问题
热门文章
- bitwarden自建服务器,自建bitwarden密码管理真香
- 投资开零食店谨防零食多这个骗子
- 个人建站过程全记录【概述】
- iOS Quartz2D实战系列-手把手教你手势解锁
- oppor15android版本8.1,OPPO R15体验:基于安卓8.1,ColorOS 5.0更好用
- 失败至少不会在一棵树上吊死
- 从广交会,看懂海尔智家逆势增长的秘密
- k折交叉验证 k-fold cross-validation
- 如何写一个健壮且高效的串口接收程序?
- iOS - 加解密(对称,非对称)(AES DES base64这里都有),数字签名,cookie