一种音频数据流的传输方法及装置与流程

文档序号:14943080发布日期:2018-07-13 21:34

本发明涉及流媒体领域中的数据处理技术,具体涉及一种音频数据流的传输方法及装置。



背景技术:

随着社会财富的积累以及生活节奏的加快,人们对优秀快捷的生活品质提出更高的要求,动听的音乐则是生活中不可缺少的一部分。然而,在实际中,人们越来越关注音频伴随有视频时的体验。若音频伴随有视频时存在的播放延迟过大,就会导致音频与视频播放的不同步,典型的,音频滞后于视频播放,这将给用户带来糟糕的使用体验。随着用户可选的音源输入越来越丰富,也就要求现有音频设备需要提供对多音源的支持,多音源的支持势必会导致系统复杂度上升,也势必会引入更多的数据缓冲区来实现对多音源的支持;而系统复杂度的上升,数据缓冲区的增加都会直接或间接导致音频同步播放延时的增加。因此,在音频伴随有视频的情况下的播放延迟是目前迫切需要解决的问题。



技术实现要素:

有鉴于此,本发明期望提供一种音频数据流的传输方法及装置,能降低音频伴随有视频时的播放延时。

为达到上述目的,本发明的技术方案是这样实现的:

根据本发明的第一方面,本发明提供了一种音频数据流的传输方法,应用于第一设备,第一设备检测到输入音源时,建立第一虚拟输入链路和第一输出链路,所述方法还包括:

基于所述第一虚拟输入链路从与所述输入音源对应的音频输入缓冲区获得音频数据填充到数据源音频缓冲区中;

所述第一设备基于所述第一输出链路从所述数据源音频缓冲区中获得音频数据通过第一音频输出缓冲区输出。

上述方案中,可选地,所述基于所述第一虚拟输入链路从与所述输入音源对应的音频输入缓冲区获得音频数据填充到数据源音频缓冲区中的同时,所述方法还包括:

所述第一设备和与所述第一设备处于同一组的第二设备建立数据传输链路,通过所述数据传输链路向所述第二设备传输从与所述输入音源对应的音频输入缓冲区获取的音频数据。

上述方案中,可选地,所述基于所述第一虚拟输入链路,从与所述输入音源对应的音频输入缓冲区获得音频数据填充到数据源音频缓冲区之前,所述方法还包括:

通过所述第一虚拟输入链路使能第一设备中的第一音频输入器件;

所述第一音频输入器件开始执行向与所述输入音源对应的音频输入缓冲区写入音频数据的操作。

上述方案中,可选地,所述基于所述第一输出链路从所述数据源音频缓冲区中获得音频数据通过第一音频输出缓冲区输出之前,还包括:

第一设备中的第一混音器将从与所述输入音源对应的数据源音频缓冲区获取的音频数据,与从其他音源对应的数据源音频缓冲区获取的音频数据,进行混音;

将混音后的音频数据写入到第一音频输出缓冲区中。

上述方案中,可选地,所述基于所述第一输出链路从所述数据源音频缓冲区中获得音频数据通过第一音频输出缓冲区输出,包括:

满足预设输出条件时,所述第一输出链路使能所述第一设备中的第一音频输出器件;

所述第一音频输出器件开始执行从所述第一音频输出缓冲区输出音频数据流的操作。

上述方案中,可选地,所述输入音源来自于以下音源至少之一:

本地录音音源、蓝牙音源、通过通用串行总线(USB,Universal Serial Bus)输入的音源、通过AirPlay无线技术播放的视频的音源、通过数字生活网络联盟(DLNA,Digital Living Network Alliance)方式播放的视频的音源。

根据本发明的第二方面,本发明提供了一种音频数据流的传输方法,应用于第二设备,第二设备检测到与所述第二设备处于同一组的第一设备将所述第一设备检测到的输入音源作为所述组的输入音源时,建立第二输出链路;所述方法还包括:

基于所述第二输出链路建立与所述第一设备的数据传输链路,以通过所述数据传输链路接收由所述第一设备传输的从与所述输入音源对应的音频输入缓冲区获取的音频数据;

所述第二设备基于所述第二输出链路从与数据传输链路对应的数据传输缓冲区获得音频数据通过第二音频输出缓冲区输出。

上述方案中,可选地,所述基于所述第二输出链路从所述数据传输链路中获得音频数据通过第二音频输出缓冲区输出之前,所述方法还包括:

第二设备中的第二混音器从与数据传输链路对应的数据传输缓冲区获得音频数据;

将从所述数据传输缓冲区获得的音频数据,与从其他音源对应的数据源音频缓冲区获取的音频数据,进行混音;

将混音后的音频数据写入到第二音频输出缓冲区中。

上述方案中,可选地,所述基于所述第二输出链路从与所述输入音源数据传输链路对应的数据传输缓冲区获得音频数据通过第二音频输出缓冲区输出,包括:

满足预设输出条件时,所述第二输出链路使能所述第二设备中的第二音频输出器件;

所述第二音频输出器件开始执行从所述第二音频输出缓冲区输出音频数据流的操作。

根据本发明的第三方面,本发明提供了一种音频数据流的传输装置,应用于第一设备,包括第一链路管理器,用于检测到输入音源时,建立第一虚拟输入链路和第一输出链路;所述装置还包括:

第一处理器,用于基于所述第一虚拟输入链路,从与所述输入音源对应的音频输入缓冲区获得音频数据填充到数据源音频缓冲区中;

第一音频输出器件,用于基于所述第一输出链路从数据源音频缓冲区中获得音频数据通过第一音频输出缓冲区输出。

上述方案中,可选地,所述第一处理器,还用于:

与第二设备建立数据传输链路;其中,所述第二设备与所述第一设备处于同一组;

通过所述数据传输链路向所述第二设备传输从与所述输入音源对应的音频输入缓冲区获取的音频数据。

上述方案中,可选地,所述装置还包括:

第一音频输入器件;

所述第一处理器,还用于:在基于所述第一虚拟输入链路从与所述输入音源对应的数据源音频缓冲区获取音频数据之前,通过所述第一虚拟输入链路使能所述第一音频输入器件,使所述第一音频输入器件开始执行向与所述输入音源对应的音频输入缓冲区写入音频数据的操作。

上述方案中,可选地,所述装置还包括:

第一混音器,用于将从与所述输入音源对应的数据源音频缓冲区获取的音频数据,与从其他音源对应的数据源音频缓冲区获取的音频数据,进行混音;将混音后的音频数据写入到第一音频输出缓冲区中。

上述方案中,可选地,所述第一音频输出器件,还用于:

满足预设输出条件时,若接收到所述第一输出链路的使能操作,开始执行从所述第一音频输出缓冲区输出音频数据流的操作。

根据本发明的第四方面,本发明提供了一种音频数据流的传输装置,应用于第二设备,包括:第二链路管理器,用于检测到与所述第二设备处于同一组的第一设备将所述第一设备检测到的输入音源作为所述组的输入音源时,建立第二输出链路;所述装置还包括:

第二处理器,用于基于所述第二输出链路建立与所述第一设备的数据传输链路;通过所述数据传输链路接收由所述第一设备传输的从与输入音源对应的音频输入缓冲区获取的音频数据;

第二音频输出器件,用于基于所述第二输出链路从与数据传输链路对应的数据传输缓冲区获得音频数据通过第二音频输出缓冲区输出。

上述方案中,可选地,所述装置还包括:

第二混音器,用于从与数据传输链路对应的数据传输缓冲区获得音频数据;将从所述数据传输缓冲区获得的音频数据,与从其他音源对应的数据源音频缓冲区获取的音频数据,进行混音;将混音后的音频数据写入到第二音频输出缓冲区中。

上述方案中,可选地,所述第二音频输出器件,还用于:

满足预设输出条件时,若接收到所述第二输出链路的使能操作,开始执行从所述第二音频输出缓冲区输出音频数据流的操作。

本发明提供的音频数据流的传输方法及装置,第一设备检测到输入音源时,建立第一虚拟输入链路和第一输出链路;基于所述第一虚拟输入链路从与所述输入音源对应的音频输入缓冲区获得音频数据填充到数据源音频缓冲区中;所述第一设备基于所述第一输出链路从数据源音频缓冲区中获得音频数据通过第一音频输出缓冲区输出。这样,由于第一设备是直接从与输入音源对应的数据源音频缓冲区获取音频数据,能够有效减少音频流所经过的缓冲区,也避免了使用多线程时因进程调度而引入的音频流延时,能降低音频伴随有视频时的播放延时,以给用户好的体验。

附图说明

图1为本发明提供的Multi-room模式下播放本地录音音源时,主设备与从设备之间的一种音频数据流处理流程示意图;

图2为本发明实施例提供的一种音频数据流的传输方法的实现流程示意图;

图3为本发明实施例提供的另一种音频数据流的传输方法的实现流程示意图;

图4为本发明实施例提供的Multi-room模式下播放本地录音音源时,主设备与从设备之间的另一种音频数据流处理流程示意图;

图5为本发明实施例提供的一种音频数据流的传输装置的组成结构示意图;

图6为本发明实施例提供的另一种音频数据流的传输装置的组成结构示意图;

图7为本发明实施例提供的音频数据流的传输系统的一种交互示意图。

具体实施方式

为了更好的解释本发明,下面,先介绍一种在多房间(Multi-room)模式下播放本地录音音源时,多房间音频系统中的主设备与从设备的音频数据流是如何传输的方案。这里,本地录音音源即输入音源;所述主设备即第一设备,是指本地录音音源侧的设备;从设备是指多房间音频系统中除所述主设备之外的其他设备,这里,从设备均可独立称为第二设备。

图1为本发明提供的Multi-room模式下播放本地录音音源时,主设备与从设备之间的一种数据流处理流程示意图,为了方便描述,下面仅以主设备有两路音源输入情况下为例,进行说明。理想情况下,Multi-room模式下,多房间音频系统中的各个设备同时播放同一音频流。

从图1的左半部分可以看出,主设备(Master device)给出了两路音源输入(数据源2音频缓冲区和数据源1音频缓冲区)情况下对数据流的处理流程,其中,数据源2表示需要作为Multi-room音源的本地录音音源。一般的,随着嵌入式设备的发展,嵌入式操作系统被广泛应用到音响设备中,为了系统的稳定性和可扩展性,针对输出链路:该类设备通常提供混音器以实现多音源的支持,混音器负责从各个数据源所对应的数据源音频缓冲区获得音频数据进行混音操作,并将混音后的数据写入到音频输出缓冲区中以供系统硬件输出设备输出,而数据源音频缓冲区中的音频数据由各个数据源独立填充;针对输入链路:该类设备提供录音线程从音频输入缓冲区获得音频数据填充到录音数据音频缓冲区中,具体的,录音应用程序通过读取录音数据音频缓冲区中的数据获得具体的录音数据。进一步地,在Multi-room模式下,将本地录音作为Multi-room音源时的数据处理流程,包括:数据源2从录音数据音频缓冲区获得录音数据块,数据源2将获得的录音数据块写入到数据源2音频缓冲区中,以供混音器混音输出,数据源2将获得的录音数据块通过数据传输通道传输到从设备(client device);又因为录音线程和混音操作线程是不同的线程,势必会存在进程调度相关延迟,所以为了增加输入链路到输出链路之间数据传输的稳定性,数据源2对数据的处理过程中也可能会引入数据源缓冲区来维持链路的稳定性。

从图1的右半部分可以看出,从设备端的混音器从数据源音频数据缓冲区获得数据,写入音频输出缓冲区。为了维护系统的一致性,一般地,从设备端在作为Multi-room模式时也会被单独作为一个音源来处理,其对应音源从数据传输链路获得音频数据块填入数据源音频缓冲区中,供混音器混音输出使用。

基于嵌入式操作系统,基于多音源的支持,音响设备提供了较多层级的缓冲区结构,如图1所示,由于缓冲区过多,这些势必会增加Multi-room模式下的各个设备同步播放延时。因此,上述主设备与从设备之间的数据流处理方案不够理想,Multi-room模式下的各个设备同步播放延时较大。

下面结合附图和具体实施例对本发明的技术方案进一步详细阐述。

需要说明的是,本发明提供的音频数据流的传输方法及装置的技术方案,可应用的系统不限于多房间系统,还可应用于单房间系统,如可应用于具有多个音箱的单房间系统中。

需要说明的是,本发明提供的音频数据流的传输方法及装置的技术方案,应用于两个或两个以上的设备时,所述两个或两个以上的设备处于同一组内。例如,当两个音箱处于同一组内,无论是在多房间系统、还是在单房间系统,都适用本发明提供的技术方案。

这里,所述多房间系统包括但不限于多房间音频系统。例如,还可以应用于其他多房间系统中,如多房间视频系统等。

需要说明的是,本发明提供的音频数据流的传输方法及装置的技术方案,可应用的系统不限于包括多个音箱,还可包括单个音箱。

实施例一

图2为本发明实施例提供的一种音频数据流的传输方法的实现流程示意图,本实施例中的音频数据流的传输方法应用于能播放同一个音频的组中,在本发明一个优选实施例中,所述音频数据流的传输方法主要包括以下步骤:

步骤201:第一设备检测到输入音源时,建立第一虚拟输入链路和第一输出链路。

可选地,所述输入音源来自于以下音源至少之一:

本地录音音源、蓝牙音源、通过USB输入的音源、通过AirPlay无线技术播放的视频的音源、通过DLNA方式播放的视频的音源或其他。

在一可选实施方式中,第一设备检测到将本地录音音源输入音源时,建立第一虚拟输入链路和第一输出链路。

这里,所述第一设备是将检测到的输入音源作为组的输入音源的设备。

其中,所述组中可仅包括一个设备,也可包括多个设备。

当所述组中仅包括一个设备时,那么,该组中仅包括的这个设备称之为第一设备。

当所述组中包括多个设备时,所述组中的各个设备之间能够通过网络连接。其中,所述网络连接可以是有线连接,也可以是无线连接。

比如,有A、B、C、D、E五个设备,这五个设备可以作为一个组播放同一个音频,其中,将A设备侧的输入音源作为该组的输入音源,那么,A设备可称之为组中的第一设备。

本实施例中,所述第一设备是对音频数据流能执行读取、混音和输出操作的设备,如音响设备。当输入音源为本地录音音源时,所述第一设备还负责执行录音操作。

示例性地,本地录音音源由终端侧提供,所述终端与所述第一设备可通过音频线相连接,所述终端播放多媒体数据时,通过所述音频线将所述多媒体数据对应的音频数据通过所述音频线传输至所述第一设备,作为所述第一设备的本地录音音源。

步骤202:基于所述第一虚拟输入链路从与所述输入音源对应的音频输入缓冲区获得音频数据填充到数据源音频缓冲区中。

作为一种可选实施方式,所述基于所述第一虚拟输入链路,从与所述输入音源对应的音频输入缓冲区获得音频数据填充到数据源音频缓冲区之前,所述方法还包括:

通过所述第一虚拟输入链路使能第一设备中的第一音频输入器件;

所述第一音频输入器件开始执行向与所述输入音源对应的音频输入缓冲区写入音频数据的操作。

这里,第一虚拟输入链路在将第一设备检测到的输入音源作为组的输入音源时,使能有效。

示例性地,第一虚拟输入链路按照正常的输入链路使能第一设备中的第一音频输入器件,并开始第一音频输入器件的录音操作,也即是使能音频输入硬件,开始其向与所述输入音源对应的音频输入缓冲区写入音频数据的操作;第一虚拟输入链路只是完成数据链路的启动,并不对音频数据进行真正的操作。

在一具体实施方式中,所述基于所述第一虚拟输入链路,从与所述输入音源对应的音频输入缓冲区获得音频数据填充到数据源音频缓冲区之前,所述方法还包括:

当所述输入音源为本地录音音源时,

通过所述第一虚拟输入链路使能第一设备中的第一音频输入器件;

所述第一音频输入器件开始执行录音操作,并执行向与所述输入音源对应的音频输入缓冲区写入录音数据的操作。

步骤204:所述第一设备基于所述第一输出链路从数据源音频缓冲区中获得音频数据通过第一音频输出缓冲区输出。

作为一种可选实施方式,所述基于所述第一输出链路从数据源音频缓冲区中获得音频数据通过第一音频输出缓冲区输出之前,还包括:

第一设备中的第一混音器将从与所述输入音源对应的数据源音频缓冲区获取的音频数据,与从其他音源对应的数据源音频缓冲区获取的音频数据,进行混音;

将混音后的音频数据写入到第一音频输出缓冲区中。

作为一种可选实施方式,所述基于所述第一输出链路从数据源音频缓冲区中获得音频数据通过第一音频输出缓冲区输出,包括:

满足预设输出条件时,所述第一输出链路使能所述第一设备中的第一音频输出器件;

所述第一音频输出器件开始执行从所述第一音频输出缓冲区输出音频数据流的操作。

这里,第一输出链路在将第一设备检测到的输入音源作为组的输入音源时,使能有效。

示例性地,第一输出链路按照正常的输出链路打开第一设备中的第一音频输出器件,并开始第一音频输出器件的输出操作,也即是使能音频输出硬件,开始其从所述第一音频输出缓冲区输出音频数据流的操作。

这里,所述预设输出条件为:输出音频数据流的触发条件。

可选地,所述预设输出条件可以为:硬件输出时钟到达。

示例性地,当所述组中仅包括一个设备时,那么,该组中仅包括的这个设备称之为第一设备;具体的,当第一设备的硬件输出时钟到达时,所述第一设备开始向外输出音频数据流。

示例性地,当所述组中包括多个设备时,所述第一设备与处于同一组中的第二设备的输出时间相同,具体的,当所述第一设备与处于同一组中的第二设备在各自的硬件输出时钟到达时,所述第一设备与处于同一组中的第二设备,同时开始向外输出相同的音频数据流。

当然,所述预设输出条件还可以是其他条件,在此不再列举。

可选地,上述方案中,所述方法还包括:

步骤203:基于所述第一虚拟输入链路与第二设备建立数据传输链路,通过所述数据传输链路向所述第二设备传输从与所述输入音源对应的音频输入缓冲区获取的音频数据;其中,所述第二设备与所述第一设备处于同一组。

需要说明的是,本实施例中,步骤203与步骤202可以同时进行,步骤203也可以在步骤202之前进行。

进一步地,所述通过所述数据传输链路向所述第二设备传输从与所述输入音源对应的音频输入缓冲区获取的音频数据之后,所述方法还包括:

所述第二设备通过所述数据传输链路接收由所述第一设备传输的从与输入音源对应的音频输入缓冲区获取的音频数据;

所述第二设备中的第二混音器从与所述数据传输链路对应的数据传输缓冲区获得音频数据;将从所述数据传输缓冲区获得的音频数据,与从其他音源对应的数据源音频缓冲区获取的音频数据,进行混音;将混音后的音频数据写入到第二音频输出缓冲区中;

满足预设输出条件时,所述第二设备中的第二音频输出器件开始执行从所述第二音频输出缓冲区输出音频数据流的操作。

这样,所述组中的第二设备接收第一设备通过数据传输链路传输的从与所述输入音源对应的音频输入缓冲区获取的音频数据,而无需从所述第二设备侧的数据源音频缓冲区获取音频数据,减少了缓冲区结构,也能降低各个设备的音频同步播放延时。

采用本发明实施例所述技术方案,由于第一设备是直接从与输入音源对应的数据源音频缓冲区获取音频数据,能够有效减少音频流所经过的缓冲区,也避免了使用多线程时因进程调度而引入的音频流延时,能降低音频伴随有视频时的播放延时。另一方面,所述组中的第二设备接收第一设备通过数据传输链路传输的从与所述输入音源对应的音频输入缓冲区获取的音频数据,而无需从所述其它设备侧的数据源音频缓冲区获取音频数据,减少了缓冲区结构,也能降低同一组中各个设备的音频同步播放延时。

举例来说,组中包括一个音响设备,即第一设备,当输入音源为通过AirPlay无线技术播放的视频的音源、或通过DLNA方式播放的视频的音源时,第一设备检测到输入音源时,建立第一虚拟输入链路和第一输出链路;基于所述第一虚拟输入链路从与所述输入音源对应的音频输入缓冲区获得音频数据填充到数据源音频缓冲区中;基于所述第一输出链路从数据源音频缓冲区中获得音频数据通过第一音频输出缓冲区输出。这样,由于第一设备是直接从与输入音源对应的数据源音频缓冲区获取音频数据,能够有效减少音频流所经过的缓冲区,也避免了使用多线程时因进程调度而引入的音频流延时,能降低音视频同步播放延时,使得由第一设备播放出的音频预视频画面更匹配。

再举例来说,组中包括多个音响设备,分别位于不同的房间,其中一个房间的音响设备作为第一设备,其他房间的音响设备作为第二设备;这样,第一设备检测到第一设备侧的输入音源作为组的输入音源时,建立第一虚拟输入链路和第一输出链路;基于所述第一虚拟输入链路从与所述输入音源对应的音频输入缓冲区获得音频数据填充到数据源音频缓冲区中;基于所述第一输出链路从数据源音频缓冲区中获得音频数据通过第一音频输出缓冲区输出。第二设备检测到与所述第二设备处于同一组的第一设备将第一设备输入音源作为所述组的输入音源时,建立第二输出链路;基于所述第二输出链路建立与所述第一设备的数据传输链路,以通过所述数据传输链路接收由所述第一设备传输的从与输入音源对应的音频输入缓冲区获取的音频数据;所述第二设备基于所述第二输出链路从与数据传输链路对应的数据传输缓冲区获得音频数据通过第二音频输出缓冲区输出。这样,由于第一设备是直接从与输入音源对应的数据源音频缓冲区获取音频数据,也避免了使用多线程时因进程调度而引入的音频流延时,能降低Multi-room模式下的各个设备同步播放延时。另一方面,与所述第一设备处于同一组中的第二设备接收第一设备通过数据传输链路传输的从与所述输入音源对应的音频输入缓冲区获取的音频数据,而无需从所述第二设备侧的数据源音频缓冲区获取音频数据,减少了缓冲区结构,也能降低Multi-room模式下的各个设备同步播放延时。

实施例二

图3为本发明实施例提供的另一种音频数据流的传输方法的实现流程示意图,本实施例中的音频数据流的传输方法应用于能播放同一个音频的组中,在本发明一个优选实施例中,所述音频数据流的传输方法主要包括以下步骤:

步骤301:第二设备检测到与所述第二设备处于同一组的第一设备将所述第一设备检测到的输入音源作为所组的输入音源时,建立第二输出链路。

在一可选实施方式中,第二设备检测到所述组中的第一设备将所述第一设备的本地录音音源作为所述组的输入音源时,建立第二输出链路。

这里,所述第二设备是组中除第一设备之外的其他设备。所述第一设备是将检测到的输入音源作为组的输入音源的设备。

这里,所述组中的各个设备之间能够通过网络连接。其中,所述网络连接可以是有线连接,也可以是无线连接。

比如,有A、B、C、D、E五个设备,其中,将A设备侧的输入音源作为组的输入音源,那么,A设备可称之为组中的第一设备,B设备、C设备、D设备、E设备均独立称之为组中的第二设备。

本实施例中,所述第二设备是能对音频数据流执行读取、混音和输出操作的设备,如音响设备。

步骤302:基于所述第二输出链路建立与所述第一设备的数据传输链路,以通过所述数据传输链路接收由所述第一设备传输的从与输入音源对应的音频输入缓冲区获取的音频数据。

这里,由于第一设备是直接从与输入音源对应的数据源音频缓冲区获取音频数据,并向第二设备传输该音频数据;能够减少音频流所经过的缓冲区,也避免了使用多线程时因进程调度而引入的音频流延时,能降低Multi-room模式下各个设备的音频同步播放延时。

另外,需要说明的是,当输入音源为本地录音音源时,由于第一设备是直接从与输入音源对应的数据源音频缓冲区获取音频数据,并向第二设备传输该音频数据;而不是经过录音线程以及录音数据音频缓冲区之后,才向第二设备传输该音频数据;能够有效减少音频流所经过的缓冲区,也避免了使用多线程时因进程调度而引入的音频流延时,能降低Multi-room模式下各个设备的音频同步播放延时。

步骤303:所述第二设备基于所述第二输出链路从与数据传输链路对应的数据传输缓冲区获得音频数据通过第二音频输出缓冲区输出。

作为一种可选实施方式,所述基于所述第二输出链路从与数据传输链路对应的数据传输缓冲区获得音频数据通过第二音频输出缓冲区输出之前,所述方法还包括:

第二设备中的第二混音器从与数据传输链路对应的数据传输缓冲区获得音频数据;

将从所述数据传输缓冲区获得的音频数据,与从其他音源对应的数据源音频缓冲区获取的音频数据,进行混音;

将混音后的音频数据写入到第二音频输出缓冲区中。

需要说明的是,所述数据传输缓冲区中的音频数据,与所述输入音源对应的数据源音频缓冲区中的音频数据相同。

作为一可选实施方式,所述基于所述第二输出链路从与数据传输链路对应的数据传输缓冲区获得音频数据通过第二音频输出缓冲区输出,包括:

满足预设输出条件时,所述第二输出链路使能所述第二设备中的第二音频输出器件;

所述第二音频输出器件开始执行从所述第二音频输出缓冲区输出音频数据流的操作。

示例性地,第二输出链路按照正常的输出链路打开第二设备中的第二音频输出器件,并开始第二音频输出器件的输出操作,也即是使能音频输出硬件,开始其从所述第二音频输出缓冲区输出音频数据流的操作。

这里,所述预设输出条件为:输出音频数据流的触发条件。

可选地,所述预设输出条件可以为:硬件输出时钟到达。

示例性地,当所述组中包括多个设备时,所述第二设备与处于同一组中的第一设备的输出时间相同,具体的,当所述第二设备与处于同一组中的第一设备在各自的硬件输出时钟到达时,所述第二设备与处于同一组中的第一设备,同时开始向外输出相同的音频数据流。

当然,所述预设输出条件还可以是其他条件,在此不再列举。

采用本发明实施例所述技术方案,所述组中的第二设备接收第一设备通过数据传输链路传输的从与所述输入音源对应的音频输入缓冲区获取的音频数据,而无需从所述其它设备侧的数据源音频缓冲区获取音频数据,减少了缓冲区结构,也能降低同一组中各个设备的音频同步播放延时。同时,由于第一设备是直接从与输入音源对应的数据源音频缓冲区获取音频数据,并向第二设备传输该音频数据;能够有效减少音频流所经过的缓冲区,也避免了使用多线程时因进程调度而引入的音频流延时,能降低同一组中各个设备的音频同步播放延时。

实施例三

图4为本发明实施例提供的Multi-room模式下主设备播放本地录音音源时,与从设备之间的数据流处理流程框图,其中,实施例一与实施例二中所述的第一设备可以作为主设备,实施例一与实施例二中所述的第二设备可以作为从设备。如图4所示,在Multi-room模式下,主设备针对输入音源引入了第一虚拟输入链路、第一输出链路的概念;第一虚拟输入链路、第一输出链路,在本地录音音源作为Multi-room的输入音源时使能有效,第一虚拟输入链路如图虚线箭头所示。具体的,该第一虚拟输入链路按照正常的输入链路打开主设备的第一音频输入器件,并开始音频输入器件的录音操作,也即是使能主设备的音频输入硬件,使音频输入硬件开始向音频输入缓冲区写入录音数据的操作;并且,该第一虚拟输入链路只是完成数据链路的启动,并不对音频数据进行真正的操作。具体的,该第一输出链路按照正常的输出链路,在如果需要的情况下即满足预设输出条件时,打开主设备的第一音频输出器件,开始音频数据的输出,也即是使能主设备的音频输出硬件,使音频输出硬件开始从音频输出缓冲区输出数据的操作;同样,该第一输出链路只是完成数据链路的启动,并不对具体的音频数据进行真正的操作。

图4中,数据源1,可理解为非录音音源,数据源1对延时没有特殊要求的,如没有音视频同步要求的;比如,通过网络协议直接将音源中的音频数据推送到主设备和从设备端的数据源。数据源2,可理解为录音音源,数据源2对延时有特殊要求的,如有音视频同步要求的。

从图4的左半部分图中可以看出,主设备端的数据源2,负责在录音音源开始作为Multi-room音源时第一虚拟输入链路及第一输出链路的建立,不仅如此,数据源2还将第一虚拟输入链路所打开的音频输入器件抽象,并作为打开第一输出链路时的一个参数传递到第一混音器;第一混音器线程在启动以后,发现有音源采用第一输出链路进行数据的输出操作,第一混音器使用前面提到的音频输入器件抽象,获得录音数据。可选地,在Multi-room模式下,第一混音器从数据源2音频缓冲区获得一块数据并与其他音源数据一块做混音操作,第一混音器从音频输入器件抽象处获得新的数据,写入数据源2音频缓冲区,并将该数据块通过数据传输通道发送到从设备端,第一混音器将混音后的数据写入到第一音频输出缓冲区中以完成数据的输出。一般地,第一混音器向第一音频输出缓冲区写入数据采用阻塞的方式,也即是说,整个数据链路是受输出硬件消耗数据的速率驱动的(硬件输出时钟):硬件消耗一块数据,导致第一混音器能正常写入一块同样大小的数据(否则写操作就被阻塞),导致第一混音器从数据源2音频缓冲区消耗掉同样大小的数据,导致第一混音器从音频输入器件抽象读取同样大小数据写入到数据源2音频缓冲区中,并将其发送给从设备端;而数据源2音频缓冲区的大小是由Multi-room设备之间数据传输通道来决定的,其大小只需要满足数据传输通道的要求即可。

从图4的右半部分图中可以看出,从设备也使用了第二输出链路的概念;对应于从设备端的音源,第二输出链路不对主设备侧传输过来的音频流做实际处理,只是负责和主设备建立数据传输通道,并将数据传输通道抽象传递到第二混音器。典型地,在client模式下,第二混音器从数据传输通道获得音频数据,并将其与其他音源混音,第二混音器将混音后的数据写入到第二音频输出缓冲区中。同样,第二混音器往第二音频输出缓冲区写入数据采用阻塞的方式,也即是说,这个数据链路是受从设备输出硬件消耗数据的速率驱动的(硬件输出时钟):硬件消耗一块数据,导致第二混音器能正常写入一块同样大小的数据(否则写操作就被阻塞),导致第二混音器从数据传输通道获得同样大小的数据。

如上所述,在Multi-room模式下,当使用本地录音音源作为Multi-room的音源时,主设备端使用单一的第一混音器线程来完成对录音音频流的读取、混音和输出操作,其避免了使用多线程因为进程调度而引入的音频流延时;不仅如此,主设备端使用单一的第一混音器线程,能够有效地减少音频流所经过的缓冲区,有效的降低了Multi-room模式下各个设备同步播放的延时;从设备端有效地使用数据传输链路自身的数据传输缓冲区,避免了数据源音频缓冲区的使用,进一步地降低了Multi-room模式下各个设备同步播放的延时;这是因为数据传输缓冲区引入的延时,在为了保证Multi-room各个设备同步播放的前提下最终会导致主设备需要利用长度相当的数据源2音频缓冲区来与之对应。

需要说明的是:含有嵌入式系统的音响设备,音频输入缓冲区和音频输出缓冲区是必不可少的,因为混音器、数据源等对数据的操作是成块操作的,而硬件消耗数据是按照流的方式均匀操作的,所以就需要音频输入缓冲区和音频输出缓冲区来处理转化操作方式不同给音频流带来的影响。图4所示的数据流处理方式,在使用本地录音音源作为Multi-room的音源时,其对音频流引入的延时为:音频输入缓冲区、数据源2数据缓冲区和音频输出缓冲区所引入延时之和,而数据源2数据缓冲区是只受Multi-room数据通路传输延迟影响的;综上,图4是在使用本地录音音源作为Multi-room的输入音源时,Multi-room系统对数据流的最优处理方式。

实施例四

本发明实施例提供了一种音频数据流的传输装置,应用于第一设备,如图5所示,所述装置包括:

第一链路管理器51,用于检测到输入音源时,建立第一虚拟输入链路和第一输出链路;其特征在于,所述装置还包括:

第一处理器52,用于基于所述第一虚拟输入链路,从与所述输入音源对应的音频输入缓冲区获得音频数据填充到数据源音频缓冲区中;

第一音频输出器件53,用于基于所述第一输出链路从数据源音频缓冲区中获得音频数据通过第一音频输出缓冲区输出。

在一可选实施方式中,所述第一处理器52,还用于:与第二设备建立数据传输链路;其中,所述第二设备与所述第一设备处于同一组;通过所述数据传输链路向所述第二设备传输从与所述输入音源对应的音频输入缓冲区获取的音频数据。

进一步地,在一可选实施方式中,所述装置还包括:

第一音频输入器件55;

所述第一处理器52,还用于:在基于所述第一虚拟输入链路从与所述输入音源对应的数据源音频缓冲区获取音频数据之前,通过所述第一虚拟输入链路使能所述第一音频输入器件,使所述第一音频输入器件开始执行向与所述输入音源对应的音频输入缓冲区写入音频数据的操作。

作为一种可选实施方式,所述第一音频输入器件55,还用于:

在所述第一链路管理器51检测到输入音源为本地录音音源时,对输入音源进行录音。

进一步地,在一可选实施方式中,所述装置还包括:

第一混音器54,用于将从与所述输入音源对应的数据源音频缓冲区获取的音频数据,与从其他音源对应的数据源音频缓冲区获取的音频数据,进行混音;将混音后的音频数据写入到第一音频输出缓冲区中。

在一可选实施方式中,所述第一音频输出器件53,还用于:

满足预设输出条件时,若接收到所述第一输出链路的使能操作,开始执行从所述第一音频输出缓冲区输出音频数据流的操作。

本实施例的音频数据流的传输装置可以设置于第一设备中。

这里,所述第一设备是将检测到的输入音源作为组的输入音源的设备。

这里,当所述组中包括多个设备时,所述组中的各个设备之间能够通过网络连接。其中,所述网络连接可以是有线连接,也可以是无线连接。

本实施例中,所述第一设备是能执行读取、混音和输出操作的设备,如音响设备。

本领域技术人员应当理解,本实施例的音频数据流的传输装置中各处理单元的功能,可参照前述音频数据流的传输方法的相关描述而理解,本实施例的音频数据流的传输装置中各处理单元,可通过实现本发明实施例所述的功能的模拟电路而实现,也可以通过执行本发明实施例所述的功能的软件在智能终端上的运行而实现。

需要说明的是,实际应用中,本实施例所述的第一处理器52的功能可由所述数据处理装置的中央处理器(CPU,Central Processing Unit)、微处理器(MPU,Micro Processor Unit)或数字信号处理(DSP,Digital Signal Processor)芯片等来实现。

采用本实施例的音频数据流的传输装置,能降低音频伴随有视频时的播放延时,以给用户好的体验。

实施例五

本发明实施例提供了一种音频数据流的传输装置,应用于第二设备,如图6所示,所述装置包括:

第二链路管理器61,用于检测到与所述第二设备处于同一组的第一设备将所述第一设备检测到的输入音源作为所述组的输入音源时,建立第二输出链路;其特征在于,所述装置还包括:

第二处理器62,用于基于所述第二输出链路建立与所述第一设备的数据传输链路;通过所述数据传输链路接收由所述第一设备传输的从与输入音源对应的音频输入缓冲区获取的音频数据;

第二音频输出器件63,用于基于所述第二输出链路从与数据传输链路对应的数据传输缓冲区获得音频数据通过第二音频输出缓冲区输出。

进一步地,在一可选实施方式中,所述装置还包括:

第二混音器64,用于从与数据传输链路对应的数据传输缓冲区获得音频数据;将从所述数据传输缓冲区获得的音频数据,与从其他音源对应的数据源音频缓冲区获取的音频数据,进行混音;将混音后的音频数据写入到第二音频输出缓冲区中。

在一可选实施方式中,所述第二音频输出器件63,还用于:

满足预设输出条件时,若接收到所述第二输出链路的使能操作,开始执行从所述第二音频输出缓冲区输出音频数据流的操作。

本实施例的音频数据流的传输装置可以设置于第二设备中。

这里,所述第二设备是组中除第一设备之外的其他设备,所述第一设备是将检测到的输入音源作为组的输入音源的设备。

这里,所述组中的各个设备之间能够通过网络连接。其中,所述网络连接可以是有线连接,也可以是无线连接。

本领域技术人员应当理解,本实施例的音频数据流的传输装置中各处理单元的功能,可参照前述音频数据流的传输方法的相关描述而理解,本实施例的音频数据流的传输装置中各处理单元,可通过实现本发明实施例所述的功能的模拟电路而实现,也可以通过执行本发明实施例所述的功能的软件在智能终端上的运行而实现。

需要说明的是,实际应用中,本实施例所述的第二处理器62的功能可由所述数据处理装置的CPU、MPU或DSP芯片等来实现。

采用本实施例的音频数据流的传输装置,能降低同一组各个设备的音频同步播放延时。

实施例六

图7为本发明实施例提供的音频数据流的传输系统的一种交互示意图,如图7所示,音频数据流的传输系统包括第一设备、多个第二设备、输入音源,该输入音源具体为本地录音音源;其中,

第一设备,负责检测到将本地录音音源作为多房间音频系统的输入音源时,建立第一虚拟输入链路和第一输出链路;基于所述第一虚拟输入链路从与所述本地录音音源对应的数据源音频缓冲区获取音频数据;并与所述多房间音频系统的第二设备建立数据传输链路,通过所述数据传输链路向所述第二设备传输从与所述本地录音音源对应的音频输入缓冲区获取的音频数据;所述第一设备基于所述第一输出链路从第一音频输出缓冲区输出音频数据流。

第二设备,负责检测到多房间音频系统中的第一设备将其本地录音音源作为多房间音频系统的音源时,建立第二输出链路;基于所述第二输出链路建立与所述第一设备的数据传输链路;通过所述数据传输链路接收由所述第一设备传输的从与本地录音音源对应的音频输入缓冲区获取的音频数据;基于所述第二输出链路从第二音频输出缓冲区输出音频数据流。

这里,本地录音音源由终端侧提供,所述终端与所述第一设备通过音频线相连接,所述终端播放多媒体数据时,通过所述音频线将所述多媒体数据对应的音频数据通过所述音频线传输至所述第一设备,作为所述第一设备的本地录音音源。可选地,所述音频线为3.5音频线。

当多房间音频系统中的各个设备处于Multi-room模式下,且使用本地录音音源作为Multi-room的音源时,第一设备端使用单一的混音器线程来完成对录音音频流的读取、混音和输出操作,其避免了使用多线程因为进程调度而引入的音频流延时;不仅如此,第一设备端使用单一的混音器线程,能够有效地减少了音频流所经过的缓冲区,有效的降低了Multi-room模式下各个设备同步播放的延时;第二设备有效地使用数据传输链路自身的数据传输缓冲区,避免了数据源音频缓冲区的使用,进一步地降低了Multi-room模式下各个设备同步播放的延时。

在本发明所提供的几个实施例中,应该理解到,所揭露的方法、装置和电子设备,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

或者,本发明实施例上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1