发明内容
本发明实施例提供一种播放流媒体文件的方法和装置,能够提高流媒体文件的传输和播放效率。
根据本发明的第一方面,提供一种播放流媒体文件的方法,所述方法包括:
第一装置播放来自流媒体服务器的流媒体文件;
若所述第一装置收到切换指令,所述第一装置向第二装置发送播放命令,并向所述第二装置发送已下载的所述流媒体文件的至少一部分数据,所述至少一部分数据包括所述第一装置还未播放的数据;
所述播放命令用于指示所述第二装置播放所述第一装置发送的所述至少一部分数据的部分或全部。
在第一方面的第一种可能的实现方式中,若所述第一装置已下载的流媒体文件在时间上连续,所述方法还包括:
所述第一装置确定所述已下载的流媒体文件的第一位置信息,所述第一位置信息指示了所述已下载的流媒体文件的最后一个完整的数据包的位置;
所述第一装置还未播放的数据具体为,所述已下载的流媒体文件中从停止播放点到所述第一位置信息指示的位置之间的数据。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,如果所述已下载的流媒体文件不完整,所述第一装置在收到所述切换指令之后,所述方法还包括,
向所述第二装置发送所述第一位置信息和所述已下载的流媒体文件的地址信息;所述第一位置信息和所述流媒体文件的地址信息用于所述第二装置向所述流媒体服务器获取所述至少一部分数据以外的部分或全部数据。
在第一方面的第三种可能的实现方式中,若所述第一装置下载的流媒体文件在时间上不连续,所述方法还包括:
所述第一装置接收服务器发送的缓存记录表并进行更新;
所述第一装置还未播放的数据具体为,所述更新的缓存记录表中标识已缓存但未释放的片段存储块中的数据;
如果所述已下载的流媒体文件不完整,所述第一装置收到所述切换指令之后,向所述第二装置发送所述更新的缓存记录表,和所述更新的缓存记录表中未缓存的片段存储块中的数据所对应的地址信息;
所述更新的缓存记录表和所述未缓存的片段存储块的数据所对应的地址信息用于,所述第二装置从所述流媒体服务器获取所述至少一部分数据以外的部分或全部数据。
在第一方面的第四种可能的实现方式中,若所述第一装置下载的流媒体文件在时间上不连续,所述方法还包括:
所述第一装置接收服务器发送的缓存记录表并进行更新;
所述第一装置还未播放的数据具体为,所述更新的缓存记录表中标识已缓存但未释放的片段存储块中的数据;
如果所述已下载的流媒体文件不完整,所述第一装置在收到切换指令之后,向所述服务器发送所述更新的缓存记录表和所述第二装置的地址信息,所述更新的缓存记录表和所述第二装置的地址信息用于所述流媒体服务器向所述第二装置发送所述更新的缓存记录表中未缓存的片段存储块中的数据。
结合第一方面的第一种可能的实现方式至第一方面的第四种可能的实现方式中的任一种可能的实现方式,在第五种可能的实现方式中,在第一方面的第五种可能的实现方式中,所述已下载的流媒体文件的至少一部分数据,在所述第一装置确定所述已下载的流媒体文件的数据量或时长满足预设条件时,向所述第二装置发送。
根据本发明的第二方面,提供一种播放流媒体文件的方法,所述方法包括:
第二装置接收第一装置在收到切换指令时发送的播放命令,和所述第一装置从流媒体服务器已下载的流媒体文件的至少一部分数据,所述至少一部分数据包括所述第一装置还未播放的数据;
所述第二装置根据所述播放命令,播放所述第一装置发送的所述至少一部分数据的部分或全部。
在第二方面的第一种可能的实现方式中,若所述第一装置已下载的流媒体文件在时间上连续,且不完整,所述方法还包括,
所述第二装置接收所述第一装置发送的第一位置信息和所述已下载的流媒体文件的地址信息,所述第一位置信息指示了所述已下载的流媒体文件的最后一个完整的数据包的位置;
所述第二装置根据所述第一位置信息和所述已下载的流媒体文件的地址信息,向所述流媒体服务器获取所述至少一部分数据以外的部分或全部数据。
在第二方面的第二种可能的实现方式中,若所述第一装置下载的流媒体文件在时间上不连续,且不完整,所述方法还包括,
所述第二装置接收所述第一装置发送的缓存记录表,和所述缓存记录表中未缓存的片段存储块中的数据所对应的地址信息;
所述第二装置根据所述缓存记录表和所述未缓存的片段存储块的数据所对应的地址信息,从所述流媒体服务器获取所述至少一部分数据以外的部分或全部数据。
在第二方面的第三种可能的实现方式中,若所述第一装置下载的流媒体文件在时间上不连续,且不完整,所述方法还包括,
所述第二装置接收所述流媒体服务器发送的缓存记录表中未缓存的片段存储块中的数据,所述缓存记录表为所述第一装置向服务器发送的。
结合第二方面的第一种可能的实现方式至第二方面的第三种可能的实现方式中的任一种可能实现方式,在第二方面的第四种可能的实现方式中,所述已下载的流媒体文件的至少一部分数据,在所述第一装置确定所述已下载的流媒体文件的数据量或时长满足预设条件时,向所述第二装置发送。
根据本发明的第三方面,提供一种播放流媒体文件的装置,所述装置包括:
接收器,用于接收切换指令;
存储器,用于缓存来自流媒体服务器的流媒体文件;
播放器,用于播放来自流媒体服务器的流媒体文件;
处理器,用于在所述接收器收到所述切换指令时,生成播放命令,并确定需要向第二装置发送的已下载的所述流媒体文件的至少一部分数据,其中,所述播放命令用于指示所述第二装置播放所述第一装置发送的所述至少一部分数据的部分或全部,所述至少一部分数据包括所述第一装置还未播放的数据;
发送器,用于向第二装置发送所述播放命令,和所述处理器确定的已下载的所述流媒体文件的至少一部分数据。
在第三方面的第一种可能的实现方式中,所述处理器还用于,若所述第一装置已下载的流媒体文件在时间上连续,确定所述已下载的流媒体文件的第一位置信息,所述第一位置信息指示了所述已下载的流媒体文件的最后一个完整的数据包的位置。
结合第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述发送器还用于在所述已下载的流媒体文件不完整时,在所述接收器收到所述切换指令之后,向所述第二装置发送所述第一位置信息和所述已下载的流媒体文件的地址信息;所述第一位置信息和所述流媒体文件的地址信息用于所述第二装置向所述流媒体服务器获取所述至少一部分数据以外的部分或全部数据。
在第三方面的第三种可能的实现方式中,所述接收器还用于,在所述第一装置下载的流媒体文件在时间上不连续时,接收服务器发送的缓存记录表并进行更新;
所述发送器还用于,在所述已下载的流媒体文件不完整时,在所述接收器收到所述切换指令之后,向所述第二装置发送所述更新的缓存记录表,和所述更新的缓存记录表中未缓存的片段存储块中的数据所对应的地址信息;
所述更新的缓存记录表和所述未缓存的片段存储块的数据所对应的地址信息用于,所述第二装置从所述流媒体服务器获取所述至少一部分数据以外的部分或全部数据。
在第三方面的第四种可能的实现方式中,所述接收器还用于,在所述第一装置下载的流媒体文件在时间上不连续时,接收服务器发送的缓存记录表并进行更新;
所述发送器还用于,在所述已下载的流媒体文件不完整时,在所述接收器收到所述切换指令之后,向所述服务器发送所述更新的缓存记录表和所述第二装置的地址信息,所述更新的缓存记录表和所述第二装置的地址信息用于所述流媒体服务器向所述第二装置发送所述更新的缓存记录表中未缓存的片段存储块中的数据。
结合第三方面的第一种可能的实现方式至第三方面的第四种可能的实现方式中的任一种可能的实现方式,在第五种可能的实现方式中,所述发送器具体用于,在所述第一装置确定所述已下载的流媒体文件的数据量或时长满足预设条件时,向所述第二装置发送所述已下载的流媒体文件的至少一部分数据。
根据本发明的第四方面,提供一种播放流媒体文件的装置,所述装置包括:
接收器,用于接收第一装置在收到切换指令时发送的切换命令,和所述第一装置从流媒体服务器已下载的流媒体文件的至少一部分数据,所述至少一部分数据包括所述第一装置还未播放的数据;
播放器,用于根据所述播放命令,播放所述第一装置发送的所述至少一部分数据的部分或全部。
在第四方面的第一种可能的实现方式中,所述接收器还用于,在所述第一装置已下载的流媒体文件在时间上连续,且不完整时,接收所述第一装置发送的第一位置信息和所述已下载的流媒体文件的地址信息,并根据所述第一位置信息和所述已下载的流媒体文件的地址信息,向所述流媒体服务器获取所述至少一部分数据以外的部分或全部数据;
其中,所述第一位置信息指示了所述已下载的流媒体文件的最后一个完整的数据包的位置。
在第四方面的第二种可能的实现方式中,所述接收器还用于,在所述第一装置已下载的流媒体文件在时间上不连续,且不完整时,接收所述第一装置发送的的缓存记录表,和所述缓存记录表中未缓存的片段存储块中的数据所对应的地址信息,并根据所述缓存记录表和所述未缓存的片段存储块的数据所对应的地址信息,从所述流媒体服务器获取所述至少一部分数据以外的部分或全部数据。
在第四方面的第三种可能的实现方式中,所述接收器还用于,在所述第一装置已下载的流媒体文件在时间上不连续,且不完整时,接收所述流媒体服务器发送的缓存记录表中未缓存的片段存储块中的数据,所述缓存记录表为所述第一装置向服务器发送的。
结合第四方面的第一种可能的实现方式至第四方面的第三种可能的实现方式中的任一种可能实现方式,在第四方面的第四种可能的实现方式中,其特征在于,所述接收器具体用于,在所述第一装置确定所述已下载的流媒体文件的数据量或时长满足预设条件时,接收所述第一装置发送的所述已下载的流媒体文件的至少一部分数据。
采用上述技术方案后,本发明实施例提供的播放流媒体文件的方法和装置,通过将已下载的所述流媒体文件的至少一部分数据发送给第二装置,且所述至少一部分数据包括所述第一装置还未播放的数据,这样,所述第二装置即可播放所述第一装置发送的所述至少一部分数据的部分或全部。如此一来,由于有效地利用了存储在第一装置中的这部分已下载的流媒体文件的数据,因而,减小了第二装置需要获取的该流媒体文件的数据量,提高了流媒体文件的传输和播放效率。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1是本发明实施例提供的一种播放流媒体文件的方法的流程图。参照图1,本发明实施例提供一种播放流媒体文件的方法,所述方法可包括:
11、第一装置播放来自流媒体服务器的流媒体文件。
在本步骤之前,第一装置可从流媒体服务器下载流媒体文件,并可将所述流媒体文件的数据存放在其缓存或临时文件中。
12、若所述第一装置收到切换指令,所述第一装置向第二装置发送播放命令,并向所述第二装置发送已下载的所述流媒体文件的至少一部分数据,所述至少一部分数据包括所述第一装置还未播放的数据;
所述播放命令用于指示所述第二装置播放所述第一装置发送的所述至少一部分数据的部分或全部。
在本发明实施例中,若在步骤12所述第一装置向第二装置发送播放命令时,所述第一装置已从互联网媒体服务器下载了所述流媒体文件的全部数据,则所述第一装置可将已下载的所述流媒体文件的全部数据发送给所述第二装置。所述第二装置接收到所述流媒体文件的全部数据之后,可开始播放。若在步骤12所述第一装置向第二装置发送播放命令时,所述第一装置尚没有从流媒体服务器下载完所述流媒体文件的全部数据,则所述第一装置可向所述第二装置发送已下载的所述流媒体文件的一部分数据。
需要指出的是,在本发明实施例中,将播放切换之前流媒体文件的播放设备称为第一装置,将播放切换之后流媒体文件的播放设备称为第二装置。其中,第一装置可以是一些外形小巧、携带方便的移动终端设备,包括智能手机、平板电脑、个人数字助理(PDA)等等,这些装置操作方便,较容易从网络侧获取流媒体文件,但是屏幕尺寸小、分辨率低,很难获得较好的视觉体验。第二装置可以是一些体积较大,具有优良的显示特性的设备,比如高清智能电视,这些设备具有屏幕尺寸大、分辨率高的特点,可以播放高清媒体节目,使用户获得较好的视觉体验。
本发明实施例提供的播放流媒体文件的方法,通过将已下载的所述流媒体文件的至少一部分数据发送给第二装置,且所述至少一部分数据包括所述第一装置还未播放的数据,这样,所述第二装置即可播放所述第一装置发送的所述至少一部分数据的部分或全部。如此一来,由于有效地利用了存储在第一装置中的这部分已下载的流媒体文件的数据,因而,减小了第二装置需要获取的该流媒体文件的数据量,提高了流媒体文件的传输和播放效率。
另外,在从第一装置切换到第二装置播放的过程中,在现有技术中,第二装置与互联网媒体服务器之间可能会经历一系列操作,包括建立连接、认证、能力协商等等,这些操作需要消耗一定的时间,从而导致在切换过程中会出现缓冲、延时等情况,造成媒体节目播放的中断,影响用户的观赏体验。而本发明实施例在此种情形下,当流媒体文件从第一装置切换到第二装置上播放时,第二装置可以在与流媒体服务器进行交互以请求传输数据的同时,播放第一装置传输过来的这部分已下载的流媒体文件的数据,从而可实现流媒体文件播放画面的平稳切换,避免了切换时缓冲和播放中断现象的出现。
需注意的是,第一装置对于流媒体文件的数据的下载存在以下两种方式:一种是连续下载,即流媒体服务器传给第一装置的流媒体文件的数据在时间上是连续的,后面的数据必须等到前面的数据已下载了才可以传输;另一种是非连续下载,即流媒体服务器传给第一装置的流媒体文件的数据在时间上是不连续的,在这种情况下,流媒体服务器将整个流媒体文件的数据进行分段,以媒体数据存储块为单位进行传输,此时流媒体服务器会给第一装置下发缓存记录表,用来使第一装置随时记录媒体数据存储块的状态。
因此,第一装置在收到切换指令之后,可根据是否获取缓存记录表来确定已下载的流媒体文件在时间上是否连续,来选择后续的处理方式。具体而言,如果第一装置从流媒体服务器获取了缓存记录表,则确定已下载的流媒体文件在时间上是不连续;反之,若没有从流媒体服务器获取缓存记录表,则确定已下载的流媒体文件在时间上是不连续。
下面对已下载的流媒体文件在时间上是连续的和不连续的这两种情形分别进行说明。
可选地,在本发明的一个实施例中,若所述第一装置已下载的流媒体文件在时间上连续,本发明实施例提供的播放流媒体文件的方法除了包括上面的步骤11和步骤12之外,还可包括:
所述第一装置确定所述已下载的流媒体文件的第一位置信息,所述第一位置信息指示了所述已下载的流媒体文件的最后一个完整的数据包的位置;
所述第一装置还未播放的数据具体为,所述已下载的流媒体文件中从停止播放点到所述第一位置信息指示的位置之间的数据。
在本发明实施例中,所述“完整的数据包”可以为一帧数据,或内容数据分片的一片,或一个MPEG TS(运动图象专家组传输流)包。
进一步地,所述第一装置在确定所述已下载的流媒体文件的第一位置信息之后,即可根据所述第一位置信息来确定所述已下载的流媒体文件是否完整。具体而言,所述第一装置确定所述第一位置信息指示的位置是否为所述流媒体文件的结束位置,若所述第一位置信息指示的位置为所述流媒体文件的结束位置,则确定所述已下载的流媒体文件完整;若所述第一位置信息指示的位置不为所述流媒体文件的结束位置,则确定所述已下载的流媒体文件不完整。
如果所述已下载的流媒体文件不完整,所述第一装置在收到所述切换指令之后,所述方法还可包括:
向所述第二装置发送所述第一位置信息和所述已下载的流媒体文件的地址信息;所述第一位置信息和所述流媒体文件的地址信息用于所述第二装置向所述流媒体服务器获取所述至少一部分数据以外的部分或全部数据。
可选地,在本发明的另一个实施例中,若所述第一装置下载的流媒体文件在时间上不连续,本发明实施例提供的播放流媒体文件的方法除了包括上面所述的步骤11和步骤12之外,还可包括:
所述第一装置接收服务器发送的缓存记录表并可根据从流媒体服务器下载的流媒体文件的数据对缓存记录表进行更新;具体而言,所述第一装置一旦从所述流媒体服务器下载了一个片段存储块中的完整数据,就对缓存记录表进行更新:从缓存记录表中将该片段存储块标识为已缓存。
所述第一装置还未播放的数据具体为,所述缓存记录表中标识已缓存但未释放的片段存储块中的数据;
如果所述已下载的流媒体文件不完整,所述第一装置收到所述切换指令之后,向所述第二装置发送更新的缓存记录表,和所述经更新的缓存记录表中未缓存的片段存储块中的数据所对应的地址信息;
所述更新的缓存记录表和所述未缓存的片段存储块的数据所对应的地址信息用于,所述第二装置从所述流媒体服务器获取所述至少一部分数据以外的部分或全部数据。
其中,所述第一装置可根据缓存记录表来确定所述已下载的流媒体文件是否完整。具体而言,若缓存记录表中不存在未缓存的片段存储块,则表明所述已下载的流媒体文件是完整的;反之,若缓存记录表中存在未缓存的片段存储块,则表明所述已下载的流媒体文件是不完整的。
其中,所述缓存记录表中未缓存的片段存储块中的数据所对应的地址信息可被包含在缓存记录表中,随缓存记录表一起发送给第二装置。
在本发明实施例中,将完整的流媒体文件按时间顺序进行分段,每一段(segment)所对应的数据称为一个片段存储块。一个片段存储块由一个或者若干个完整的数据包组成,在数据传输时是以片段存储块为单位将数据从流媒体服务器传输至接收设备。
所述“未释放的片段存储块”是指已经存储在接收设备的存储介质中且还未丢弃的片段存储块。如果所述片段存储块所对应的媒体内容已经播放,则该片段存储块的数据将被丢弃。
本实施例提供的播放流媒体文件的方法,适用于从网络媒体服务器获取的数据并不是按照时间顺序连续下载的情形,能够减小第二装置从互联网媒体服务器获取的流媒体文件的数据量。
可选地,在本发明的又一个实施例中,若所述第一装置下载的流媒体文件在时间上不连续,本发明实施例提供的播放流媒体文件的方法除了包括上面所述的步骤11和步骤12之外,还可包括:
所述第一装置接收服务器发送的缓存记录表并根据从流媒体服务器下载的流媒体文件的数据对缓存记录表进行更新;具体而言,所述第一装置一旦从所述流媒体服务器下载了一个片段存储块中的完整数据,就对缓存记录表进行更新:即从缓存记录表中将该片段存储块标识为已缓存。
所述第一装置还未播放的数据具体为,所述缓存记录表中标识已缓存但未释放的片段存储块中的数据;
如果所述已下载的流媒体文件不完整,所述第一装置在收到切换指令之后,向所述服务器发送更新的缓存记录表和所述第二装置的地址信息,所述更新的缓存记录表和所述第二装置的地址信息用于所述流媒体服务器向所述第二装置发送所述更新的缓存记录表中未缓存的片段存储块中的数据。
服务器接收到所述更新的缓存记录表和所述第二装置的地址信息后于流媒体服务器进行通信,告知流媒体服务器需要向所述第二装置发送的流媒体文件的数据。
其中,所述第二装置的地址信息可以为所述第二装置的IP地址信息,还可以为其他可以标识所述第二装置的地址信息。
本实施例提供的播放流媒体文件的方法,适用于从网络媒体服务器获取的数据并不是按照时间顺序连续下载的情形,能够减小流媒体服务器向所述第二装置发送的流媒体文件的数据量。
需要指出的是,在上述各个实施例中,在步骤12所述第一装置向所述第二装置发送已下载的所述流媒体文件的至少一部分数据之前,所述第一装置可以先确定所述已下载的流媒体文件的数据量或时长是否满足预设条件时。所述第一装置在确定所述已下载的流媒体文件的数据量或时长满足预设条件时,向所述第二装置发送所述已下载的流媒体文件的至少一部分数据。其中,所述预设条件例如可以为:所述已下载的流媒体文件的时长是否达到指定的阀值,所述指定的阀值可以取根据需要设定的某一范围内的任何值,举例而言2-5秒中的任一值等;又例如,所述预设条件可以为:所述已下载的流媒体文件的数据量是否达到指定的阀值,所述指定的阀值举例而言为1M-5M等。
在所述第一装置确定所述已下载的流媒体文件的数据量或时长不满足预设条件时,所述第一装置将所述流媒体文件的地址信息和第二位置信息发送给所述第二装置,其中,所述第二位置信息指示了所述流媒体文件的未播放部分的第一个数据包的位置。这样,所述第二装置可根据所述地址信息和所述第二位置信息请求流媒体服务器传输所述流媒体文件的相应数据。需要说明的是,本发明实施例中的位置信息不限于时间上的位置,还可以为其他度量上的位置。
需要指出的是,在上述各个实施例中,所述第一装置和所述第二装置可以在同一局域网内。由于在同一局域网内的两装置的数据传输速率很高,一般高于网络侧ADSL(Asymmetric Digital SubscriberLine,非对称数字用户环路)网络的带宽,这样一来,能够使存储(例如,存储在缓存或临时文件中)的这部分数据能以更快的传输速率传输到第二装置,最终使得在切换的过程中流媒体文件能继续保持流畅的播放。
特别需要指出的是,在本发明实施例中,“服务器”用于向第一装置发送待播放流媒体文件的缓存记录表以及地址信息,服务器可以不向第一装置提供流媒体文件,而由专门的“流媒体服务器”向第一装置提供流媒体文件;或者,“服务器”也可以具备“流媒体服务器”的功能,即,“服务器”可以向第一装置提供流媒体文件。本文中的“流媒体服务器”用于根据第一装置的请求消息向第一装置发送流媒体文件。流媒体文件存储在流媒体服务器中。这里需要说明的是,本文中的“服务器”和“流媒体服务器”都是逻辑上的设备,而非真正的物理设备。“服务器”和“流媒体服务器”可以是一个物理实体,也可以分属于不同的物理实体,当服务器和流媒体服务器是不同的物理实体时,它们之间可以进行通信并传递必要的信息。
图2是本发明实施例提供的一种播放流媒体文件的方法的流程图。参照图2,本发明实施例提供一种播放流媒体文件的方法,所述方法可包括:
21、第二装置接收第一装置在收到切换指令时发送的播放命令,和所述第一装置从流媒体服务器已下载的流媒体文件的至少一部分数据,所述至少一部分数据包括所述第一装置还未播放的数据。
22、所述第二装置根据所述播放命令,播放所述第一装置发送的所述至少一部分数据的部分或全部。
本发明实施例提供的播放流媒体文件的方法,通过将已下载的所述流媒体文件的至少一部分数据发送给第二装置,且所述至少一部分数据包括所述第一装置还未播放的数据,这样,所述第二装置即可播放所述第一装置发送的所述至少一部分数据的部分或全部。如此一来,由于有效地利用了存储在第一装置中的这部分已下载的流媒体文件的数据,因而,减小了第二装置需要获取的该流媒体文件的数据量,提高了流媒体文件的传输和播放效率。
另外,在从第一装置切换到第二装置播放的过程中,在现有技术中,第二装置与互联网媒体服务器之间可能会经历一系列操作,包括建立连接、认证、能力协商等等,这些操作需要消耗一定的时间,从而导致在切换过程中会出现缓冲、延时等情况,造成媒体节目播放的中断,影响用户的观赏体验。而本发明实施例在此种情形下,当流媒体文件从第一装置切换到第二装置上播放时,第二装置可以在与流媒体服务器进行交互以请求传输数据的同时,播放第一装置传输过来的这部分已下载的流媒体文件,从而可实现流媒体播放画面的平稳切换,避免了切换时缓冲和播放中断现象的出现。
第一装置在收到切换指令之后,可根据是否获取缓存记录表来确定已下载的流媒体文件在时间上是否连续,来选择后续的处理方式。具体而言,如果第一装置从流媒体服务器获取了缓存记录表,则确定已下载的流媒体文件在时间上是不连续;反之,若没有从流媒体服务器获取缓存记录表,则确定已下载的流媒体文件在时间上是不连续。
下面针对第一装置已下载的流媒体文件在时间上是连续的和不连续的这两种情形分别进行说明。
可选地,在本发明的一个实施例中,若所述第一装置已下载的流媒体文件在时间上连续,且不完整,本发明实施例提供的播放流媒体文件的方法除了包括上面所述的步骤21和步骤22之外,还可包括:
所述第二装置接收所述第一装置发送的第一位置信息和所述已下载的流媒体文件的地址信息,所述第一位置信息指示了所述已下载的流媒体文件的最后一个完整的数据包的位置;
所述第二装置根据所述第一位置信息和所述已下载的流媒体文件的地址信息,向所述流媒体服务器获取所述至少一部分数据以外的部分或全部数据。
可选地,在本发明的另一个实施例中,若所述第一装置下载的流媒体文件在时间上不连续,且不完整,本发明实施例提供的播放流媒体文件的方法除了包括上面所述的步骤21和步骤22之外,还可包括,
所述第二装置接收所述第一装置发送的缓存记录表,和所述缓存记录表中未缓存的片段存储块中的数据所对应的地址信息;
所述第二装置根据所述缓存记录表和所述未缓存的片段存储块的数据所对应的地址信息,从所述流媒体服务器获取所述至少一部分数据以外的部分或全部数据。
可选地,在本发明的又一个实施例中,若所述第一装置下载的流媒体文件在时间上不连续,且不完整,本发明实施例提供的播放流媒体文件的方法除了包括上面所述的步骤21和步骤22之外,还可包括,
所述第二装置接收所述流媒体服务器发送的缓存记录表中未缓存的片段存储块中的数据,所述缓存记录表为所述第一装置向服务器发送的。
需要指出的是,在上述各个实施例中,所述已下载的流媒体文件的至少一部分数据,可以在所述第一装置确定所述已下载的流媒体文件的数据量或时长满足预设条件时,向所述第二装置发送。
需要指出的是,在上述各个实施例中,所述第一装置和所述第二装置可以在同一局域网内。由于在同一局域网内的两装置的数据传输速率很高,一般高于网络侧ADSL(Asymmetric Digital SubscriberLine,非对称数字用户环路)网络的带宽,这样一来,能够使存储(例如,存储在缓存或临时文件中)的这部分数据能以更快的传输速率传输到第二装置,最终使得在切换的过程中流媒体文件能继续保持流畅的播放。
为更好的理解本发明,下面以具体实施例为例来对本发明进行进一步说明。亦须注意,以下所列举的实施例只是本发明的一部分实施例,本领域技术人员由本发明所述内容,可易于想到其他实施例,它们都在本发明的范围内。
同时需了解的是,下面的具体实施例重点描述了对下载的流媒体文件在时间上是连续的情形,由于对于下载的流媒体文件在时间上是不连续的情形可根据本文所描述的内容相应得出,因而,本文在此不再作特别详细的描述。
图3A是本发明实施例提供的一种播放流媒体文件的方法的示意图。参照图3A,该方法包括:
1)WAN(广域网)侧的流媒体服务器向第一装置发送流媒体文件,第一装置播放来自流媒体服务器的该流媒体文件;
2)第一装置在接收到切换指令后,由其上的控制点触发播放命令,将流媒体文件切换到第二装置上播放;
3)第一装置上的控制点向流媒体服务器发送TEARDOWN指令,断开流媒体文件的传输,同时该会话结束;
4)第一装置与第二装置建立RTSP(Real Time Streaming protocol,实时流协议)连接;
5)第一装置向第二装置发送ANNOUNCE请求,其报文中包含媒体文件的SDP(会话描述协议)描述信息(包括该媒体文件的编码格式、大小、分辨率等信息);
6)第一装置向第二装置发送SETUP请求,协商传递流媒体文件数据的端口;
7)第一装置找到缓存中存储的流媒体文件数据的最后一个完整的数据包对应的位置信息——第一位置信息;
8)第一装置向第二装置发送RECORD请求,所述RECORD请求中包含该流媒体文件的停止播放点和第一位置信息,告知第二装置所要播放的时间区域(从停止播放点到第一位置),第二装置在对应的RECORD响应中打开数据链路;
9)第一装置向第二装置发送SET_PARAMETER请求,告知第二装置该流媒体文件的地址信息(URL)和第一位置信息(rtptime);
10)第一装置与第二装置经过TCP三次握手后,第一装置开始向第二装置传输已下载的所述流媒体文件的至少一部分数据;
11)第二装置对接收到的流媒体文件的URL信息进行DNS域名解析,解析出相应的IP地址信息;
12)第二装置根据地址信息和对应的第一位置信息与流媒体服务器建立会话连接,经过TCP三次握手之后,向流媒体服务器请求第一位置信息之后的流媒体文件的数据。
下面对下载的流媒体文件在时间上是不连续的情形进行说明。
对于下载的流媒体文件在时间上是不连续的情况,本发明实施例提供的一种播放流媒体文件的方法可包括:
步骤(1)~(6)与上面的步骤1)~6)相同;
此外,在步骤(1)和步骤(2)之间增加步骤:第一装置根据从流媒体服务器接收的流媒体文件的片段存储块更新缓存记录表中的片段存储块的状态信息;
(7)第一装置在断开与流媒体服务器的流媒体文件传输时停止对缓存数据表的更新,保存最新的缓存记录表;
(8)第一装置向第二装置发送RECORD请求,所述RECORD请求中包含流媒体文件的停止播放点,告知第二装置所要播放的起始时间,第二装置在对应的RECORD响应中打开数据链路;
(9)第一装置向第二装置发送SET_PARAMETER请求,告知第二装置该流媒体文件的地址信息(URL);
此外,在步骤(9)和步骤(10)之间增加步骤::第一装置将已保存的最新的缓存记录表发送给第二装置;
步骤(10)、(11)与上面的步骤10)、11)相同;
(12)第二装置根据地址信息和缓存记录表与流媒体服务器建立会话连接,经过TCP三次握手之后,根据缓存记录表中指示的片段存储块的状态信息向流媒体服务器请求流媒体文件的数据。
本发明实施例提供的流媒体文件播放的方法,一方面,有效地利用了存储在第一装置中的这部分流媒体文件的数据,减小了第二装置向网络侧服务器请求的数据量,提高了流媒体文件传输和播放的效率。另一方面,当流媒体文件从第一装置切换到第二装置上播放时,第二装置在与互联网媒体服务器进行交互以请求传输数据的同时,可以播放第一装置传输过来的这部分流媒体文件的数据,从而实现了媒体画面平稳的切换,避免了切换时缓冲和播放中断现象的出现。
图3A所述方法已对本发明实施例提供的播放流媒体文件的方法的进行了综合性描述。下面结合图3B对本发明实施例提供的播放流媒体文件的方法进行有针对性的说明,参照图3B,本实施例提供一种播放流媒体文件的方法,以家庭网络为例,该方法包括:
30、家庭网络设备1(第一装置)从流媒体服务器下载流媒体文件,并进行播放。
31、家庭网络设备1在接收到用户输入的切换指令时,向家庭网络设备2(第二装置)发送播放命令,以将正在家庭网络设备1上播放的流媒体文件切换到家庭网络设备2上进行播放。
在本实施例中,家庭网络设备1和家庭网络设备2同属于一个家庭网络的子网内,在执行切换指令前,家庭网络设备1已发现家庭网络设备2并且获取到家庭网络设备2的能力信息,确定家庭网络设备2有能力播放家庭网络设备1所获取的流媒体文件。
其中,切换指令的触发可以嵌入在家庭网络设备1的媒体播放器的控制列表中,以图标、菜单栏等形式出现。当用户想把在家庭网络设备1上播放的流媒体文件切换到家庭网络设备2上播放时,只需点击所对应的图标或者菜单栏,然后选择播放至的设备名称(家庭网络设备2),就完成了切换指令的触发。
32、家庭网络设备1获取该流媒体文件存储在其缓存内的的数据的信息。
所述数据的信息包括该流媒体文件存储在缓存中的数据的大小或者该流媒体文件存储在缓存中的数据对应的能够支撑播放的时间、该流媒体文件存储在缓存中的数据的起始时间点和截止时间点等等。
其中,起始时间点为家庭网络设备1接收到切换指令时该流媒体文件正在播放的时间戳2(即,第二位置信息的一种实现方式);截止时间点为该流媒体文件存储在缓存中的数据的最后一个完整的数据包所对应的时间戳1(即,第一位置信息的一种实现方式)。已下载的流媒体文件的能够播放的时长为时间戳1与时间戳2之差。
33、家庭网络设备1确定该流媒体文件存储在缓存中的数据量是否充足。
若不充足,则执行步骤331,家庭网络设备1将该流媒体文件的URL和时间戳2的值发送给家庭网络设备2,家庭网络设备2直接向网络侧的流媒体服务器请求时间戳2以后的流媒体文件。
具体而言,家庭网络设备1根据获取的数据的信息,判断该流媒体存储在缓存中的数据量是否充足。如果家庭网络设备1在缓存中存储的流媒体的数据量不充足,则无法保证该流媒体在切换到设备2上时能够保持流畅的播放,则后续将缓存中的数据通过家庭网络传输至设备2上的操作的作用并不显著。在这种情况下家庭网络设备1将该流媒体的URL和时间戳2发送给家庭网络设备2,家庭网络设备2可根据这两个参数直接向网络侧的媒体服务器请求获取该流媒体文件的数据。
若充足,则继续执行下面的步骤。
34、家庭网络设备1判断时间戳1的值是否是该流媒体文件的结束位置。
若是,则执行步骤341,家庭网络设备1将该流媒体文件存储在缓存中的数据通过家庭网络传输到家庭网络设备2的缓存中,家庭网络设备2可以播放接收到的数据。
举例来说,流媒体文件在家庭网络设备1上播放的过程中,当执行播放切换操作时,有可能该流媒体的后续剩余数据已经全部下载到家庭网络设备1的缓存之中。如果发生这种情况,则切换到家庭网络设备2上播放该流媒体文件时,此时,不需要家庭网络设备2向网络侧的流媒体服务器请求传输该流媒体文件的数据。
若时间戳1的值不是流媒体文件的结束位置,则家庭网络设备1执行继续执行步骤35和36。
35、家庭网络设备1将家庭网络设备1缓存中的该流媒体文件的数据通过家庭网络传输到家庭网络设备2的缓存中,并将该流媒体文件的URL和时间戳1的值发送给家庭网络设备2。
36、家庭网络设备2根据这两个参数信息向流媒体服务器请求获取时间戳1之后的该流媒体文件的数据。
需指出,对于下载的流媒体文件在时间上是不连续的情况,已在上文进行了说明,具体可参照上文中对下载的流媒体文件在时间上是不连续的情况的相应描述。
这里需要说明的是,在家庭网络设备2与网络侧的媒体服务器建立数据连接,进行交互和协商以及请求和获取流媒体的数据的同时,家庭网络设备2正在播放家庭网络设备1的缓存中所存储的数据时间戳1至时间戳2这段时间内的媒体内容。而当该媒体内容播放至时间戳1,即家庭网络设备1缓存中的数据耗尽时,家庭网络设备2与网络侧的媒体服务器的数据连接已经建立,并且可能已经获取到了从媒体服务器下载的后续的数据,这样不仅能够解决流媒体在网络设备之间切换时所引起的播放不流畅的问题,而且降低了在设备切换时互联网媒体节目发生缓冲和中断的概率。
需要说明的是,本发明实施例中的位置信息可以为时间上的位置,还可以为数据容量上的位置,本实施例只是以时间戳作为位置信息(即时间上的位置信息)为例来进行说明,当然,显而易见,还可以以数据容量作为位置信息,由于此情形与本实施例的情形类似,在此不作赘述。
同时需要指出的是,本实施例仅以流媒体文件的数据存储于缓存中为例进行说明,当然,显而易见,流媒体文件的数据亦可存储于临时文件中,本发明对此不作赘述。
如图4所示,本发明实施例还提供一种播放流媒体文件的装置40,所述装置40包括接收器41、存储器42、播放器43、处理器44和发送器45。其中:
接收器41,用于接收切换指令;
存储器42,用于缓存来自流媒体服务器的流媒体文件;
播放器43,用于播放来自流媒体服务器的流媒体文件;
处理器44,用于在所述接收器收到所述切换指令时,生成播放命令,并确定需要向第二装置发送的已下载的所述流媒体文件的至少一部分数据,其中,所述播放命令用于指示所述第二装置播放所述第一装置发送的所述至少一部分数据的部分或全部,所述至少一部分数据包括所述第一装置还未播放的数据;
发送器45,用于向第二装置发送所述播放命令,和所述处理器确定的已下载的所述流媒体文件的至少一部分数据。
本发明实施例提供的播放流媒体文件的装置,通过将已下载的所述流媒体文件的至少一部分数据发送给第二装置,且所述至少一部分数据包括所述第一装置还未播放的数据,这样,所述第二装置即可播放所述第一装置发送的所述至少一部分数据的部分或全部。如此一来,由于有效地利用了存储在第一装置中的这部分已下载的流媒体文件的数据,因而,减小了第二装置需要获取的该流媒体文件的数据量,提高了流媒体文件的传输和播放效率。
另外,在从第一装置切换到第二装置播放的过程中,在现有技术中,第二装置与互联网媒体服务器之间可能会经历一系列操作,包括建立连接、认证、能力协商等等,这些操作需要消耗一定的时间,从而导致在切换过程中会出现缓冲、延时等情况,造成媒体节目播放的中断,影响用户的观赏体验。而本发明实施例在此种情形下,当流媒体文件从第一装置切换到第二装置上播放时,第二装置可以在与流媒体服务器进行交互以请求传输数据的同时,播放第一装置传输过来的这部分已下载的流媒体文件的数据,从而可实现流媒体播放画面的平稳切换,避免了切换时缓冲和播放中断现象的出现。
可选地,在本发明的一个实施例中,所述处理器44还用于,若所述第一装置已下载的流媒体文件在时间上连续,确定所述已下载的流媒体文件的第一位置信息,所述第一位置信息指示了所述已下载的流媒体文件的最后一个完整的数据包的位置。
进一步地,所述发送器45还用于在所述已下载的流媒体文件不完整时,在所述接收器收到所述切换指令之后,向所述第二装置发送所述第一位置信息和所述已下载的流媒体文件的地址信息;所述第一位置信息和所述流媒体文件的地址信息用于所述第二装置向所述流媒体服务器获取所述至少一部分数据以外的部分或全部数据。
可选地,在本发明的另一个实施例中,所述接收器41还用于,在所述第一装置下载的流媒体文件在时间上不连续时,接收服务器发送的缓存记录表并进行更新;
所述发送器45还用于,在所述已下载的流媒体文件不完整时,在所述接收器收到所述切换指令之后,向所述第二装置发送所述更新的缓存记录表,和所述更新的缓存记录表中未缓存的片段存储块中的数据所对应的地址信息;
所述更新的缓存记录表和所述更新的未缓存的片段存储块的数据所对应的地址信息用于,所述第二装置从所述流媒体服务器获取所述至少一部分数据以外的部分或全部数据。
可选地,在本发明的又一个实施例中,所述接收器41还用于,在所述第一装置下载的流媒体文件在时间上不连续时,接收服务器发送的缓存记录表并进行更新;
所述发送器45还用于,在所述已下载的流媒体文件不完整时,在所述接收器收到所述切换指令之后,向所述服务器发送所述更新的缓存记录表和所述第二装置的地址信息,所述更新的缓存记录表和所述第二装置的地址信息用于所述流媒体服务器向所述第二装置发送所述更新的缓存记录表中未缓存的片段存储块中的数据。
在本发明播放流媒体文件的装置40的各个实施例中,所述发送器45可具体用于,在所述第一装置确定所述已下载的流媒体文件的数据量或时长满足预设条件时,向所述第二装置发送所述已下载的流媒体文件的至少一部分数据。
需要指出的是,在上述实施例中,所述播放流媒体文件的装置40和所述第二装置优选地可以在同一局域网内。上述方法实施例中的相关说明,也同样适用于上述装置的实施例,此处不再赘述。
如图5所示,本发明实施例还提供一种播放流媒体文件的装置50,所述装置50包括接收器51和播放器52。其中:
接收器51,用于接收第一装置在收到切换指令时发送的切换命令,和所述第一装置从流媒体服务器已下载的流媒体文件的至少一部分数据,所述至少一部分数据包括所述第一装置还未播放的数据;
播放器52,用于根据所述播放命令,播放所述第一装置发送的所述至少一部分数据的部分或全部。
本发明实施例提供的播放流媒体文件的装置,通过将已下载的所述流媒体文件的至少一部分数据发送给第二装置,且所述至少一部分数据包括所述第一装置还未播放的数据,这样,所述第二装置即可播放所述第一装置发送的所述至少一部分数据的部分或全部。如此一来,由于有效地利用了存储在第一装置中的这部分已下载的流媒体文件的数据,因而,减小了第二装置需要获取的该流媒体文件的数据量,提高了流媒体文件的传输和播放效率。
另外,在从第一装置切换到第二装置播放的过程中,在现有技术中,第二装置与互联网媒体服务器之间可能会经历一系列操作,包括建立连接、认证、能力协商等等,这些操作需要消耗一定的时间,从而导致在切换过程中会出现缓冲、延时等情况,造成媒体节目播放的中断,影响用户的观赏体验。而本发明实施例在此种情形下,当流媒体文件从第一装置切换到第二装置上播放时,第二装置可以在与流媒体服务器进行交互以请求传输数据的同时,播放第一装置传输过来的这部分已下载的流媒体文件的数据,从而可实现流媒体播放画面的平稳切换,避免了切换时缓冲和播放中断现象的出现。
可选地,在本发明的一个实施例中,所述接收器51还用于,在所述第一装置已下载的流媒体文件在时间上连续,且不完整时,接收所述第一装置发送的第一位置信息和所述已下载的流媒体文件的地址信息,并根据所述第一位置信息和所述已下载的流媒体文件的地址信息,向所述流媒体服务器获取所述至少一部分数据以外的部分或全部数据;
其中,所述第一位置信息指示了所述已下载的流媒体文件的最后一个完整的数据包的位置。
可选地,在本发明的另一个实施例中,所述接收器51还用于,在所述第一装置已下载的流媒体文件在时间上不连续,且不完整时,接收所述第一装置发送的的缓存记录表,和所述缓存记录表中未缓存的片段存储块中的数据所对应的地址信息,并根据所述缓存记录表和所述未缓存的片段存储块的数据所对应的地址信息,从所述流媒体服务器获取所述至少一部分数据以外的部分或全部数据。
可选地,在本发明的又一个实施例中,所述接收器51还用于,在所述第一装置已下载的流媒体文件在时间上不连续,且不完整时,接收所述流媒体服务器发送的缓存记录表中未缓存的片段存储块中的数据,所述缓存记录表为所述第一装置向服务器发送的。
在本发明播放流媒体文件的装置50的各个实施例中,所述接收器51具体用于,在所述第一装置确定所述已下载的流媒体文件的数据量或时长满足预设条件时,接收所述第一装置发送的所述已下载的流媒体文件的至少一部分数据。
其中,在上述实施例中,所述播放流媒体文件的装置50和所述第一装置优选地可以在同一局域网内。
指出的是,本发明实施例提供的播放流媒体文件的装置与本文中所述播放流媒体文件的方法相对应,由于在前文中已对播放流媒体文件的方法进行了详细描述,上述方法实施例中的相关说明,也同样适用于上述装置的实施例,此处不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,所述存储介质可以是只读存储器、磁盘或光盘等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。