发明内容
本发明的目的在于提供一种音频同步输出方法和系统,旨在解决现有使用音频线传输多声道同步输出技术的信号衰减问题,以及多播放终端系统在使用时的安装布线难度高的问题,以及音频文件数据在不同播放终端解码时造成的音频播放不同步的问题。
本发明解决其技术问题,采用的技术手段是:提供一种音频同步输出方法,包括以下步骤:
S1、控制终端从局域网内的所有播放终端中选择一个播放终端作为基准终端,将所述基准终端的时钟作为基准时间,并向所述基准终端发送同步指令;
S2、所述基准终端从所述局域网中的媒体服务器下载所述同步指令指示的音频信息,解码所述音频信息以生成音频数字信息,并向所述局域网中所述同步指令指示的多个播放终端发送时钟同步协调指令,所述时钟同步协调指令使能所述多个播放终端向所述基准终端发送时钟同步协调指令返回值,并将所述多个播放终端的时钟同步为所述基准时间;
S3、所述基准终端将所述音频数字信息发送到在规定时间内反馈时钟同步协调指令返回值的播放终端,以在播放终端上同步播放所述音频数字信息。
优选地,步骤S1包括以下子步骤:
S11、所述控制终端向所述局域网内的所有播放终端发送获取状态信息的请求,所述状态信息包括网络状态和信号强度;
S12、所述控制终端根据播放终端返回的状态信息,从所述局域网内的所有播放终端中选择一个播放终端作为基准终端,将所述基准终端的时钟作为基准时间;
S13、所述控制终端向所述基准终端发送同步指令。
优选地,步骤S3包括以下子步骤:
S31、所述基准终端向未在规定时间内反馈时钟同步协调指令返回值的播放终端重复发送所述时钟同步协调指令,并接收播放终端反馈的时钟同步协调指令返回值;
S32、所述基准终端将所述音频数字信息发送到所有在规定时间内反馈时钟同步协调指令返回值的播放终端,以在播放终端上同步播放音频信息。
优选地,子步骤S32包括下一级子步骤:
S321、所述基准终端将所述音频数字信息标记上时间戳;
S322、所述基准终端将标记上时间戳的音频数字信息发送到所有在规定时间内反馈时钟同步协调指令返回值的播放终端,且每次发送一个同步基准数大小的数据包,以在播放终端上同步播放音频信息。
优选地,步骤S3还包括子步骤:
S33、在规定时间内反馈时钟同步协调指令返回值的播放终端将数据包放在数据接收缓存区内,并按照数据包的时间戳的顺序排列数据包;
S34、在规定时间内反馈时钟同步协调指令返回值的播放终端(130)根据时间戳判断数据包是否在缓冲时间到达,若是则播放,若否则进行补数据包处理并丢弃超时到达的数据包。
优选地,所述方法还包括步骤:
S4、所述基准终端根据网络状态,以一定的时间间隔向在规定时间内反馈时钟同步协调指令返回值的播放终端发送所述时钟同步协调指令。
优选地,步骤S4包括以下子步骤:
S41、若网络状态高于或等于一阈值,所述基准终端则以第一时间间隔向在规定时间内反馈时钟同步协调指令返回值的播放终端发送所述时钟同步协调指令;
S42、若网络状态低于所述阈值,基准终端以及所有在规定时间内反馈时钟同步协调指令返回值的播放终端增加数据接收缓存区到同一大小,且所述基准终端以第二时间间隔向在规定时间内反馈时钟同步协调指令返回值的播放终端发送所述时钟同步协调指令,所述第一时间间隔小于所述第二时间间隔。
提供一种音频同步输出系统,包括连入局域网的控制终端、媒体服务器以及多个播放终端;其中,所述控制终端用于从所述局域网内的所有播放终端中选择一个播放终端作为基准终端,将所述基准终端的时钟作为基准时间,并向所述基准终端发送同步指令;所述基准终端用于在接收到所述同步指令后,从所述媒体服务器下载所述同步指令指示的音频信息,解码所述音频信息以生成音频数字信息,以及向所述局域网中所述同步指令指示的多个播放终端发送时钟同步协调指令,并接收各播放终端反馈的时钟同步协调指令返回值,将所述音频数字信息发送到在规定时间内反馈时钟同步协调指令返回值的播放终端,以在播放终端上同步播放所述音频数字信息。
优选地,所述媒体服务器包括:
第一存储模块,用于存储音频文件;
媒体共享模块,用于管理所述第一存储模块存储的音频文件、以及将所述第一存储模块指定路径下的音频文件共享到所述局域网。
优选地,所述播放终端包括:
第二控制模块,用于在接收到所述同步指令时,向所述局域网中所述同步指令指示的多个播放终端发送时钟同步协调指令;或者,在接收到所述同步协调指令时,向发送该同步协调指令的播放终端反馈时钟同步协调指令返回值;
解码模块,用于在所述第二控制模块接收到所述同步指令时,从所述第一存储模块中所述同步指令指示的路径下载音频信息,解码所述音频信息以生成音频数字信息;
时钟同步模块,用于在所述第二控制模块接收到所述时钟同步协调指令时,将本地时钟与发送该时钟同步协调指令的播放终端的时钟同步;
时间戳标记模块,用于在规定时间内接收到播放终端反馈的时钟同步协调指令返回值时,将所述音频数字信号标记时间戳后发送到在规定时间内反馈时钟同步协调指令返回值的播放终端,且每次发送一个同步基准数大小的数据包;
数据接收缓存区,用于接收标记有时间戳的数据包,并按照时间戳的顺序缓存数据包;
播放模块,用于播放在缓冲时间内到达的数据包。
本发明的音频同步输出方法和系统具有以下有益效果:通过时钟同步对时,极大的降低了各个播放终端之间的播放时间误差;又由于播放终端设备收到的是硬件可识别的音频数字信号,减少了对源音频文件数据解码的时间,同时保证了音频的高质量;再者,本发明是基于局域网(有线或者无线)的音频同步输出方法,减少了音频数据线的使用,降低了多播放终端系统的布线难度,从而提高了用户体验,并且降低了系统成本。
具体实施方式
以下结合附图和实施例对本发明做进一步的解释说明。
图1为本发明的音频同步输出系统100第一实施例的结构示意图,如图1所示,本发明的系统100包括连入局域网的控制终端110、媒体服务器120以及多个播放终端130。局域网可以是有线局域网,也可以是无线局域网。
其中,控制终端110用于从局域网内的所有播放终端130中选择一个播放终端130作为基准终端,将基准终端的时钟作为基准时间,并向基准终端发送同步指令。同步指令中指示了音频信息在媒体服务器120中的存储路径,以及需要同步输出音频信息的多个播放终端130(例如,播放终端130的IP地址,或者其他一切可用于指向播放终端130的信息)。
基准终端用于在接收到同步指令后,从媒体服务器120中同步指令指示的路径下载音频信息,解码音频信息以生成音频数字信息,以及向局域网中同步指令指示的多个播放终端130发送时钟同步协调指令,并接收各播放终端130反馈的时钟同步协调指令返回值,将音频数字信息发送到在规定时间内反馈时钟同步协调指令返回值的播放终端130。
接收到音频数字信息的播放终端130,同步播放音频数字信息。
参见图1-4,在本发明的系统100第一实施例中,控制终端110包括第一控制模块111。第一控制模块111包括适当的电路、逻辑和/或代码,用于使用搜索功能获得局域网内所有设备,向搜索到的设备发送获取状态的请求,并接收各设备返回的状态信息,状态信息包括网络状态、信号强度和设备信息,设备信息包括设备所含的模块信息。第一控制模块111根据设备所含的模块信息,将设备进行分类,例如,包含解码模块、播放模块的设备可以作为播放终端使用,包含媒体共享模块的设备就认为该设备可作为媒体服务器使用。对于作为播放终端使用的设备,返回的状态信息中还会包含播放状态。
第一控制模块111根据网络状态和信号强度从所有播放终端130中选择一个播放终端130作为基准终端,基准终端的时钟作为基准时间,并向基准终端发送同步指令。第一控制模块111可以优先选择网络状态为有线连接的播放终端130作为基准终端,有线连接的播放终端130的网络状态一般而言要优于无线连接的播放终端130,且网络状态也更稳定,其次,再选择信号强度最好的播放终端130为基准终端。也就是说,本发明中,可以选择网络状态最好的播放终端130为基准终端,若在所有播放终端130中,同时有多个播放终端130的网络状态最好,则从网络状态最好的播放终端130中选择信号最强的为基准终端。本发明中,不限于从所有播放终端130中选择基准终端的方法,例如,还可以基于到其他播放终端130距离最近的一播放终端130为基准终端。
在本发明的系统100的其他实施例中,控制终端110还可以包括媒体共享模块、解码模块、存储模块和播放模块(参见图2,虚线框部分)。第一控制模块111用于控制媒体共享模块、解码模块、存储模块和播放模块完成相应的工作。媒体共享模块用于管理存储模块中存储的文件资源,例如,对文件资源的保存、删除、修改和查询,还用于将存储模块指定路径下的文件资源共享到局域网。解码模块用于接收数据,并对数据进行解码。播放模块用于对解码后的数据,或者存储模块中存储的数据进行播放。
在本发明的系统100第一实施例中,媒体服务器120包括:
第一存储模块121,用于存储音频文件;
媒体共享模块122,包括适当的电路、逻辑和/或代码,用于管理第一存储模块121存储的音频文件、以及将第一存储模块121指定路径下的音频文件共享到局域网。
在本发明的系统100第一实施例中,播放终端130包括:
第二控制模块131,包括适当的电路、逻辑和/或代码,用于控制播放终端130中的各模块进行相应的工作,其在接收到同步指令时,向局域网中同步指令指示的多个播放终端130发送时钟同步协调指令,或者,在接收到同步协调指令时,向发送该同步协调指令的播放终端130反馈时钟同步协调指令返回值;
解码模块132,包括适当的电路、逻辑和/或代码,用于在第二控制模块131接收到同步指令时,从第一存储模块121中同步指令指示的路径下载音频信息,解码音频信息以生成音频数字信息;
时钟同步模块133,包括适当的电路、逻辑和/或代码,用于在第二控制模块131接收到时钟同步协调指令时,将本地时钟与发送该时钟同步协调指令的播放终端130的时钟同步;
时间戳标记模块134,包括适当的电路、逻辑和/或代码,用于在规定时间内接收到播放终端130反馈的时钟同步协调指令返回值时,将所述音频数字信号标记时间戳后发送到在规定时间内反馈时钟同步协调指令返回值的播放终端130,且每次发送一个同步基准数大小的数据包;
数据接收缓存区135,用于接收标记有时间戳的数据包,并按照时间戳的顺序缓存数据包;
播放模块136,用于播放在缓冲时间内到达的数据包。
在该实施例中,作为基准终端的播放终端130,其时间戳标记模块134将所述音频数字信号标记时间戳后发送到在规定时间内反馈时钟同步协调指令返回值的播放终端130,同时,其数据接收缓存区135也接收其时间戳标记模块134发送的标记了时间戳的音频数字信号。这样,基准终端以及所有在规定时间内反馈时钟同步协调指令返回值的播放终端130将同步输出音频信息。
在本发明的系统100的其他实施例中,播放终端130还可以包括存储模块和媒体共享模块(参见图4,虚线框所示部分),存储模块用于存储播放终端130的各类文件。媒体共享模块包括适当的电路、逻辑和/或代码,用于管理存储模块存储的文件、以及将存储模块指定路径下的文件共享到局域网。
图5为本发明的音频同步输出系统100一示例的结构示意图,如图5所示,在该局域网内有六个设备:一个控制终端110,一台媒体服务器120,四台播放终端130a-130d。其中,控制终端110可以是安装了控制软件的智能手机或者电脑。媒体服务器120为一台电脑,上面存有很多音乐文件。四个播放终端130a-130d可以是四个音箱(有源音箱或者无源音箱),并且,130a-130d中的一个或者多个还可以具有存储功能,即包括存储模块,例如插有一张SD卡,上面存有一些音乐文件。另外,130a-130d中的一个或者多个还可以有媒体共享模块。
图6为图5所示的系统100实现音频同步输出的流程图,结合图5和图6,工作流程为:控制终端110通过第一控制模块的搜索功能选择了局域网内网络状态最好的音箱(播放终端130d)作为基准终端;用户通过控制终端110发出同步指令,让四个音箱130a-130d同步播放电脑(媒体服务器120)上的一首mp3歌曲:x.mp3;播放终端130d(基准终端)向其他三个播放终端(播放终端130a、130b、130c)发送时钟同步协调指令,并在规定时间(例如50毫秒)内都分别得到了这三个播放终端130a、130b、130c的命令反馈(时钟同步协调指令返回值),这三个播放终端130a、130b、130c被认定为“音频可同步输出的设备”,同时这三个播放终端130a、130b、130c将与基准终端130d同步时钟;播放终端130d(基准终端)从电脑(媒体服务器120)上开始下载x.mp3,同时开始进行解码,并将解码后的数字信号标记上时间戳,发送给播放终端130a、130b、130c作为数据缓存;播放终端130a、130b、130c接收到标记有时间戳的数据包以后,将数据包放在数据接收缓存区内,按照时间戳的顺序排列。如果有些数据包在缓冲时间内没有到达要指定播放终端,那么根据时间戳的顺序进行补数据包的处理,如果得到数据包的时间戳已过时,将进行丢数据包处理。在播放终端130d(基准终端)发送音频数据包的同时启动时钟同步校正机制,根据数据包发送过程中的数据反馈,判断播放终端130a、130b、130c的网络状态,若网络状态良好,则以10秒(第一时间间隔,可自定,此处为举例)为时间间隔向播放终端130a、130b、130c发送时钟同步协调指令,播放终端130a、130b、130c很快就能进行一次同步校正,从而可使音频同步输出的较为精准。若网络状态不好,以1分钟(第二时间间隔,可自定,此处为举例)为时间间隔向播放终端130a、130b、130c发送时钟同步协调指令,同时在当前音频数据包发送完之后、下一个音频数据包发送之前将所有播放终端130a-130d的缓存区统一增加到相同大小,从而降低了当前网络负载,节约了网络的传输流量。播放终端130a-130d开始同时播放。
图7为本发明的音频同步输出方法第一实施例的流程图,如图7所示,在本实施例中,本发明的方法包括以下步骤:
S1、控制终端110从局域网内的所有播放终端130中选择一个播放终端130作为基准终端,将基准终端的时钟作为基准时间,并向所述基准终端发送同步指令;
S2、基准终端从局域网中的媒体服务器120下载所述同步指令指示的音频信息,解码音频信息以生成音频数字信息,并向局域网中同步指令指示的多个播放终端130发送时钟同步协调指令,时钟同步协调指令使能多个播放终端130向基准终端发送时钟同步协调指令返回值,并将多个播放终端130的时钟同步为基准时间;
S3、基准终端将音频数字信息发送到在规定时间内反馈时钟同步协调指令返回值的播放终端130,以在播放终端130上同步播放所述音频数字信息。
在本实施例中,步骤S1包括以下子步骤:S11、控制终端110向局域网内的所有播放终端130发送获取状态信息的请求,状态信息包括网络状态和信号强度;S12、控制终端110根据播放终端130返回的状态信息,从局域网内的所有播放终端130中选择一个播放终端130作为基准终端,将基准终端的时钟作为基准时间;S13、控制终端110向基准终端发送同步指令。
具体地,在步骤S11中,控制终端110使用搜索功能获得局域网内所有设备,向搜索到的设备发送获取状态的请求,并接收各设备返回的状态信息,状态信息包括网络状态、信号强度和设备信息,设备信息包括设备所含的模块信息。控制终端110根据设备所含的模块信息,将设备进行分类,例如,包含解码模块、播放模块的设备可以作为播放终端使用,包含媒体共享模块的设备就认为该设备可作为媒体服务器使用。对于作为播放终端使用的设备,返回的状态信息中还会包含播放状态。
在步骤S12中,控制终端110根据网络状态和信号强度从所有播放终端130中选择一个播放终端130作为基准终端,基准终端的时钟作为基准时间,并向基准终端发送同步指令。第一控制模块111可以优先选择网络状态为有线连接的播放终端130作为基准终端,有线连接的播放终端130的网络状态一般而言要优于无线连接的播放终端130,且网络状态也更稳定,其次,再选择信号强度最好的播放终端130为基准终端。也就是说,本发明中,可以选择网络状态最好的播放终端130为基准终端,若在所有播放终端130中,同时有多个播放终端130的网络状态最好,则从网络状态最好的播放终端130中选择信号最强的为基准终端。本发明中,不限于从所有播放终端130中选择基准终端的方法,例如,还可以基于到其他播放终端130距离最近的一播放终端130为基准终端。
在本实施例中,步骤S2中,基准终端在接收到同步指令后,从媒体服务器120的特定路径下载的音频信息,并解码音频信息,从而生成音频数字信息,同时,基准终端还会同步指令指示的多个播放终端130发送时钟同步协调指令。时钟同步协调指令有两个作用:第一,时钟同步协调指令在发送到播放终端130时,会使播放终端130反馈一个时钟同步协调指令返回值;第二,播放终端130会利用时钟同步输出指令中所带的时钟信息参数将本地时钟与基准时间同步。
在本实施例中,步骤S3中,若基准终端在规定时间内接收到播放终端130反馈的时钟同步协调指令返回值,则认定该播放终端为“音频可同步输出的设备”,将那些未能在规定时间内反馈时钟同步协调指令返回值的播放终端130(可以是超时返回或者没有返回)认定为“不可同步输出的设备”。其中,规定时间一般设定为50毫秒以内,该条件可做微调,但会控制在100毫秒以内,因为一般声音延迟100毫秒以内,人耳无法分辨声音是否同步,否则将明显听出声音不同步,形成重叠声。考虑到网络状态动态改变,基准终端可以向返回失败的播放终端130重复发送几次时钟同步协调指令,若在规定次数内、规定时间内接收到时钟同步协调指令返回值,则将之前返回失败的播放终端130认为“音频可同步输出的设备”。基准终端将音频数字信息标记上时间戳后发送到同步指令指示的多个“音频可同步输出的设备”作为数据缓存,且每次都发送一个同步基准数大小的数据包。其中,同步基准数是根据播放的音频信息的参数计算得出的一个以字节为单位的同步数据包,播放的音频信息的参数包括采样率、量化精度和播放时间长度,以1024个字节作为一个数据包,可以保证在无线网络默认设置下不分割数据包发送(该单位可根据无线设置参数做调整),这样有利于在利用无线网络发送数据包的时候提高发送效率。
在步骤S3中,“音频可同步输出的设备”接收到标记有时间戳的数据包以后,将数据包放在数据接收缓存区内,按照时间戳的顺序排列。由于这些“音频可同步输出的设备”时钟已通过时钟同步协调指令调整至与基准时间同步,所以按顺序播放缓存区内“时间戳+缓冲时间”不小于“本地时钟时间”的数据包(即在缓冲时间内到达的数据包),就可形成人耳无法分辨的音频同步输出(播放)。如果有些数据包在缓冲时间内没有到达指定的“音频可同步输出的设备”,那么“音频可同步输出的设备”根据时间戳的顺序进行补数据包的处理。补数据包可选择两种方式:1、补静音数据包;2、通过前一个数据包和后一个数据包差值计算出一个替补数据包。如果得到数据包的“时间戳+缓冲时间”超过“本地时钟时间”,将该数据包丢弃。
图8为本发明的音频同步输出方法第二实施例的流程图,该实施例与本发明的方法第一实施例的区别在于,本发明的方法还包括步骤:
S4、基准终端根据网络状态,以一定的时间间隔向在规定时间内反馈返回值的播放终端130发送时钟同步协调指令。
具体地,基准终端在发送数据包的同时还启动时钟同步校正机制,也就是数据包发送过程中根据数据包的反馈,判断各“音频可同步输出的设备”的网络状态,若网络状态高于或等于一阈值,表明此时网络状态良好,则以第一时间间隔(较短的时间间隔)向“音频可同步输出的设备”发送时钟同步协调指令,各“音频可同步输出的设备”很快就能进行一次同步校正,从而可使音频同步输出更为精准。若网络状态低于该阈值,表明此时网络状态不好,在当前音频数据包发送完之后、下一个音频数据包发送之前,将所有“音频可同步输出的设备”的缓存区统一增加到相同大小,同时基准终端以第二时间间隔(较长的时间间隔)向“音频可同步输出的设备”发送时钟同步协调指令,从而降低了当前网络负载,节约了网络的传输流量。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。