背景技术
目前,在互联网信息处理领域,已经实现了利用网页播放音乐的web播放器技术。web播放器的组成包括播放独立进程和播放控件,所述播放独立进程需要在利用网页播放音乐前下载安装在本地终端,所述播放控件嵌入到需要播放音乐的网页中。目前常见的播放独立进程包括微软操作系统的windows media player、html5 audio以及各个公司自主开发的播放进程。
图1所示为现有的一种典型的网页播放音乐的具体流程图。参见图1,假设QzoneMusic.dll为一具体的播放控件,QzoneMusic.exe为一具体的播放独立进程,在具体加载实施中,所述播放控件需要设置在浏览器的ActiveX容器中,对所述播放控件的操作就是对含有播放控件的ActiveX容器的操作。具体的网页音乐播放过程为:网页(具体可以是网页中的JavaScript)初始化设置有播放控件的ActiveX,该ActiveX初始化的同时即加载了其内部的播放控件,然后网页将指定的音乐源发送给播放控件,该播放控件调用本地终端的播放独立进程,与该播放独立进程建立握手关系,通知该播放独立进程播放所述网页指定的音乐源。其中,如果有多个网页作为所述播放独立进程的调用者,由于不同的网页会设置不同的音乐源,因此只有最后一个网页的音乐源会真正的进行播放。同时播放独立进程会把播放回调信息(例如播放进度等信息和音乐源信息)同时返回给所述播放控件,由播放控件返回给网页,最后由网页的JavaScript显示在网页界面上。当所述网页关闭退出时,所述含有播放控件的ActiveX容器将被析构,即所述播放控件是否被析构,所述析构相当于关闭。因此,所述播放独立进程在播放内容时需定时(例如每0.5秒)判断与其建立握手关系的播放控件是否被析构,若被析构则终止播放。
图1所述的现有技术虽然使用普遍,但是其缺点是在网页切换时,只要当前网页一跳转切换,该网页对应的播放控件就被析构,因此所述播放独立进程就会终止播放音乐。因此图1所述的现有技术不能实现切换网页时保持音乐续播的功能。所谓网页音乐续播就是:在一个网络站点上,用户在网页A播放了音乐,从网页A在当前浏览器的切换指令(TAB)下跳转切换到网页B,保持背景音乐播放不断续,实现音乐无缝续播,并且在网页B,还能继续控制音乐播放。
目前可以实现在切换网页时保持音乐续播的方法如图2所示,该方法在站点中采用iframe的框架结构,在站点的各个网页中包括播放控制区201和站点内容显示区202,所述播放控件加载到所述播放控制区201中,所述站点内容显示区202是一个iframe窗口,站点的其他内容放入到该iframe窗口中。当用户浏览器在浏览切换该站点的网页时,就基于所述iframe窗口进行网页的跳转,从而可以显示出不同网页的网页内容,但是顶部的播放控制区201的内容不进行刷新,因此没有发生变化,从而保证音乐能够连贯续播。
但是,图2所示的现有技术具有如下缺点:
全站采用iframe框架结构的站点,浏览器的系统开销大,随着用户停留访问的时间越长,浏览器的开销越大,耗费的资源越多,从而造成网页显示和音乐播放的不流畅,急剧降低了用户的体验。例如如果一个站点系统作为一个庞大的业务集合有着多个应用程序(APP)运用,例如音乐、相册、日志等,均是采用iframe的方式嵌入,各个运用会通过iframe顶部去存储各自业务的变量,不少变量在使用后也没有释放,往往一个站点被浏览多次后,会占用到浏览器所在本地终端200M以上的内存;最终导致整个站点系统的框架逻辑太多,浏览器负担太重。
发明内容
有鉴于此,本发明的主要目的在于提供一种在切换网页时保持音乐续播的方法和装置,以降低浏览器的系统开销。
本发明的技术方案是这样实现的:
一种在切换网页时保持音乐续播的方法,包括:
切换前的第一网页加载对应的第一播放控件,该第一播放控件调用播放独立进程,与该播放独立进程建立握手关系,通知该播放独立进程播放所述第一网页指定的音乐源;所述播放独立进程在播放内容时判断与其建立握手关系的第一播放控件是否被析构,若被析构则终止播放;
所述第一网页在收到切换网页事件后,通过所述第一播放控件向所述播放独立进程发出含有指定续播时间的续播通知,之后进行切换;切换后的第二网页加载对应的第二播放控件,该第二播放控件与所述已经调用的播放独立进程建立握手关系;
所述播放独立进程在收到续播通知后强行续播当前内容,并且在续播时间结束之前判断是否有新的播放控件与其建立握手关系,如果有则继续播放当前内容,并在播放内容时判断与其建立握手关系的播放控件是否被析构,若被析构则终止播放;如果在续播时间结束时没有新的播放控件与其建立握手关系,则终止播放。
一种在切换网页时保持音乐续播的装置,该装置包括:
网页前端模块,用于加载本网页的播放控件,将音乐源通知给该播放控件,在接收到网页切换事件后,向该播放控件发出续播指令,之后再切换到新网页;
网页对应的播放控件,用于判断本地终端是否存在已调用的播放独立进程,在没有已调用的播放独立进程时,调用播放独立进程,与该播放独立进程建立握手关系,通知该播放独立进程播放所述音乐源;在有已调用的播放独立进程时,与该已调用的播放独立进程建立握手关系;该播放控件还用于在收到网页前端模块的续播指令后,向与其建立握手关系的播放独立进程发出含有指定续播时间的续播通知;
播放独立进程,用于与建立握手关系的播放控件交互,根据该播放控件的指示播放指定的音乐源,并在播放时判断与其握手的播放控件是否被析构,如果被析构则终止播放;在收到续播通知后,强行续播当前内容,并且在续播时间结束之前判断是否有新的播放控件与其建立握手关系,如果有则继续播放当前内容,并在播放时判断与其建立握手关系的播放控件是否被析构,若被析构则终止播放;如果在续播时间结束时没有新的播放控件与其建立握手关系,则终止播放。
与现有技术相比,本发明只是对网页、播放控件以及播放独立进程的处理流程进行了改进,即:网页在进行切换时,所述切换后的网页的播放控件与本地终端已经调用的播放独立进程建立握手关系,所述播放独立进程在新的播放控件与其建立握手关系之前进行强行续播,并且在与新的播放控件建立握手关系后继续播放当前内容。因此本发明不必在全站采用iframe框架结构,就可实现在切换网页时保持音乐续播的功能,从而降低了浏览器的系统开销,减轻浏览器的负担,提高了网页显示和音乐播放的流畅度。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
本发明中,将所述网页切换前的网页称为第一网页,将切换后的网页称为第二网页,每一个网页都对应嵌入一个播放控件,所述第一网页对应嵌入的播放控件称为第一播放控件,所述第二网页对应嵌入的播放控件称为第二播放控件。在具体加载实施中,所述播放控件设置在浏览器的ActiveX容器中,所述网页通过加载控制ActiveX容器的方式加载控制所述播放控件,即对所述播放控件的操作就是对含有播放控件的ActiveX容器的操作,为简明清楚地进行描述,本文的实施例中将含有播放控件的ActiveX容器称为播放控件。
图3为本发明所述在切换网页时保持音乐续播方法的一种实施流程图。在该实施例中,假设QzoneMusic.dll为一具体的播放控件,QzoneMusic.exe为一具体的播放独立进程。参见图3,该流程包括:
步骤301、加载切换前的第一网页。
步骤302、所述第一网页加载嵌入在该网页中的第一播放控件,具体方式是该第一网页调用JavaScript初始化含有第一播放控件(如QzoneMusic.dll)的AcitveX容器。
步骤303、由于此时本地终端(即运行所述浏览器的本地终端,如计算机、平板电脑、智能手机等)不存在已调用的播放独立进程,因此所述第一播放控件调用播放独立进程(例如QzoneMusic.exe),与该播放独立进程建立握手关系,通知该播放独立进程播放所述第一网页指定的音乐源,由该播放独立进程播放网页指定的音乐源。
所述第一播放控件在与所述播放独立进程建立握手关系后,所述第一网页还可进一步调用该第一播放控件的回调接口获得该播放独立进程的回调信息,所述回调信息至少包括当前的播放进度信息,或至少包括当前的播放进度信息(如播放时间)和音乐源信息(如该音乐源的名称)。所述播放控件从所述播放独立进程获得回调信息返回给对应的第一网页,该第一网页根据所述回调信息显示播放进度,并接收该第一网页的控制指令对播放独立进程进行播放控制。例如图4a所述为切换前的第一网页的一种界面示意图,该第一网页为一个站点的“个人中心”网页,该网页根据所述回调信息显示当前音乐的播放窗口401,该播放窗口401中可以显示当前播放的音乐源的名称411以及播放进度412(如当前已经播放的时间),该播放窗口401中还显示控制指令键,如“播放键”413、“暂停键”414等,当用户点击这些控制指令键则网页会通过播放控件向播放独立进程发出对应的控制指令,例如点击“暂停键”414,则发出暂停的控制指令,播放独立进程则暂停播放当前内容。
步骤304~305、所述播放独立进程在播放内容时,定时(例如每0.5秒)判断与其建立握手关系的第一播放控件是否被析构,若被析构则终止播放所述音乐源,并退出所述播放独立进程。
在进行网页切换的情况下,执行下述流程:
步骤306、所述第一网页收到切换网页事件。例如用户点击了图4a所述的第一网页中的“我的主页”链接,则触发切换到“我的主页”的网页,“我的主页”的网页在本实施例中为所述切换后的第二网页。
步骤307、所述第一网页判断所述第二网页是否需要音乐续播,如果是,则执行步骤308,否则直接切换网页,即浏览器退出所述第一网页,加载所述第二网页,当所述第一网页退出时,所述含有第一播放控件的ActiveX容器将被析构,即所述第一播放控件被析构。由于所述播放独立进程在播放内容时会定时判断与其建立握手关系的第一播放控件是否被析构(如步骤304和步骤305所述),若被析构则终止播放所述音乐源,因此如果直接进行切换退出第一网页而加载切换后的第二网页,则所述播放独立进行会终止播放所述音乐源,并退出。
本步骤中,可以预先在当前站点系统的服务器中记录所有相关网页是否需要音乐续播功能。所述第一网页判断所述第二网页是否需要音乐续播,具体可以由所述第一网页向站点系统服务器查询,所述站点系统服务器从所记录的信息中查询该第二网页是否需要音乐续播,并向第一网页返回查询结果。
步骤308、所述第一网页通过所述第一播放控件向所述播放独立进程发出含有指定续播时间(timeout)的续播通知,之后进行网页切换。例如所述第一网页可以通过调用一个通知方法SetRef(timeout)来通知所述播放独立进程进行续播。
所述网页切换具体包括:析构所述第二播放控件并退出第一网页,然后在浏览器中加载所述切换后的第二网页,所述第二网页加载对应的第二播放控件,该第二播放控件判断本地终端是否存在已调用的播放独立进程,在没有已调用的播放独立进程时,调用播放独立进程,与该播放独立进程建立握手关系,通知该播放独立进程播放指定的音乐源;在有已调用的播放独立进程时,与该已调用的播放独立进程建立握手关系。
所述播放独立进程在收到续播通知后执行下述步骤309~312。
步骤309、所述播放独立进程强行续播当前内容。即:在收到该续播通知后,不再执行所述步骤304或305。也就是说播放独立进程在收到该续播通知后,即使与播放独立进程建立握手关系的第一播放控件被析构,也要继续播放当前内容。
步骤310、所述播放独立进程判断所述续播通知所包含的指定续播时间是否到达,如果到达则重新执行步骤304和305,即一旦判断所述与播放独立进程建立握手关系的播放控件被析构,则终止播放;否则,执行步骤311。
步骤311、所述播放独立进程判断是否有新的播放控件与自身建立握手关系,如果有则执行步骤312,否则返回步骤310。
此处注意,如果在所述指定续播时间到达前,所述第二网页的第二播放控件已经加载,则该第二播放控件会判断本地终端是否存在已调用的播放独立进程,此时由于所述播放独立进程收到续播通知进行强行续播,还没有退出,因此该第二播放控件与该已经调用的播放独立进程建立握手关系,此时播放独立进程执行步骤312。
步骤312、所述播放独立进程继续播放当前内容,并继续执行所述步骤304和305,即:在播放内容时判断与其建立握手关系的播放控件(此时为第二播放控件)是否被析构,若被析构则终止播放。
所述第二播放控件在与所述播放独立进程建立握手关系后,所述第二网页还可进一步调用该第二播放控件的回调接口获得该播放独立进程的回调信息、所述回调信息至少包括当前的播放进度信息,或至少包括当前的播放进度信息和音乐源信息(如该音乐源的名称)。所述播放控件从所述播放独立进程获得回调信息返回给对应的第二网页,该第二网页根据所述回调信息显示播放进度,并接收该第二网页的控制指令对播放独立进程进行播放控制。例如图4b所述为切换后的第二网页的一种界面示意图,该第二网页为图4a所述同一个站点的“我的主页”网页,该网页根据所述回调信息显示当前音乐的播放窗口402,该播放窗口402中显示当前播放的音乐源的名称411以及播放进度412,在切换后在该第二网页的该播放窗口402中会续播切换前所述第一网页的播放窗口401所播放的内容和进度,该播放窗口402中还显示控制指令键,如“播放键”413、“暂停键”414等,当用户点击这些控制指令键则网页会通过播放控件向播放独立进程发出对应的控制指令,例如点击“暂停键”414,则发出暂停的控制指令,播放独立进程则暂停播放当前内容。
当所述“我的主页”网页被关闭后,则该网页的所述第二播放控件被析构,此时所述播放独立进程停止播放音乐,并退出。
当在所述“我的主页”网页收到切换到其它网页的切换事件,如用户点击了所述“应用”网页,或者用户重新点击了所述“个人中心”网页,则此时当前的“我的主页”网页变成了切换前的所述第一网页,而用户重新点击的网页变成了切换后的所述第二网页,此时会重新执行返回步骤306并执行后续步骤,即进行本发明所述切换网页后的音乐续播处理。
本发明还公开了执行上述方法的一种在切换网页时保持音乐续播的装置。图5为本发明所述在切换网页时保持音乐续播的装置的一种组成示意图,参见图5,该装置500包括:
网页前端模块501,设置在网页中,用于加载本网页的播放控件,将音乐源通知给该播放控件,在接收到网页切换事件后,向该播放控件发出续播指令,之后再切换到新网页。所述网页前端模块的功能可以由JavaScript等前端语言进行编程实现。
网页对应的播放控件502,通常是设置在网页中的ActiveX容器中,用于判断本地终端(即浏览本网页的终端,如计算机、平板电脑、智能手机等)是否存在已调用的播放独立进程,在没有已调用的播放独立进程时,调用播放独立进程,与该播放独立进程建立握手关系,通知该播放独立进程播放所述音乐源;在有已调用的播放独立进程时,与该已调用的播放独立进程建立握手关系;该播放控件502还用于在收到网页前端模块的续播指令后,向与其建立握手关系的播放独立进程发出含有指定续播时间的续播通知。
播放独立进程503,该播放独立进程503需要在利用网页播放音乐前下载安装在本地终端,该播放独立进程503在被调用后用于与建立握手关系的播放控件交互,根据该播放控件的指示播放指定的音乐源,并在播放时判断与其握手的播放控件是否被析构,如果被析构则终止播放;在收到续播通知后,强行续播当前内容,并且在续播时间结束之前判断是否有新的播放控件与其建立握手关系,如果有则继续播放当前内容,并在播放时判断与其建立握手关系的播放控件是否被析构,若被析构则终止播放;如果在续播时间结束时没有新的播放控件与其建立握手关系,则终止播放。
在一种具体实施方式中,为了显示如图4a和图4b所述的回调信息,如音乐源411和播放进度412,并根据所述控制指令键控制所述播放独立进程的播放,所述网页前端模块501进一步用于接收该网页对应播放控件502的回调信息,依据所述回调信息显示播放进度,并将用户触发的控制指令发送给该播放控件502;所述播放控件502进一步用于将播放独立进程503的回调信息返回给网页前端模块501,按照网页前端模块501的控制指令对播放独立进程503进行播放控制;所述播放独立进程503进一步用于发送回调信息给所述播放控件502,并按照播放控件502的控制指令进行播放。所述回调信息至少包括:当前的播放进度信息,或当前的播放进度信息和音乐源信息。
在一种具体实施方式中,所述网页前端模块501进一步用于:接收到切换事件后、向本网页的所述播放控件502发出续播指令之前,判断切换后的新网页是否需要音乐续播,如果是,则向所述播放控件502发出续播指令,之后再切换到新网页;否则直接切换到新网页。
与现有技术相比,本发明只是对网页、播放控件以及播放独立进程的处理流程进行了改进,因此本发明不必在全站采用iframe框架结构,就可实现在切换网页时保持音乐续播的功能,从而降低了浏览器的系统开销,减轻浏览器的负担,提高了网页显示和音乐播放的流畅度。同时,由于本发明不必对整个站点采用iframe框架设计,因此不必为了加上音乐续播功能而对原有的站点系统的整体架构进行改造,改造的工作量和成本较小。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。