发明内容
有鉴于此,本发明提供一种传输网络媒体数据的方法和系统,能提高终端设备播放远程媒体文件的流畅度,进而减少本地播放器的退出、甚至终端设备死机的现象。
为实现上述目的,本发明提供如下技术方案:一种传输网络媒体数据的方法,预先在数据传输设备中开辟数据缓冲区,该方法包括:
根据终端设备发送的访问远程媒体文件的请求,向所述远程媒体文件所在的服务器获取媒体数据;
将所述获取到的媒体数据保存到所述数据缓冲区;
将所述数据缓冲区中的媒体数据传输给终端设备。
优选的,所述数据传输设备包括:网络U盘,所述网络U盘为实现非网络节点的终端设备访问网络媒体文件的装置。
优选的,所述数据缓冲区包括:第一缓冲区和第二缓冲区;
所述根据终端设备发送的访问远程媒体文件的请求,向所述远程媒体文件所在的服务器获取媒体数据包括:接收终端设备读取媒体文件的文件头数据和文件尾数据的请求,向所述远程媒体文件所在的服务器发送获取所述文件头数据和文件尾数据的请求;
所述将所述获取到的媒体数据保存到所述数据缓冲区包括:当服务器返回文件头数据时,将返回的文件头数据保存到所述第一缓冲区;
当服务器返回文件尾数据时,将返回的文件尾数据保存到所述第二缓冲区。
优选的,所述根据终端设备发送的访问远程媒体文件的请求,向所述远程媒体文件所在的服务器获取媒体数据包括:
当终端设备对所述文件头数据和文件尾数据进行分析后,发出读取媒体文件进行解码播放的请求时,接收所述请求,向所述远程媒体文件所在的服务器获取媒体文件数据;
所述将所述获取到的媒体数据保存到所述数据缓冲区包括:清空所述第二缓冲区,将服务器返回的媒体文件数据保存到第二缓冲区。
优选的,所述向所述远程媒体文件所在的服务器获取媒体文件数据包括:
根据网络状况不断向服务器获取所述媒体文件数据,以便于保存到第二缓冲区中的媒体数据满足设备终端读取媒体文件数据的需求。
优选的,所述将所述数据缓冲区中的媒体数据传输给终端设备包括:
在终端设备对媒体文件数据进行解码播放过程中,将第二缓冲区中的媒体文件数据传输给终端设备。
优选的,在将所述第二缓冲区中的媒体文件数据传输给终端设备的过程中,当接收到终端设备读取文件头数据的请求时,将所述第一缓冲区中的文件头数据传输给终端设备。
对应本发明的方法,本发明还提供了一种传输网络媒体数据的系统,包括:
缓冲区单元,用于在数据传输设备中开辟数据缓冲区;
数据获取单元,用于根据终端设备发送的访问远程媒体文件的请求,向所述远程媒体文件所在的服务器获取媒体数据;
数据保存单元,用于将数据获取单元获取到的媒体数据保存到所述缓冲区单元开辟的数据缓冲区;
数据传输单元,用于将所述数据缓冲区中的媒体数据传输给终端设备。
优选的,所述数据传输设备包括:网络U盘,所述网络U盘为实现非网络节点的终端设备访问网络媒体文件的装置。
优选的,所述缓冲区单元,具体用于:在所述数据传输设备中开辟数据缓冲区,其中,所述数据缓冲区包括第一缓冲区和第二缓冲区;
所述数据获取单元包括:第一数据获取单元,用于接收终端设备读取媒体文件的文件头数据和文件尾数据的请求,向所述远程媒体文件所在的服务器获取所述文件头数据和文件尾数据;
所述数据保存单元包括:第一数据保存单元,用于当服务器返回文件头数据时,将返回的文件头数据保存到数据缓冲区中第一缓冲区;
第二数据保存单元,用于当服务器返回文件尾数据时,将返回的文件尾数据保存到数据缓冲区中第二缓冲区。
优选的,所述数据获取单元包括:第二数据获取单元,用于当终端设备对所述文件头数据和文件尾数据进行分析后,发出读取媒体文件数据进行解码播放的请求时,接收所述请求,向所述远程媒体文件所在的服务器发送获取媒体文件数据的请求;
所述数据保存单元包括:第三数据保存单元,用于清空所述第二缓冲区,将服务器返回的媒体文件数据保存到第二缓冲区。
优选的,所述第二数据获取单元具体为:用于当终端设备对所述文件头数据和文件尾数据进行分析后,发出读取媒体文件数据进行解码播放的请求时,接收所述请求,根据网络状况不断向服务器获取所述媒体文件数据,以便于保存到第二缓冲区中的媒体数据满足设备终端读取媒体文件数据的需求。
优选的,所述数据传输单元包括:第一数据传输单元,用于在终端设备对媒体文件进行解码播放过程中,将第二缓冲区中的媒体文件数据传输给终端设备。
优选的,所述数据传输单元包括:第二数据传输单元,用于在将所述第二缓冲区中的媒体文件数据传输给终端设备的过程中,当接收到终端设备读取文件头数据的请求时,将所述第一缓冲区中的文件头数据传输给终端设备。
经由上述的技术方案可知,与现有技术相比,本发明公开提供了一种传输网络媒体数据的方法和系统,该方法在接收到终端设备的数据请求,向该媒体文件所在的服务器获取媒体数据,并将服务器返回的媒体数据保存到数据缓冲区中,将数据缓冲区中的媒体数据传输给终端设备。这样将从服务器获取的媒体数据保存到数据缓冲区,然后将数据缓冲区中的媒体数据传输给终端设备可以减少因为网络状况变化导致终端设备不能比较稳定的读取媒体文件数据的现象,从而提高了终端设备播放远程媒体文件的流畅度。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
当非网络节点的终端设备通过数据传输设备访问远程文件时,经常会出现播放不流畅的现象。出现这种现象的原因有:终端设备通过本地播放器请求媒体数据时,请求的数据不能及时返回,播放器就会报错;或当网络状况较好时,通过网络传输的数据超过了本地播放器对数据进行解码播放的能力。
但终端设备读取本地保存的媒体数据,并通过播放器进行解码播放的过程中,就较少出现由于解码能力与数据传输速度不匹配造成的播放不流畅的现象。
基于以上分析,本发明实施例公开了一种传输网络媒体数据的方法和系统,以实现在终端设备通过数据传输设备访问远程媒体文件的过程中,提高终端设备播放远程媒体文件的流畅度。
参见图1,为本发明实施例的一种传输网络媒体数据的方法,该方法包括以下步骤:
步骤S101:预先在数据传输设备中开辟数据缓冲区;
其中,数据传输设备为实现非网络节点的终端设备访问远程网络中的媒体数据的设备。具体的,数据传输设备可以为网络U盘。具有USB磁盘访问能力的非网络节点设备可以通过数据传输设备访问远程服务器端的数据资源。例如,电视具有USB磁盘读取能力,但电视机没有处于网络中,不属于网络节点,因此电视机不能直接访问网络中的计算机中保存的媒体文件数据但通过这种数据传输设备可以实现电视机访问网络中的计算机中的媒体文件。
为了清楚的理解本发明,首先介绍通过数据传输设备实现终端设备访问远程媒体文件的过程,包括:将数据传输设备与终端设备的USB口相连;建立该数据传输设备与远程服务器的网络连接;数据传输设备将该远程服务器中的数据资源文件构造成相应的虚拟磁盘,终端设备可以识别该虚拟磁盘中的文件;当终端设备发出播放虚拟磁盘中文件的请求时,数据传输设备解析所述请求,将该请求转变成网络请求格式发送到该远程服务器;数据传输设备将远程服务器返回的相应数据资源发送给终端设备。这样非网络节点的终端设备就可以访问远程网络中的资源。
其中,本发明中所述的终端设备为具有USB磁盘访问能力、且不属于网络节点的设备终端。例如,以终端设备为电视机为例,将数据传输设备连接到电视机的USB接口上,然后数据传输设备与网络中的计算机建立网络连接,这样数据传输设备就将计算机中存储的数据资源映射成一个虚拟磁盘。电视机可以识别该磁盘中的文件信息,当用户通过电视机点击磁盘中的媒体文件,电视机发出读取该媒体文件数据的请求,数据传输设备就解析该请求,转换成网络中的计算机可以识别的请求指令,向该计算机发出获取该文件数据的请求。当计算机返回所述媒体文件数据时,数据传输设备将返回的媒体文件数据在返回给电视机,从而实现了电视机可以访问网络中的媒体文件。
为了提高终端设备播放网络媒体文件的流畅度,预先在数据传输设备中开辟数据缓冲区。
步骤S102:根据终端设备发送的访问远程媒体文件的请求,向所述远程媒体文件所在的服务器获取媒体数据;
当终端设备发送访问远程媒体文件的请求时,数据传输设备将解析该请求,并将该请求转换为网络请求格式,以便于该媒体文件所在的服务器识别该请求并返回与该请求对应的数据。
其中,终端设备发送的访问媒体文件的请求可以为多种。由于终端设备通过播放播放器播放媒体文件时,首先会分析文件头数据,然后读取文件尾数据并进行分析,因此终端设备会依次发出读取文件头数据和文件尾数据的请求,数据传输设备根据终端设备发出的具体请求,向远程媒体文件所在的服务器发出获取相应数据的请求,以便服务器响应该请求,将请求的数据返回给数据传输设备。其中,文件头数据和文件尾数据的大小本发明并不限制,可以根据需要进行设定。
在终端设备完成读取并分析该媒体文件的文件头数据和文件尾数据后,会发出读取媒体文件数据,以对该媒体文件进行解码播放。当接收到终端设备读取文件数据进行解码播放的请求时,数据传输设备就会向该服务器发出获取媒体文件数据的请求。
其中,在终端设备读取媒体文件数据进行解码播放的过程中,向所述远程媒体文件所在的服务器获取媒体数据,可以为:根据网络状况不断向服务器获取所述媒体文件数据,以便于保存到第二缓冲区中的媒体数据满足设备终端读取媒体文件数据的需求。也就是说,数据传输设备可以在终端设备播放媒体文件的过程中,提前获取终端设备后续需要播放的媒体数据,以便于保存到数据缓冲区中的媒体文件数据量可以满足终端设备请求数据进行读取播放的进度。
步骤S103:将所述获取到的媒体数据保存到所述数据缓冲区;
当服务器将终端设备所需的数据返回给数据传输设备时,数据传输设备并不是将该数据直接返回给终端设备,而是将该数据保存到预先开辟的数据缓冲区中。
步骤S104:将所述数据缓冲区中的媒体数据传输给终端设备。
将获取的数据保存到数据缓冲区中后,数据传输设备就可以将缓冲区中的保存的数据传输给终端设备,以便终端设备读取数据缓冲区中的数据。
其中,数据传输设备中数据缓冲区可以根据需要开辟。可以为在数据传输设备中开辟的数据缓冲区包括:第一缓冲区和第二缓冲区。
根据获取的数据的不同,可以将获取到的数据存入不同的缓冲区中。当终端设备发出读取媒体文件的文件头数据和文件尾数据的请求,向所述远程媒体文件所在的服务器获取所述文件头数据和文件尾数据。在该情况下,将所述获取到的媒体数据保存到所述数据缓冲区可以为:
当服务器返回文件头数据时,将返回的文件头数据保存到数据缓冲区中第一缓冲区;
当服务器返回文件尾数据时,将返回的文件尾数据保存到数据缓冲区中第二缓冲区。
终端设备可以读取第一缓冲区中的文件头数据,进行文件头的分析。当终端设备完成对文件头的分析后,读取第二缓冲区中文件尾数据,进行文件尾数据的分析。
当终端设备对所述文件头数据和文件尾数据进行分析后,发出读取媒体文件数据进行解码播放的请求时,数据传输设备接收所述请求,向所述远程媒体文件所在的服务器发送获取媒体文件数据的请求。在该情况下,将所述获取到的媒体数据保存到所述数据缓冲区包括:清空所述第二缓冲区,将服务器返回的媒体文件数据保存到第二缓冲区。
终端设备在对媒体文件的文件头数据和文件尾数据分析后,就会发出读取媒体文件数据进行解码播放的请求,数据传输设备将接收该请求,清空原来保存有文件尾数据的第二缓冲区,并向该媒体文件所在的服务器获取所述媒体文件数据,并将服务器返回的媒体文件数据保存在第二缓冲区。将第二缓冲区中保存的媒体文件数据传输给终端设备,以便于终端设备对媒体文件数据进行解码播放。在终端设备读取第二缓冲区中的媒体文件数据,进行解码播放的过程中,只要第二缓冲区仍有空闲,则不断向服务器请求媒体文件数据,并保存到第二缓冲区。这样,当网络状况好时,数据传输设备可以根据上次请求数据的偏移位置,提前请求终端设备后续可能请求的媒体文件数据,可以将服务器传输的数据保存在第二缓冲区;当网络状况不好时,由于第二缓冲区中保存有媒体文件数据,所以不会影响终端设备读取媒体文件数据,进行解码播放。从而可以减少终端设备在播放远程媒体文件时,出现的播放不流畅现象。
进一步的,当将所述第二缓冲区中的媒体文件数据传输给终端设备的过程中,当接收到终端设备读取文件头数据的请求时,将所述第一缓冲区中的文件头数据传输给终端设备。也就是说,在终端设备读取第二缓冲区中的媒体文件数据,进行解码播放时,如需要读取文件头数据,则可以直接读取第一缓冲区中保存的文件头数据,而不需要由数据传输设备再向服务器发送获取媒体文件的文件头的请求。从而提高了设备终端读取文件头的速度。
通过本发明在数据传输设备中开辟数据缓冲区,当终端设备发送读取媒体数据的请求时,根据该请求,数据传输设备向媒体文件所在的服务器获取相应的数据,并保存在数据缓冲区。终端设备可以直接读取缓冲区中的数据,终端设备读取缓冲区中的数据进行解码播放的过程,类似于终端设备播放本地媒体文件的情况,从而提高了终端设备播放远程媒体文件的流畅度。
终端设备通过播放器播放媒体文件时,首先需要读取并分析文件头数据,之后读取并分析文件尾数据,在终端设备完成文件头和文件尾数据的分析后,会发出从文件头开始顺序读取媒体文件进行解码播放的请求。为了更清楚的理解在终端设备对整个媒体文件进行解码播放的过程中,本发明的传输网络媒体数据的具体过程,参见图2,为本发明另一实施例的传输网络媒体数据的方法,该方法包括:
步骤S201:预先数据传输设备中开辟数据缓冲区,所述缓冲区包括:第一缓冲区和第二缓冲区;
步骤S202:根据终端设备发出的读取媒体文件文件头数据的请求,向所述媒体文件所在的服务器获取所述文件头数据;
步骤S203:将所述服务器返回的文件头数据保存到第一缓冲区;
步骤S204:将第一缓冲区中文件头数据传输给终端设备,以便终端设备读取并分析文件头;
步骤S205:接收终端设备发出的读取文件尾数据的请求,并向该服务器获取文件尾数据;
步骤S206:将所述服务器返回的文件头数据保存到第二缓冲区,以便终端设备读取文件尾数据;
步骤S207:在终端设备完成文件头和文件尾数据的分析后,接收设备终端播放媒体文件数据的请求,清空所述第二缓冲区,并向所述服务器发出获取媒体文件数据的请求;
步骤S208:将所述服务器返回的媒体文件数据存入第二缓冲区;
步骤S209:将第二缓冲区中的数据传输给终端设备,以便终端设备进行解码播放,在此过程中,如接收到终端设备读取文件头的请求,则将第一缓冲区中的文件头数据传输给终端设备。
本发明可以设置两个缓冲区,第一缓冲区用于保存文件头数据,这样当在终端设备播放媒体文件的过程中,如需读取文件头,则不需要再通过网络去服务器中读取。
对应本发明的方法,本发明还提供了一种传输网络媒体数据的系统,参见图3,该系统包括:
缓冲区单元301,用于在数据传输设备中开辟数据缓冲区;
数据获取单元302,用于根据终端设备发送的访问远程媒体文件的请求,向所述远程媒体文件所在的服务器获取媒体数据;
数据保存单元303,用于将数据获取单元获取到的媒体数据保存到所述缓冲区单元开辟的数据缓冲区;
数据传输单元304,用于将所述数据缓冲区中的媒体数据传输给终端设备。
其中,所述数据传输设备包括:网络U盘,所述网络U盘为实现非网络节点的终端设备访问网络媒体文件的装置。
其中根据终端设备发送的请求的不同,数据获取单元可以包括:第一数据获取单元,用于接收终端设备读取媒体文件的文件头数据和文件尾数据的请求,向所述远程媒体文件所在的服务器发送获取所述文件头数据和文件尾数据的请求;
第二数据获取单元,用于当终端设备对所述文件头数据和文件尾数据进行分析后,发出读取媒体文件数据进行解码播放的请求时,接收所述请求,向所述远程媒体文件所在的服务器发送获取媒体文件数据的请求。
进一步的,所述第二数据获取单元具体为:用于当终端设备对所述文件头数据和文件尾数据进行分析后,发出读取媒体文件数据进行解码播放的请求时,接收所述请求,根据网络状况不断向服务器获取所述媒体文件数据,以便于保存到第二缓冲区中的媒体数据满足设备终端读取媒体文件数据的需求。缓冲区单元开辟的数据缓冲区可以有多种形式,可以为:该数据缓冲区包括第一缓冲区和第二缓冲区。
根据以上开辟的缓冲区,所述数据保存单元具体可以包括:第一数据保存单元,用于当服务器返回文件头数据时,将返回的文件头数据保存到数据缓冲区中第一缓冲区;
第二数据保存单元,用于当服务器返回文件尾数据时,将返回的文件尾数据保存到数据缓冲区中第二缓冲区;
第三数据保存单元,用于清空所述第二缓冲区,将服务器返回的媒体文件数据保存到第二缓冲区。在终端设备完成文件头和文件尾数据的读取后,会发出读取媒体文件数据进行解码播放的请求,通过第三数据保存单元清空保存有文件尾数据的第二缓冲区,将服务器返回的媒体文件数据保存到第二缓冲区。
在第二缓冲区保存媒体文件数据后,可以将第二缓冲区中的媒体文件数据传输给终端设备,用于终端设备进行解码播放,对应的,所述数据传输单元包括:
第一数据传输单元,用于当终端设备对媒体文件进行解码播放过程中,将第二缓冲区中的媒体文件数据传输给终端设备。
进一步的,所述数据传输单元包括:第二数据传输单元,用于在将所述第二缓冲区中的媒体文件数据传输给终端设备的过程中,当接收到终端设备读取文件头数据的请求,将所述第一缓冲区中的文件头数据传输给终端设备。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。