CN105100958B - 一种基于Android系统的视频流量引导的方法和装置 - Google Patents
一种基于Android系统的视频流量引导的方法和装置 Download PDFInfo
- Publication number
- CN105100958B CN105100958B CN201510447234.5A CN201510447234A CN105100958B CN 105100958 B CN105100958 B CN 105100958B CN 201510447234 A CN201510447234 A CN 201510447234A CN 105100958 B CN105100958 B CN 105100958B
- Authority
- CN
- China
- Prior art keywords
- url
- function
- initialization function
- player
- original
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/85—Assembly of content; Generation of multimedia applications
- H04N21/858—Linking data to content, e.g. by linking an URL to a video object, by creating a hotspot
- H04N21/8586—Linking data to content, e.g. by linking an URL to a video object, by creating a hotspot by using a URL
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/81—Monomedia components thereof
- H04N21/8166—Monomedia components thereof involving executable data, e.g. software
- H04N21/818—OS software
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种基于Android系统的视频流量引导的方法和装置。所述方法包括:劫持原始的播放器初始化函数;构造新的播放器初始化函数;该新的播放器初始化函数对原始的播放器初始化函数所传入的URL进行替换,其中该替换后的URL主机名与目标代理服务器的URL主机名一致;该新的播放器初始化函数用该替换后的URL调用该原始的播放器初始化函数。
Description
技术领域
本发明涉及在Android系统的应用(APP)中进行流量引导的技术,尤其是对WebView控件中视频流量进行引导的方法。
背景技术
现有技术中,在Android系统中对某个特定应用(APP)中WebView的HTTP流量进行引导时,通常采用JAVA的反射机制调用Android系统非公开的系统API(即应用程序编程接口)来实现流量引导。当APP通过HTTP相关API发起HTTP请求时,系统会先调用检查代理信息,将请求重新包装成HTTP代理请求发往指定的代理服务器。但现有的这种HTTP代理的引导方式存在弊端。
具体而言,现有的这种HTTP代理的引导方式对于WebView控件而言,无法覆盖到该控件产生的所有流量,尤其是视频流量。WebView控件产生的一般请求如请求html页面、图片、js或css文件,这种流量是可以被构造代理函数的方法将流量引导到代理服务器的,但是,对于在WebView控件中播放在线视频所产生的流量,则无法使用设置代理的方法进行引导。
因此,亟需一种能够将WebView控件内播放的视频流量引导至代理服务器的方法。
发明内容
为了解决现有技术中Android系统中WebView控件中视频流量无法引导的问题,本发明提供了一种能够将WebView控件内播放的视频流量引导至代理服务器的方法。
本发明提供了一种基于Android系统的视频流量引导的方法,所述方法包括:
劫持原始的播放器初始化函数;
构造新的播放器初始化函数;
该新的播放器初始化函数对原始的播放器初始化函数所传入的URL进行替换,其中该替换后的URL主机名与目标代理服务器的URL主机名一致;
该新的播放器初始化函数用该替换后的URL调用该原始的播放器初始化函数。
在一个实施例中,该播放器初始化函数为android系统播放器函数。
在一个实施例中,所述方法还包括将所述原始的播放器初始化函数所传入的URL由Java类型转换为原生代码类型。
在一个实施例中,将所述原始的播放器初始化函数所传入的URL由Java类型转换为原生代码类型还包括:构造辅助函数,该辅助函数属于原生代码,且该辅助函数用于对所述原始播放器初始化函数所传入的URL进行重新构造并调用所述新播放器初始化函数。
在一个实施例中,所述新播放器初始化函数对原始播放器初始化函数所传入的URL进行替换的步骤包括:检查该传入的URL的主机名是否是该目标代理服务器的地址,如果已经是代理服务器的地址,则不进行URL替换;如果不是该目标代理服务器的地址,则将该传入的URL替换为该目标代理服务器的URL。
在一个实施例中,所述新的播放器初始化函数对所述原始播放器初始化函数所传入的URL进行替换的步骤包括:检查该传入的URL是否为http或https协议,如果不是http或https协议,则不进行URL替换。
本发明还提供了一种基于Android系统的视频流量引导的装置,所述装置包括:
构造模块,所述构造模块被配置成劫持原始的播放器初始化函数,并构造新的播放器初始化函数;以及
引导模块,所述引导模块被配置成利用该新的播放器初始化函数对原始的播放器初始化函数所传入的URL进行替换,并利用该替换后的URL调用该原始的播放器初始化函数,其中该替换后的URL主机名与目标代理服务器的URL主机名一致。
在一个实施例中,该播放器初始化函数为android系统播放器函数。
在一个实施例中,所述装置还包括:转换模块,所述转换模块被配置成将所述原始的播放器初始化函数所传入的URL由Java类型转换为原生代码类型。
在一个实施例中,所述转换模块还包括:辅助函数构造模块,所述辅助函数构造模块该辅助函数属于原生代码,且该辅助函数用于对所述原始播放器初始化函数所传入的URL进行重新构造并调用所述新的播放器初始化函数。
在一个实施例中,所述替换模块包括判断模块,所述判断模块用于执行以下步骤:
检查该传入的URL的主机名是否是该目标代理服务器的地址,如果已经是代理服务器的地址,则不进行URL替换;如果不是该目标代理服务器的地址,则将该传入的URL替换为该目标代理服务器的URL。
在一个实施例中,所述判断模块还用于执行以下步骤:
检查该传入的URL是否为http或https协议,如果不是http或https协议,则不进行URL替换。附图说明
本发明的以上发明内容以及下面的具体实施方式在结合附图阅读时会得到更好的理解。需要说明的是,附图仅作为所请求保护的发明的示例。在附图中,相同的附图标记代表相同或类似的元素。
图1为根据本申请的一个实施例的劫持URL设置模块的流程图;
图2示出根据本发明的一实施例的构造新的URL设置模块的流程图;以及
图3示出根据本发明的一实施例的视频内容流量引导的流程图。
具体实施方式
以下在具体实施方式中详细叙述本发明的详细特征以及优点,其内容足以使任何本领域技术人员了解本发明的技术内容并据以实施,且根据本说明书所揭露的说明书、权利要求及附图,本领域技术人员可轻易地理解本发明相关的目的及优点。
Android系统包括JAVA层和原生代码(例如C或C++语言)层。JNI(JAVA NativeInterface,JAVA本地接口)是JAVA标准平台中的一个重要功能,它提供了若干的API实现了和JAVA以及其他语言的通信(例如C&C++语言)。JNI弥补了JAVA的与平台无关这一重大优点的不足,在JAVA实现跨平台的同时,也能与其它语言(如C、C++语言)的动态库进行交互,给其它语言发挥优势的机会。因此,JAVA中调用C函数,主要是通过本地接口JNI来实现的。
本申请的实现视频流量引导至代理服务器的方法需要基于JNI来实现。本发明的总体思想如下。
首先,在JNI中劫持媒体播放器(例如,MediaPlayer)中设置URL的方法,即setDataSource函数。
其次,对setDataSource函数传入的URL参数进行替换,添加目标代理服务器的地址作为hostname(即URL主机名)。
接着,用替换过的URL作为参数,调用原本被替换的setDataSource函数。
由此,本发明可以在客户APP中的代码结构和业务逻辑无需做任何改变的情况下实现将视频流量引导到目标代理服务器上。
图1为根据本申请的一个实施例的劫持URL设置模块的流程图。
在步骤101中,在本地接口JNI中取得表示媒体播放器(MediaPlayer)类的实例(jclass对象)。
在步骤102中,获取URL设置模块(e.g.,setDataSource方法,又称为原始的播放器初始化函数)的对象(e.g.,Method对象)并保存该对象。在一个实施例中,可通过步骤101获取的jclass对象得到表示setDataSource方法的Method对象地址,并保存该Method对象。
在步骤103中,修改setDataSource方法的对象(e.g.,Method对象),将setDataSource方法由Java类型修改成原生代码类型(e.g.,native类型)。
在步骤104中,构造基于原生代码的辅助模块。在一个实施例中,该辅助模块为nativeFunc方法。该新构造的nativeFunc方法赋给Method对象。该新构造的nativeFunc方法用于将JAVA层的参数重新构造以转换成原生代码的参数和异常检查,并调用图2中的新构造的setDataSource方法以进行URL篡改。
需要指出的是,在步骤103中,在改成Native类型后,Java虚拟机(例如,Dalvik)调用setDataSource方法时不会解释并执行原来的JAVA代码,转而执行Method对象中nativeFunc指定的代码位置执行。
图2示出根据本发明的一实施例的构造新的URL设置模块的流程图。该新构造的URL设置模块即新的setDataSource方法(又称为新的播放器初始化函数)。该新的setDataSource方法基于原生代码。
在步骤201中,检查参数,取得传入的URL参数。
在步骤202中,在JNI中构造新的setDataSource方法,setDataSource方法执行步骤203-206。
在步骤203中,检查传入的URL是否为http或https协议,不是则用原URL参数执行步骤206。
在步骤204中,检查URL的hostname(主机名)是否是代理服务器地址,如果已经是代理服务器的地址,则用原参数执行步骤206;如果不是代理服务器地址,则执行步骤205。
在步骤205中,修改URL,增加代理服务器地址作为新URL的Hostname,原来的hostname和path作为新URL的path,使用新修改的URL作为参数执行步骤206。
在步骤206中,使用步骤102中保存的Method对象,交给Java虚拟机(例如Dalvik)解析执行。
图3示出根据本发明的一实施例的视频内容流量引导的流程图。
在步骤301中,劫持原始的播放器初始化函数,其中该播放器初始化函数为android系统播放器函数(即原始的setDataSource方法)。
在步骤302中,构造新的播放器初始化函数(即新构造的setDataSource方法)。
在步骤303中,该新的播放器初始化函数对原始的播放器初始化函数所传入的URL进行替换,其中该替换后的URL主机名与目标代理服务器的URL主机名一致。
在步骤304中,该新的播放器初始化函数用该替换后的URL调用该原始的播放器初始化函数。
在步骤302和303中,还包括以下步骤:将所述原始的播放器初始化函数所传入的URL由Java类型转换为原生代码类型。
在一个实施例中,将所述原始的播放器初始化函数所传入的URL由Java类型转换为原生代码类型还包括:构造辅助函数,该辅助函数属于原生代码,且该辅助函数用于对所述原始播放器初始化函数所传入的URL进行重新构造并调用所述新播放器初始化函数。
在一个实施例中,步骤303还包括以下步骤:检查该传入的URL的主机名是否是该目标代理服务器的地址,如果已经是代理服务器的地址,则不进行URL替换;如果不是该目标代理服务器的地址,则将该传入的URL替换为该目标代理服务器的URL。
在一个实施例中,步骤303还包括以下步骤:检查该传入的URL是否为http或https协议,如果不是http或https协议,则不进行URL替换。
本发明还提供了一种基于Android系统的视频流量引导的装置,所述装置包括构造模块和引导模块。
所述构造模块被配置成劫持原始的播放器初始化函数并构造新的播放器初始化函数。
所述引导模块被配置成利用该新的播放器初始化函数对原始的播放器初始化函数所传入的URL进行替换,其中该替换后的URL主机名与目标代理服务器的URL主机名一致。所述引导模块还被配置成利用该替换后的URL调用该原始的播放器初始化函数。
在一个实施例中,该播放器初始化函数为android系统播放器函数。
在一个实施例中,所述装置还包括:转换模块,所述转换模块被配置成将所述原始的播放器初始化函数所传入的URL由Java类型转换为原生代码类型。
在一个实施例中,所述转换模块还包括:辅助函数构造模块,所述辅助函数构造模块该辅助函数属于原生代码,且该辅助函数用于对所述原始播放器初始化函数所传入的URL进行重新构造并调用所述新的播放器初始化函数。
在一个实施例中,所述替换模块包括判断模块,所述判断模块用于执行以下步骤:
检查该传入的URL的主机名是否是该目标代理服务器的地址,如果已经是代理服务器的地址,则不进行URL替换;如果不是该目标代理服务器的地址,则将该传入的URL替换为该目标代理服务器的URL。
在一个实施例中,所述判断模块还用于执行以下步骤:检查该传入的URL是否为http或https协议,如果不是http或https协议,则不进行URL替换。
这里采用的术语和表述方式只是用于描述,本发明并不应局限于这些术语和表述,使用这些术语和表述并不意味着排除任何示意和描述(或其中部分)的等效特征,应认识到可能存在的各种修改也应包含在权利要求范围内。其他修改、变化和替换也可能存在。相应的,权利要求应视为覆盖所有这些等效物。
同样,需要指出的是,虽然本发明已参照当前的具体实施例来描述,但是本技术领域中的普通技术人员应当认识到,以上的实施例仅是用来说明本发明,在没有脱离本发明精神的情况下还可做出各种等效的变化或替换,因此,只要在本发明的实质精神范围内对上述实施例的变化、变型都将落在本申请的权利要求书的范围内。
Claims (10)
1.一种基于Android系统的WebView控件的视频流量引导的方法,其特征在于,所述方法包括:
劫持原始的播放器初始化函数;
构造新的播放器初始化函数;
该新的播放器初始化函数对原始的播放器初始化函数所传入的URL进行替换,其中该替换后的URL主机名与目标代理服务器的URL主机名一致;
该新的播放器初始化函数用该替换后的URL调用该原始的播放器初始化函数;
其中,所述方法还包括将所述原始的播放器初始化函数所传入的URL由Java类型转换为原生代码类型。
2.如权利要求1所述的方法,其特征在于,该播放器初始化函数为android系统播放器函数。
3.如权利要求1所述的方法,其特征在于,将所述原始的播放器初始化函数所传入的URL由Java类型转换为原生代码类型还包括:
构造辅助函数,该辅助函数属于原生代码,且该辅助函数用于对所述原始播放器初始化函数所传入的URL进行重新构造并调用所述新播放器初始化函数。
4.如权利要求1所述的方法,其特征在于,所述新播放器初始化函数对原始播放器初始化函数所传入的URL进行替换的步骤包括:
检查该传入的URL的主机名是否是该目标代理服务器的地址,如果已经是代理服务器的地址,则不进行URL替换;如果不是该目标代理服务器的地址,则将该传入的URL替换为该目标代理服务器的URL。
5.如权利要求4所述的方法,其特征在于,所述新的播放器初始化函数对所述原始播放器初始化函数所传入的URL进行替换的步骤包括:
检查该传入的URL是否为http或https协议,如果不是http或https协议,则不进行URL替换。
6.一种基于Android系统的WebView控件的视频流量引导的装置,其特征在于,所述装置包括:
构造模块,所述构造模块被配置成劫持原始的播放器初始化函数,并构造新的播放器初始化函数;
引导模块,所述引导模块被配置成利用该新的播放器初始化函数对原始的播放器初始化函数所传入的URL进行替换,并利用该替换后的URL调用该原始的播放器初始化函数,其中该替换后的URL主机名与目标代理服务器的URL主机名一致;以及
转换模块,所述转换模块被配置成将所述原始的播放器初始化函数所传入的URL由Java类型转换为原生代码类型。
7.如权利要求6所述的装置,其特征在于,该播放器初始化函数为android系统播放器函数。
8.如权利要求6所述的装置,其特征在于,所述转换模块还包括:
辅助函数构造模块,所述辅助函数构造模块的辅助函数属于原生代码,且该辅助函数用于对所述原始播放器初始化函数所传入的URL进行重新构造并调用所述新的播放器初始化函数。
9.如权利要求6所述的装置,其特征在于,所述引导模块包括判断模块,所述判断模块用于执行以下步骤:
检查该传入的URL的主机名是否是该目标代理服务器的地址,如果已经是代理服务器的地址,则不进行URL替换;如果不是该目标代理服务器的地址,则将该传入的URL替换为该目标代理服务器的URL。
10.如权利要求9所述的装置,其特征在于,所述判断模块还用于执行以下步骤:
检查该传入的URL是否为http或https协议,如果不是http或https协议,则不进行URL替换。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510447234.5A CN105100958B (zh) | 2015-07-27 | 2015-07-27 | 一种基于Android系统的视频流量引导的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510447234.5A CN105100958B (zh) | 2015-07-27 | 2015-07-27 | 一种基于Android系统的视频流量引导的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105100958A CN105100958A (zh) | 2015-11-25 |
CN105100958B true CN105100958B (zh) | 2018-12-07 |
Family
ID=54580336
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510447234.5A Active CN105100958B (zh) | 2015-07-27 | 2015-07-27 | 一种基于Android系统的视频流量引导的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105100958B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108156210B (zh) * | 2016-12-06 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 目标资源的获取方法和装置 |
CN107343042B (zh) * | 2017-07-03 | 2020-06-23 | 网宿科技股份有限公司 | 浏览器流量劫持方法、装置及移动终端 |
CN107995325B (zh) * | 2017-12-08 | 2021-08-24 | 北京酷我科技有限公司 | 一种Android上降低域名解析失败的方法 |
CN114143577B (zh) * | 2021-11-26 | 2023-10-24 | 中电信数智科技有限公司 | 一种视频获取方法及系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1619853A1 (en) * | 2004-07-21 | 2006-01-25 | Siemens Mobile Communications S.p.A. | RTSP proxy extended to detect streaming session events and report to valued streaming applications the notified ones |
CN102292933A (zh) * | 2008-11-26 | 2011-12-21 | 意大利电信股份公司 | 在ip网络中的应用数据流管理 |
CN103327410A (zh) * | 2013-06-03 | 2013-09-25 | 贝壳网际(北京)安全技术有限公司 | 移动终端浏览器中视频的播放方法、系统和移动终端 |
CN103686198A (zh) * | 2013-12-30 | 2014-03-26 | 优视科技有限公司 | 视频数据的处理方法、装置和系统 |
CN103916405A (zh) * | 2014-04-25 | 2014-07-09 | 厦门享游网络科技有限公司 | 一种IOS上针对App的TCP/UDP流量引导的方法 |
CN103944906A (zh) * | 2014-04-25 | 2014-07-23 | 厦门享游网络科技有限公司 | 一种iOS上针对APP的HTTP流量引导的方法 |
CN104580192A (zh) * | 2014-12-31 | 2015-04-29 | 网宿科技股份有限公司 | 应用程序的网络访问请求的处理方法和装置 |
US9075962B1 (en) * | 2014-02-11 | 2015-07-07 | Ramp Holdings, Inc. | Secure video delivery |
-
2015
- 2015-07-27 CN CN201510447234.5A patent/CN105100958B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1619853A1 (en) * | 2004-07-21 | 2006-01-25 | Siemens Mobile Communications S.p.A. | RTSP proxy extended to detect streaming session events and report to valued streaming applications the notified ones |
CN102292933A (zh) * | 2008-11-26 | 2011-12-21 | 意大利电信股份公司 | 在ip网络中的应用数据流管理 |
CN103327410A (zh) * | 2013-06-03 | 2013-09-25 | 贝壳网际(北京)安全技术有限公司 | 移动终端浏览器中视频的播放方法、系统和移动终端 |
CN103686198A (zh) * | 2013-12-30 | 2014-03-26 | 优视科技有限公司 | 视频数据的处理方法、装置和系统 |
US9075962B1 (en) * | 2014-02-11 | 2015-07-07 | Ramp Holdings, Inc. | Secure video delivery |
CN103916405A (zh) * | 2014-04-25 | 2014-07-09 | 厦门享游网络科技有限公司 | 一种IOS上针对App的TCP/UDP流量引导的方法 |
CN103944906A (zh) * | 2014-04-25 | 2014-07-23 | 厦门享游网络科技有限公司 | 一种iOS上针对APP的HTTP流量引导的方法 |
CN104580192A (zh) * | 2014-12-31 | 2015-04-29 | 网宿科技股份有限公司 | 应用程序的网络访问请求的处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105100958A (zh) | 2015-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105100958B (zh) | 一种基于Android系统的视频流量引导的方法和装置 | |
CN106569794B (zh) | 应用程序开发装置 | |
CN107872823B (zh) | 识别移动边缘计算环境中通信操作模式的方法和系统 | |
KR20180038539A (ko) | 소프트웨어 개발 키트로 데이터 추적을 구현하는 방법 및 시스템 | |
US20190014004A1 (en) | Information processing system, device registration method, information processing device, communication terminal, and control method and control program therefor | |
US10681111B2 (en) | Method and system for providing internet application services | |
CN105491039B (zh) | 一种分布式软件共享系统 | |
CN105718313A (zh) | 应用操作方法和装置 | |
US20150379030A1 (en) | Platform integrating method and system for adapting third-party web page in application | |
CN106569790B (zh) | 卡片模板生成方法、服务提供方法、信息提供方法及装置 | |
WO2017063533A1 (zh) | 服务账号关联方法、装置、系统及终端设备 | |
US20140201619A1 (en) | Method And Device For Implementing Local Operation On Web Page | |
EP3016012A1 (en) | Method and device for marking terminal | |
CN106547576A (zh) | 配置文件的获取方法及装置 | |
US20200334217A1 (en) | Content grouping and surfacing | |
CN110688598A (zh) | 业务参数采集方法、装置、计算机设备和存储介质 | |
CN109788029A (zh) | 微服务的灰度调用方法、装置、终端及可读存储介质 | |
CN103118137A (zh) | 跨域访问页面装置和跨域访问页面方法 | |
CN106686021A (zh) | 一种服务调用方法和网关 | |
CN110895481A (zh) | 桌面应用的渲染方法、装置和系统 | |
JP2016177543A (ja) | 情報処理装置、端末装置、情報処理方法、及び情報処理プログラム | |
EP2843553A3 (en) | Information processing terminal and control method therefor, and program | |
CN105930166A (zh) | 一种基于web界面弹出层的方法 | |
CN106202296B (zh) | 网页的局部更新方法及系统 | |
CN104936016B (zh) | 一种视频文件切合方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |