音频播放方法及装置
技术领域
本发明涉及音频播放技术领域,特别涉及一种音频播放方法及装置。
背景技术
由于智能设备的普及,越来越多的用户已经将个人娱乐放在了智能手机、平板电脑等智能设备上,而随着智能设备功能的增加和体积的缩小,音频回放性能便成了所有智能设备的短板。由于一些用户对音频回放的性能要求较高,此时不仅音频源的模拟音频输出失真较大,而且输出功率极为有限,因此,需要在音频源后接驳一个USB(UniversalSerial Bus,通用串行总线)解码器。
USB数据传输共有4种模式,分别是块传输(Bulk Transfer)模式、控制传输(Control Transfer)模式、中断传输(Interrupt Transfer)模式和同步传输(IsochronousTransfer)模式。块传输模式主要用于如大容量存储、MTP(Media Transfer Protocol,媒体传输协议)、主从机数据同步等,该模式的特点为数据分包传输、传输速度快、传输前有握手交互(包括确认ACK和未确认NAK信号)、有丢包重发机制、有数据校验机制,传输可靠。控制传输主要用于传输USB的配置信息,该模式的特点为传输速度慢、有握手交互、有数据重发和校验机制,传输可靠。中断传输模式主要用于HID(Human Interface Device,人机交互设备)等,如鼠标、键盘等,该模式的特点为传输速度慢、有握手交互、有数据重发和校验机制,传输可靠。同步传输模式主要用于音视频设备,如USB声卡、USB摄像头、视频采集卡等,该模式的特点为传输速度快、传输速率恒定、数据传输实时性高、数据根据时钟信号同步传输、没有握手交互、有一定的误码率,传输不可靠。
通常,USB解码器通过USB接口分别与音频源和耳机相连,此时,音频源作为主设备,USB解码器作为从设备,且音频源通过USB数据传输模式中的同步传输模式向USB解码器发送音频数据。具体地,音频源向USB解码器发送音频流数据和对应的时钟信号,USB解码器根据接收的时钟信号控制音频流数据的播放,该过程中数字音频信号将被转换为模拟音频信号。
由于同步传输模式没有握手交互,且传输不可靠,有一定的误码率,因此USB解码器收到的音频流数据中会有一部分的错误数据。此外,需要在音频源中安装与USB解码器配套的驱动程序,以保证USB解码器的正常工作。
发明内容
为了解决采用同步传输模式传输音频数据流和时钟信号时,无法重新传输出错的音频流数据的问题和需要在音频源中安装与USB解码器配套的驱动程序的问题,本发明实施例提供了一种音频播放方法及装置。所述技术方案如下:
第一方面,提供了一种音频播放方法,所述方法包括:
通用串行总线USB数字音频解码器作为USB连接中的主设备与音频源建立所述USB连接;
所述USB数字音频解码器接收所述音频源通过块传输模式发送的音频数据,所述块传输模式是USB数据传输模式中的一种;
所述USB数字音频解码器生成时钟信号,并根据所述时钟信号控制所述音频数据的播放。
第二方面,提供了一种音频播放方法,所述方法包括:
音频源作为通用串行总线USB连接中的从设备与USB数字音频解码器建立所述USB连接;
所述音频源获取音频数据;
所述音频源通过块传输模式将所述音频数据发送给所述USB数字音频解码器,所述块传输模式是USB数据传输模式中的一种,所述USB数字音频解码器用于生成时钟信号,并根据所述时钟信号控制所述音频数据的播放。
第三方面,提供了一种音频播放装置,用于作为通用串行总线USB连接中的主设备的USB数字音频解码器中,所述装置包括:
连接建立模块,用于与音频源建立所述USB连接;
数据接收模块,用于接收所述音频源通过块传输模式发送的音频数据,所述块传输模式是USB数据传输模式中的一种;
音频播放模块,用于生成时钟信号,并根据所述时钟信号控制所述数据接收模块接收的所述音频数据的播放。
第四方面,提供了一种音频播放装置,用于作为通用串行总线USB连接中的从设备的音频源中,所述装置包括:
连接建立模块,用于与USB数字音频解码器建立所述USB连接;
数据获取模块,用于获取音频数据;
第一发送模块,用于通过块传输模式将所述数据获取模块获取的所述音频数据发送给所述USB数字音频解码器,所述块传输模式是USB数据传输模式中的一种,所述USB数字音频解码器用于生成时钟信号,并根据所述时钟信号控制所述音频数据的播放。
本发明实施例提供的技术方案的有益效果是:
通过作为USB连接中的主设备的USB数字音频解码器与音频源建立USB连接;接收音频源通过块传输模式发送的音频数据,块传输模式是USB数据传输模式中的一种;生成时钟信号,并根据时钟信号控制音频数据的播放,由于USB数字音频解码器作为USB连接中的主设备时,不需要在音频源中安装与USB解码器配套的驱动程序,因此,解决了需要在音频源中安装驱动程序的问题,达到了提高USB数字音频解码器的兼容性和易用性的效果;另外,由于USB数字音频解码器生成时钟信号,当音频源发送的音频数据出错时,音频源可以重新发送音频数据,USB数字音频解码器在接收到正确的音频数据后再生成时钟信号,从而根据时钟信号控制该正确的音频数据的播放,解决了采用同步传输模式传输音频流数据和时钟信号时,无法重新传输出错的音频流数据的问题,达到了提高音频播放的准确性的效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明各个实施例涉及的音频播放方法的实施场景图;
图2是本发明一个实施例提供的音频播放方法的方法流程图;
图3是本发明一个实施例提供的音频播放方法的方法流程图;
图4是本发明另一实施例提供的音频播放方法的方法流程图;
图5是本发明一个实施例提供的音频播放装置的结构框图;
图6是本发明再一实施例提供的音频播放装置的结构框图;
图7是本发明一个实施例提供的音频播放装置的结构框图;
图8是本发明再一实施例提供的音频播放装置的结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
请参考图1,其示出了本发明各个实施例所涉及的音频播放方法的实施场景图,图1的上侧图中包括音频源110、USB数字音频解码器120和发声设备130。音频源110可以是具有音频播放能力且能够作为USB连接中的从设备的设备,比如,音频源110可以是智能电视、智能手机或者平板电脑或DVD(Digital Video Disc,数字化视频光碟)播放器或MP3(Moving Picture Experts Group Audio Layer 3,动态影像专家压缩标准音频层面3)播放器、MP4(Moving Picture Experts Group Audio Layer 4,动态影像专家压缩标准音频层面4)播放器等等。USB数字音频解码器120是具有USB接口且能够处理数字音频的设备。发声设备130可以是耳机、音箱等,当发声设备130是耳机时,可以是头戴式耳机、入耳式耳机、耳挂式耳机等,本发明不限定耳机的类型。其中,音频源110通过USB数据线与USB数字音频解码器120中的USB接口121相连,发声设备130通过接口插入到USB数字音频解码器120中的接口122。
图1的下侧图中包括通过USB接口相连的音频源110和USB数字音频解码器120,音频源110可以是具有音频播放能力且能够作为USB连接中的从设备的设备,比如,音频源110可以是智能电视、智能手机或者平板电脑或DVD播放器或MP3播放器、MP4播放器等等。USB数字音频解码器120是具有USB接口和扬声器且能够处理数字音频的设备。此时,USB数字音频解码器120可以直接通过扬声器播放音频源110发送的音频数据。其中,音频源110通过USB数据线与USB数字音频解码器120中的USB接口121相连。
或者,USB数字音频解码器120可以既包括连接发声设备130的接口122,也可以包括扬声器,此时,用户可以选择使用发声设备130播放音频数据,也可以选择使用扬声器播放音频数据。
需要说明的是,由于本发明中的USB数字音频解码器120作为USB连接中的主设备,且音频源110作为USB连接中的从设备,因此,USB数字音频解码器120还可以根据主设备的身份为作为从设备的音频源110提供其他服务,本发明不限定其他服务的具体内容。在一种可能的场景中,主设备可以给从设备供电,此时,可以将USB数字音频解码器120与音频源110的充电器相结合。这样,USB数字音频解码器120在与音频源110相连后,既可以播放音频源110发送的音频数据,也可以给音频源110供电。
请参考图2,其示出了本发明一个实施例提供的音频播放方法的方法流程图,该音频播放方法可以应用于USB数字音频解码器中。该音频播放方法,包括:
步骤201,USB数字音频解码器作为USB连接中的主设备与音频源建立USB连接。
步骤202,USB数字音频解码器接收音频源通过块传输模式发送的音频数据,块传输模式是USB数据传输模式中的一种。
步骤203,USB数字音频解码器生成时钟信号,并根据时钟信号控制音频数据的播放。
综上所述,本发明实施例提供的音频播放方法,通过作为USB连接中的主设备的USB数字音频解码器与音频源建立USB连接;接收音频源通过块传输模式发送的音频数据,块传输模式是USB数据传输模式中的一种;生成时钟信号,并根据时钟信号控制音频数据的播放,由于USB数字音频解码器作为USB连接中的主设备时,不需要在音频源中安装与USB解码器配套的驱动程序,因此,解决了需要在音频源中安装驱动程序的问题,达到了提高USB数字音频解码器的兼容性和易用性的效果;另外,由于USB数字音频解码器生成时钟信号,当音频源发送的音频数据出错时,音频源可以重新发送音频数据,USB数字音频解码器在接收到正确的音频数据后再生成时钟信号,从而根据时钟信号控制该正确的音频数据的播放,解决了采用同步传输模式传输音频流数据和时钟信号时,无法重新传输出错的音频流数据的问题,达到了提高音频播放的准确性的效果。
请参考图3,其示出了本发明一个实施例提供的音频播放方法的方法流程图,该音频播放方法可以应用于音频源中,该音频源可以是智能电视、智能手机或者平板电脑等等。该音频播放方法,包括:
步骤301,音频源作为USB连接中的从设备与USB数字音频解码器建立USB连接。
步骤302,音频源获取音频数据。
步骤303,音频源通过块传输模式将音频数据发送给USB数字音频解码器,块传输模式是USB数据传输模式中的一种,该USB数字音频解码器用于生成时钟信号,并根据时钟信号控制音频数据的播放。
综上所述,本发明实施例提供的音频播放方法,通过作为USB连接中的从设备的音频源与USB数字音频解码器建立USB连接,通过块传输模式将音频数据发送给USB数字音频解码器,块传输模式是USB数据传输模式中的一种,该USB数字音频解码器用于生成时钟信号,并根据时钟信号控制音频数据的播放,由于USB数字音频解码器作为USB连接中的主设备时,不需要在音频源中安装与USB解码器配套的驱动程序,因此,解决了需要在音频源中安装驱动程序的问题,达到了提高USB数字音频解码器的兼容性和易用性的效果;另外,由于USB数字音频解码器生成时钟信号,当音频源发送的音频数据出错时,音频源可以重新发送音频数据,USB数字音频解码器在接收到正确的音频数据后再生成时钟信号,从而根据时钟信号控制该正确的音频数据的播放,解决了采用同步传输模式传输音频流数据和时钟信号时,无法重新传输出错的音频流数据的问题,达到了提高音频播放的准确性的效果。
请参考图4,其示出了本发明另一实施例提供的音频播放方法的方法流程图,该音频播放方法可以应用于包括USB数字音频解码器和音频源的系统中。该音频播放方法,包括:
步骤401,USB数字音频解码器与音频源之间建立USB连接。
USB数字音频解码器与音频源之间建立USB连接,从USB数字音频解码器侧来说,是USB数字音频解码器作为USB连接中的主设备与音频源建立USB连接,从音频源侧来说,是音频源作为USB连接中的从设备与USB数字音频解码器建立USB连接。
具体地,用户可以将USB数据线的两个接口分别插入USB数字音频解码器和音频源中,使得USB数字音频解码器和音频源之间通过USB数据线相连,再基于USB数据线在USB数字音频解码器和音频源之间建立USB连接。
本实施例以音频源为Android(安卓)操作系统和iOS(苹果操作系统)为例,对USB数字音频解码器和音频源之间的USB连接建立过程进行说明,则USB数字音频解码器作为USB连接中的主设备与音频源建立USB连接,包括:
1)当音频源是Android操作系统时,作为主设备的USB数字音频解码器向音频源发送模式进入指令,模式进入指令用于指示音频源进入AoA(Android Open Accessory,安卓开放配件)模式,USB数字音频解码器将AoA模式所对应的原始数据通道确定为USB数字音频解码器与音频源之间的数据传输通道;
2)当音频源是iOS时,作为主设备的USB数字音频解码器通过基于USB的TCP(Transmission Control Protocol,传输控制协议)隧道Tunnel连接音频源中被监听的预定端口,USB数字音频解码器将TCP Tunnel确定为USB数字音频解码器与音频源之间的数据传输通道。
对应的,音频源作为USB连接中的从设备与USB数字音频解码器建立USB连接,包括:
1)当音频源是Android操作系统时,作为从设备的音频源接收USB数字音频解码器发送的模式进入指令,根据模式进入指令进入AoA模式,将AoA模式所对应的原始数据通道确定为USB数字音频解码器与音频源之间的数据传输通道;
2)当音频源是iOS时,作为从设备的音频源监听预定端口,通过预定端口与USB数字音频解码器建立基于USB的TCP Tunnel的连接,将TCP Tunnel确定为USB数字音频解码器与音频源之间的数据传输通道。
第一,当音频源是Android操作系统时,USB数字音频解码器确定本端是USB连接中的主设备,向音频源发送模式进入指令,音频源确定本端是USB连接中的从设备,根据该模式进入指令进入AoA模式。进入AoA模式的音频源自动启动本端中安装的且与USB数字音频解码器配套使用的应用程序,此时USB数字音频解码器和该应用程序可以在与AoA模式对应的原始数据通道上进行数据传输。即,将该原始数据通道确定为USB数字音频解码器与音频源之间的数据传输通道。
AoA又名ADK(Android Accessory Development Kit,安卓配件开发平台)。本实施例中的AoA模式是基于AoA协议(Android Open Accessory Protocol,安卓开放配件协议)的模式。需要说明的是,目前AoA协议是2.0版本的,且本实施例提供的AoA模式兼容目前以及未来的所有版本的AoA协议。
第二,当音频源是iOS时,音频源确定本端是USB连接中的从设备,先开启本端安装的且与USB数字音频解码器配套使用的应用程序,控制该应用程序使用TCP/IP(InternetProtocol,因特网协议)监听预定端口。USB数字音频解码器确定本端是USB连接中的主设备,通过块传输模式向音频源发送主机说明符,该主机说明符中包括USB数字音频解码器的标识、苹果设备通讯协议头和协议版本等信息,USB数字音频解码器的标识包括PID(Product ID,产品标识)和VID(Vender ID,供应商标识)中的至少一种。苹果设备通讯协议头和协议版本可以从苹果公司取得认证或使用网络提供的开源程序,如libiphone。
音频源根据主机说明符验证出USB数字音频解码器是安全的且支持该通讯协议时,USB数字音频解码器再使用基于USB的TCP Tunnel连接音频源中被监听的预定端口,USB数字音频解码器和该应用程序可以在TCP Tunnel上进行数据传输。即,将TCP Tunnel确定为USB数字音频解码器与音频源之间的数据传输通道。其中,基于USB的TCP Tunnel可以使用苹果公司提供的SDK(Software Development Kit,软件开发包)或使用网络提供的开源程序,如libiphone。
需要说明的是,相关技术中,USB数字音频解码器将本端确定为从设备,音频源将本端确定为主设备;而本实施例中,USB数字音频解码器需要将本端确定为主设备,音频源需要将本端确定为从设备,以便于后续的数据通信。此时,作为从设备的音频源中不需要安装与USB数字音频解码器配套的驱动程序,提高了USB数字音频解码器的兼容性和易用性。
由于将本端确定为主设备还是从设备是由USB接口中的标识ID端的电平值决定的,即,当USB接口中的ID端为高电平时,确定本端为从设备,当USB接口中的ID端口为低电平时,确定本端为主设备,因此,本实施例中的USB数据线中ID端口的电平值与相关技术中USB数据线中ID端口的电平值相反。
为了便于理解,本实施例以插入音频源中的USB接口为第一接口,插入USB数字音频解码器中的USB接口为第二接口为例进行说明,则相关技术中,第一接口中ID端的电平值为低电平,第二接口中ID端的电平值为高电平;而本实施例中,第一接口中ID端的电平值为高电平,第二接口中ID端的电平值为低电平。
步骤402,音频源获取音频数据。
音频数据是音频片段中的数据,比如,音频片段是一首歌曲、一段语音等等。
在实际使用时,音频源可以将各个音频片段的信息显示给用户,用户从中选择中想要播放的音频片段,音频源再从选择的音频片段中获取音频数据。
步骤403,音频源通过块传输模式将音频数据发送给USB数字音频解码器,块传输模式是USB数据传输模式中的一种。
音频源将音频数据封装成数据包后,通过块传输模式发送给USB数字音频解码器。其中,USB数字音频解码器会对块传输模式传输的音频数据进行校验,并在发现音频数据出错时,要求音频源重新发送音频数据,从而解决了采用同步传输模式传输音频流数据和时钟信号时,无法重新传输出错的音频流数据的问题,达到了提高音频数据的发送准确性的效果。
步骤404,USB数字音频解码器接收音频源通过块传输模式发送的音频数据。
由于USB数字音频解码器需要对接收到的音频数据进行缓存,因此,在接收音频数据之前,USB数字音频解码器需要预先设置总存储空间值,再根据该总存储空间值设置缓存。其中,当总存储空间值太小时,播放的音频数据可能不连续,影响播放流畅性。通常,将总存储空间值设置为256K。
由于缓存的音频数据所占用的存储空间值不能超过总存储空间值,因此,USB数字音频解码器还需要获取缓存的剩余存储空间值,并将该剩余存储空间值通知给音频源,音频源再根据该剩余存储空间值控制剩余的音频数据的发送。
具体地,在USB数字音频解码器接收音频源通过块传输模式发送的音频数据之后,还包括:
1)USB数字音频解码器对音频数据进行缓存;
2)在音频数据所占用的存储空间值等于缓存的总存储空间值后,USB数字音频解码器向音频源发送第一通知消息,第一通知消息用于指示音频源暂停发送剩余的音频数据;或者,USB数字音频解码器接收音频源发送的中断信号,中断信号用于指示USB数字音频解码器等待接收音频源将要发送的信息,USB数字音频解码器接收音频源发送的空间值查询指令,根据空间值查询指令将缓存的剩余存储空间值发送给音频源,音频源用于根据剩余存储空间值确定是否继续发送剩余的音频数据。
本实施例提供了两种USB数字音频解码器向音频源通知剩余存储空间值的实现方式,具体如下:
在第一种实现方式中,USB数字音频解码器可以主动将剩余存储空间值通知给音频源。此时,音频源接收USB数字音频解码器发送的第一通知消息,根据第一通知消息暂停发送剩余的音频数据,第一通知消息是USB数字音频解码器在确定音频数据所占用的存储空间值等于缓存的总存储空间值后发送的。
具体地,USB数字音频解码器统计剩余存储空间值,当剩余存储空间值为0或小于一个数据包的长度时,确定缓存已满,此时向音频源发送第一通知消息,音频源根据第一通知消息暂停发送剩余的音频数据。
在第二种实现方式中,音频源可以主动向USB数字音频解码器查询剩余存储空间值。此时,音频源向USB数字音频解码器发送中断信号,再向USB数字音频解码器发送空间值查询指令,接收USB数字音频解码器根据空间值查询指令发送的缓存的剩余存储空间值,根据剩余存储空间值确定是否继续发送剩余的音频数据,中断信号用于指示USB数字音频解码器等待接收音频源将要发送的信息。
具体地,音频源可以每隔预定时间间隔或每发送预定个数数据包后,主动向USB数字音频解码器发送中断信号,USB数字音频解码器在接收到中断信号后,确定音频源将要发送信息,此时等待接收音频源将要发送的信息;音频源再向USB数字音频解码器发送空间值查询指令,USB数字音频解码器根据空间值查询指令统计剩余存储空间值,将剩余存储空间值发送给音频源。当音频源根据剩余存储空间值确定缓存未满时,继续向USB数字音频解码器发送剩余的音频数据;当音频源根据剩余存储空间值确定缓存已满时,暂停向USB数字音频解码器发送剩余的音频数据。
步骤405,USB数字音频解码器生成时钟信号,并根据时钟信号控制音频数据的播放。
USB数字音频解码器可以通过本端的时钟模块生成时钟信号,再根据时钟信号控制音频数据的播放。其中,USB数字音频解码器可以在启动时开始调用时钟模块生成时钟信号,当缓存中的音频数据为空时,无音频输出;当缓存中的音频数据非空时,有音频输出。由于缓存中的音频数据为空时,持续生成时钟信号会导致资源浪费,因此,优选的,USB数字音频解码器可以在接收到音频数据时开始调用时钟模块生成时钟信号。
需要说明的是,USB数字音频解码器可以在缓存已满后,开始播放音频数据,由于这样导致的播放延时较长,因此,USB数字音频解码器还可以在缓存中的音频数据的数据量达到预定阈值时开始播放音频数据,该预定阈值小于总存储空间值,以减少播放延时。
具体地,根据时钟信号控制音频数据的播放,包括:
1)当音频数据是音频源对封装格式的音频片段中的部分片段进行解码后发送的PCM(Pulse Code Modulation,脉冲编码调制)格式或DSD(Direct Stream Digital,直接比特流数字)格式的音频数据时,USB数字音频解码器接收音频源发送的配置参数,根据配置参数和时钟信号控制音频数据的播放,配置参数位于封装格式的音频片段中;
2)当音频数据是基于PCM格式或DSD格式的音频数据进行封装得到的封装格式的音频片段中的部分片段时,USB数字音频解码器从音频数据中读取配置参数,根据配置参数和时钟信号控制音频数据的播放。
其中,封装格式的音频片段是对PCM格式或DSD格式的音频数据进行封装得到的,比如,封装格式可以是MP3格式、WMA(Windows Media Audio,windows媒体音频)格式等。封装格式的音频片段中还包括播放该音频片段所需要的配置参数,比如,采样率、频道、频率等,本实施例不对配置参数作限定。
在播放音频片段时,首先需要将封装格式的音频片段转换为PCM格式或DSD格式的音频数据,USB数字音频解码器再对PCM格式或DSD格式的音频数据进行播放。
在第一种播放方式中,音频源对封装格式的音频片段中的部分片段进行解码,此时,音频源需要将解码得到的PCM格式或DSD格式的音频数据以及配置参数发送给USB数字音频解码器,USB数字音频解码器根据时钟信号和配置参数控制音频数据的播放。
对应的,该方法还包括:
当音频数据是音频源对封装格式的音频片段中的部分进行解码后发送的PCM格式或DSD格式的音频数据时,音频源从封装格式的音频片段中获取配置参数,向USB数字音频解码器发送配置参数,USB数字音频解码器用于根据配置参数和时钟信号控制音频数据的播放。
由于不同封装格式对应于不同的配置参数,因此,音频源可以在首次发送一种封装格式的音频片段时,获取该种封装格式对应的配置参数,将该配置参数发送给USB数字音频解码器。即,音频源从封装格式的音频片段中获取配置参数,包括:在首次发送封装格式的音频片段中的音频数据时,音频源从封装格式的音频片段中获取配置参数。
比如,音频片段是一首MP3格式的歌曲,音频源可以在用户点击播放该歌曲时,获取MP3格式的配置参数,将该配置参数和对该歌曲的片段解码得到的PCM格式或DSD格式的音频数据发送给USB数字音频解码器,此后,USB数字音频解码器可以根据该配置参数对后续接收到的且属于该歌曲的音频数据进行播放。
由于音频源发送的音频数据可能属于不同封装格式的音频片段,因此,需要多次发送配置参数,导致资源浪费,因此,音频源还可以将本端存储的所有音频片段转换为统一的预定封装格式的音频片段,此时,音频源只需要在首次发送其中任意一个预定封装格式的音频片段中的音频数据时发送配置参数。即,音频源从封装格式的音频片段中获取配置参数,包括:音频源将各个音频片段转换成预定封装格式的音频片段,且首次发送其中任意一个预定封装格式的音频片段中的音频数据时,音频源从预定封装格式的音频片段中获取配置参数。
比如,音频源存储的音频片段包括MP3格式的歌曲和WMA格式的歌曲,可以将所有WMA格式的歌曲转换为MP3格式的歌曲,音频源可以在用户点击播放任一歌曲时,获取MP3格式的配置参数,将该配置参数和对该歌曲的片段解码得到的PCM格式或DSD格式的音频数据发送给USB数字音频解码器,此后,USB数字音频解码器可以根据该配置参数对后续接收到的且属于任一歌曲的音频数据进行播放。
需要说明的是,音频源可以将配置参数和音频数据一起发送给USB数字音频解码器,或者,音频源可以在发送音频数据之前,将配置参数发送给USB数字音频解码器,或者,音频源还可以通过独立于音频数据传输通道的控制数据传输通道发送配置参数,本实施例不限定配置参数的发送时机以及发送方式。
在第二种播放方式中,音频源直接将封装格式的音频片段中的部分音频片段发送给USB数字音频解码器,USB数字音频解码器对该部分的音频片段进行解码,得到PCM格式或DSD格式的音频数据,再读取该部分的音频片段中的配置参数,根据时钟信号和配置参数控制音频数据的播放。
步骤406,USB数字音频解码器对缓存中已经播放部分的音频数据进行删除;向音频源发送携带有缓存的剩余存储空间值的第二通知消息。
本实施例中,USB数字音频解码器可以在播放完缓存中的音频数据后,通知音频源继续发送剩余的音频数据,由于音频源发送剩余的音频数据会产生时延,因此,这种播放方式可能会影响音频播放的流畅性。优选的,USB数字音频解码器还可以实时对缓存中已经播放部分的音频数据进行删除,并通知音频源发送剩余的音频数据,从而保证缓存中一直缓存有未播放的音频数据,从而保证USB数字音频解码器持续播放缓存中的音频数据。
由于音频源发送的剩余的音频数据所占用的存储空间值需要不超过缓存的剩余存储空间值,因此,USB数字音频解码器还需要统计缓存的剩余存储空间值,并将该剩余存储空间值携带在第二通知消息中发送给音频源。
步骤407,音频源接收USB数字音频解码器发送的携带有缓存的剩余存储空间值的第二通知消息,继续通过块传输模式向USB数字音频解码器发送剩余的音频数据,且所发送的剩余的音频数据所占用的存储空间值不超过剩余存储空间值。
比如,第二通知消息中携带的剩余存储空间值为128k,此时,音频源可以从剩余的音频数据中获取数据量小于或等于128k的音频数据,将该音频数据发送给USB数字音频解码器。
综上所述,本发明实施例提供的音频播放方法,通过作为USB连接中的主设备的USB数字音频解码器与音频源建立USB连接;接收音频源通过块传输模式发送的音频数据,块传输模式是USB数据传输模式中的一种;生成时钟信号,并根据时钟信号控制音频数据的播放,由于USB数字音频解码器作为USB连接中的主设备时,不需要在音频源中安装与USB解码器配套的驱动程序,因此,解决了需要在音频源中安装驱动程序的问题,达到了提高USB数字音频解码器的兼容性和易用性的效果;另外,由于USB数字音频解码器生成时钟信号,当音频源发送的音频数据出错时,音频源可以重新发送音频数据,USB数字音频解码器在接收到正确的音频数据后再生成时钟信号,从而根据时钟信号控制该正确的音频数据的播放,解决了采用同步传输模式传输音频流数据和时钟信号时,无法重新传输出错的音频流数据的问题,达到了提高音频播放的准确性的效果。
另外,通过将各个音频片段转换成预定封装格式的音频片段,且首次发送其中任意一个预定封装格式的音频片段中的音频数据时,从预定封装格式的音频片段中获取配置参数,可以将音频片段统一转换成预定封装格式的音频片段,这样,只需要在首次发送该预定封装格式的音频片段中的音频数据时发送配置参数,USB数字音频解码器可以根据该配置参数配置所播放的所有音频数据,解决了音频片段的封装格式不同时,需要多次发送配置参数的问题,达到了节省传输资源的效果。
另外,通过对缓存中已经播放部分的音频数据进行删除;向音频源发送携带有缓存的剩余存储空间值的第二通知消息,使得音频源继续通过块传输模式向USB数字音频解码器发送剩余的音频数据,且所发送的剩余的音频数据所占用的存储空间值不超过剩余存储空间值,可以实时发送剩余的音频数据来替换已经播放部分的音频数据,保证了音频播放过程中的流畅性。
请参考图5,其示出了本发明一个实施例提供的音频播放装置的结构框图,该音频播放装置可以应用于作为USB连接中的主设备的USB数字音频解码器中。该音频播放装置,包括:
连接建立模块510,用于与音频源建立USB连接;
数据接收模块520,用于接收音频源通过块传输模式发送的音频数据,块传输模式是USB数据传输模式中的一种;
音频播放模块530,用于生成时钟信号,并根据时钟信号控制数据接收模块520接收的音频数据的播放。
综上所述,本发明实施例提供的音频播放装置,通过作为USB连接中的主设备的USB数字音频解码器与音频源建立USB连接;接收音频源通过块传输模式发送的音频数据,块传输模式是USB数据传输模式中的一种;生成时钟信号,并根据时钟信号控制音频数据的播放,由于USB数字音频解码器作为USB连接中的主设备时,不需要在音频源中安装与USB解码器配套的驱动程序,因此,解决了需要在音频源中安装驱动程序的问题,达到了提高USB数字音频解码器的兼容性和易用性的效果;另外,由于USB数字音频解码器生成时钟信号,当音频源发送的音频数据出错时,音频源可以重新发送音频数据,USB数字音频解码器在接收到正确的音频数据后再生成时钟信号,从而根据时钟信号控制该正确的音频数据的播放,解决了采用同步传输模式传输音频流数据和时钟信号时,无法重新传输出错的音频流数据的问题,达到了提高音频播放的准确性的效果。
请参考图6,其示出了本发明再一实施例提供的音频播放装置的结构框图,该音频播放装置可以应用于作为USB连接中的主设备的USB数字音频解码器中。该音频播放装置,包括:
连接建立模块610,用于与音频源建立USB连接;
数据接收模块620,用于接收音频源通过块传输模式发送的音频数据,块传输模式是USB数据传输模式中的一种;
音频播放模块630,用于生成时钟信号,并根据时钟信号控制数据接收模块620接收的音频数据的播放。
可选的,该装置还包括:
数据缓存模块640,用于在数据接收模块620接收音频源通过块传输模式发送的音频数据之后,对音频数据进行缓存;
缓存控制模块650,用于在音频数据所占用的存储空间值等于缓存的总存储空间值后,向音频源发送第一通知消息,第一通知消息用于指示音频源暂停发送剩余的音频数据;或者,接收音频源发送的中断信号,中断信号用于指示USB数字音频解码器等待接收音频源将要发送的信息,接收音频源发送的空间值查询指令,根据空间值查询指令将缓存的剩余存储空间值发送给音频源,音频源用于根据剩余存储空间值确定是否继续发送剩余的音频数据。
可选的,该装置还包括:
数据删除模块660,用于在音频播放模块630根据时钟信号控制音频数据的播放之后,对缓存中已经播放部分的音频数据进行删除;
消息通知模块670,用于向音频源发送携带有缓存的剩余存储空间值的第二通知消息,第二通知消息用于指示音频源继续通过块传输模式向USB数字音频解码器发送剩余的音频数据,且所发送的剩余的音频数据所占用的存储空间值不超过剩余存储空间值。
可选的,音频播放模块630,包括:
第一播放单元631,用于当音频数据是音频源对封装格式的音频片段中的部分片段进行解码后发送的PCM格式或DSD格式的音频数据时,接收音频源发送的配置参数,根据配置参数和时钟信号控制音频数据的播放,配置参数位于封装格式的音频片段中;
第二播放单元632,用于当音频数据是基于PCM格式或DSD格式的音频数据进行封装得到的封装格式的音频片段中的部分片段时,从音频数据中读取配置参数,根据配置参数和时钟信号控制音频数据的播放。
可选的,配置参数是音频源首次发送封装格式的音频片段中的音频数据时,从封装格式的音频片段中获取到的,或者,
配置参数是音频源将各个音频片段转换成预定封装格式的音频片段,且首次发送其中任意一个预定封装格式的音频片段中的音频数据时,从预定封装格式的音频片段中获取到的。
可选的,连接建立模块610,包括:
第一建立单元611,用于当音频源是Android操作系统时,向音频源发送模式进入指令,模式进入指令用于指示音频源进入AoA模式,USB数字音频解码器将AoA模式所对应的原始数据通道确定为USB数字音频解码器与音频源之间的数据传输通道;
第二建立单元612,用于当音频源是iOS时,通过基于USB的TCP Tunnel连接音频源中被监听的预定端口,USB数字音频解码器将TCP Tunnel确定为USB数字音频解码器与音频源之间的数据传输通道。
综上所述,本发明实施例提供的音频播放装置,通过作为USB连接中的主设备的USB数字音频解码器与音频源建立USB连接;接收音频源通过块传输模式发送的音频数据,块传输模式是USB数据传输模式中的一种;生成时钟信号,并根据时钟信号控制音频数据的播放,由于USB数字音频解码器作为USB连接中的主设备时,不需要在音频源中安装与USB解码器配套的驱动程序,因此,解决了需要在音频源中安装驱动程序的问题,达到了提高USB数字音频解码器的兼容性和易用性的效果;另外,由于USB数字音频解码器生成时钟信号,当音频源发送的音频数据出错时,音频源可以重新发送音频数据,USB数字音频解码器在接收到正确的音频数据后再生成时钟信号,从而根据时钟信号控制该正确的音频数据的播放,解决了采用同步传输模式传输音频流数据和时钟信号时,无法重新传输出错的音频流数据的问题,达到了提高音频播放的准确性的效果。
另外,配置参数是音频源将各个音频片段转换成预定封装格式的音频片段,且首次发送其中任意一个预定封装格式的音频片段中的音频数据时,从预定封装格式的音频片段中获取到的,可以将音频片段统一转换成预定封装格式的音频片段,这样,只需要在首次发送该预定封装格式的音频片段中的音频数据时发送配置参数,USB数字音频解码器可以根据该配置参数配置所播放的所有音频数据,解决了音频片段的封装格式不同时,需要多次发送配置参数的问题,达到了节省传输资源的效果。
另外,通过对缓存中已经播放部分的音频数据进行删除;向音频源发送携带有缓存的剩余存储空间值的第二通知消息,使得音频源继续通过块传输模式向USB数字音频解码器发送剩余的音频数据,且所发送的剩余的音频数据所占用的存储空间值不超过剩余存储空间值,可以实时发送剩余的音频数据来替换已经播放部分的音频数据,保证了音频播放过程中的流畅性。
请参考图7,其示出了本发明一个实施例提供的音频播放装置的结构框图,该音频播放装置可以应用于作为USB连接中的从设备的音频源中。该音频播放装置,包括:
连接建立模块710,用于与USB数字音频解码器建立USB连接;
数据获取模块720,用于获取音频数据;
第一发送模块730,用于通过块传输模式将数据获取模块720获取的音频数据发送给USB数字音频解码器,块传输模式是USB数据传输模式中的一种,USB数字音频解码器用于生成时钟信号,并根据时钟信号控制音频数据的播放。
综上所述,本发明实施例提供的音频播放装置,通过作为USB连接中的从设备的音频源与USB数字音频解码器建立USB连接,通过块传输模式将音频数据发送给USB数字音频解码器,块传输模式是USB数据传输模式中的一种,该USB数字音频解码器用于生成时钟信号,并根据时钟信号控制音频数据的播放,由于USB数字音频解码器作为USB连接中的主设备时,不需要在音频源中安装与USB解码器配套的驱动程序,因此,解决了需要在音频源中安装驱动程序的问题,达到了提高USB数字音频解码器的兼容性和易用性的效果;另外,由于USB数字音频解码器生成时钟信号,当音频源发送的音频数据出错时,音频源可以重新发送音频数据,USB数字音频解码器在接收到正确的音频数据后再生成时钟信号,从而根据时钟信号控制该正确的音频数据的播放,解决了采用同步传输模式传输音频流数据和时钟信号时,无法重新传输出错的音频流数据的问题,达到了提高音频播放的准确性的效果。
请参考图8,其示出了本发明再一实施例提供的音频播放装置的结构框图,该音频播放装置可以应用于作为USB连接中的从设备的音频源中。该音频播放装置,包括:
连接建立模块810,用于与USB数字音频解码器建立USB连接;
数据获取模块820,用于获取音频数据;
第一发送模块830,用于通过块传输模式将数据获取模块820获取的音频数据发送给USB数字音频解码器,块传输模式是USB数据传输模式中的一种,USB数字音频解码器用于生成时钟信号,并根据时钟信号控制音频数据的播放。
可选的,该装置还包括:
第一控制模块840,用于在第一发送模块830通过块传输模式将音频数据发送给USB数字音频解码器之后,接收USB数字音频解码器发送的第一通知消息,根据第一通知消息暂停发送剩余的音频数据,第一通知消息是USB数字音频解码器在确定音频数据所占用的存储空间值等于缓存的总存储空间值后发送的;或者,
第二控制模块850,用于在第一发送模块830通过块传输模式将音频数据发送给USB数字音频解码器之后,向USB数字音频解码器发送中断信号,再向USB数字音频解码器发送空间值查询指令,接收USB数字音频解码器根据空间值查询指令发送的缓存的剩余存储空间值,根据剩余存储空间值确定是否继续发送剩余的音频数据,中断信号用于指示USB数字音频解码器等待接收音频源将要发送的信息。
可选的,该装置还包括:
消息接收模块860,用于在第一发送模块830通过块传输模式将音频数据发送给USB数字音频解码器之后,接收USB数字音频解码器发送的携带有缓存的剩余存储空间值的第二通知消息,第二通知消息是USB数字音频解码器对缓存中已经播放部分的音频数据进行删除后发送的;
第二发送模块870,用于继续通过块传输模式向USB数字音频解码器发送剩余的音频数据,且所发送的剩余的音频数据所占用的存储空间值不超过消息接收模块接收的剩余存储空间值。
可选的,该装置还包括:
参数配置模块880,用于当音频数据是音频源对封装格式的音频片段中的部分进行解码后发送的PCM格式或DSD格式的音频数据时,从封装格式的音频片段中获取配置参数,向USB数字音频解码器发送配置参数,USB数字音频解码器用于根据配置参数和时钟信号控制音频数据的播放。
可选的,参数配置模块880,包括:
第一获取单元881,用于在首次发送封装格式的音频片段中的音频数据时,从封装格式的音频片段中获取配置参数;或者,
第二获取单元882,用于将各个音频片段转换成预定封装格式的音频片段,且首次发送其中任意一个预定封装格式的音频片段中的音频数据时,从预定封装格式的音频片段中获取配置参数。
可选的,连接建立模块810,包括:
第一建立单元811,用于当音频源是Android操作系统时,接收USB数字音频解码器发送的模式进入指令,根据模式进入指令进入AoA模式,将AoA模式所对应的原始数据通道确定为USB数字音频解码器与音频源之间的数据传输通道;
第二建立单元812,用于当音频源是iOS时,监听预定端口,通过预定端口与USB数字音频解码器建立基于USB的TCP Tunnel的连接,将TCP Tunnel确定为USB数字音频解码器与音频源之间的数据传输通道。
综上所述,本发明实施例提供的音频播放装置,通过作为USB连接中的从设备的音频源与USB数字音频解码器建立USB连接,通过块传输模式将音频数据发送给USB数字音频解码器,块传输模式是USB数据传输模式中的一种,该USB数字音频解码器用于生成时钟信号,并根据时钟信号控制音频数据的播放,由于USB数字音频解码器作为USB连接中的主设备时,不需要在音频源中安装与USB解码器配套的驱动程序,因此,解决了需要在音频源中安装驱动程序的问题,达到了提高USB数字音频解码器的兼容性和易用性的效果;另外,由于USB数字音频解码器生成时钟信号,当音频源发送的音频数据出错时,音频源可以重新发送音频数据,USB数字音频解码器在接收到正确的音频数据后再生成时钟信号,从而根据时钟信号控制该正确的音频数据的播放,解决了采用同步传输模式传输音频流数据和时钟信号时,无法重新传输出错的音频流数据的问题,达到了提高音频播放的准确性的效果。
另外,配置参数是音频源将各个音频片段转换成预定封装格式的音频片段,且首次发送其中任意一个预定封装格式的音频片段中的音频数据时,从预定封装格式的音频片段中获取到的,可以将音频片段统一转换成预定封装格式的音频片段,这样,只需要在首次发送该预定封装格式的音频片段中的音频数据时发送配置参数,USB数字音频解码器可以根据该配置参数配置所播放的所有音频数据,解决了音频片段的封装格式不同时,需要多次发送配置参数的问题,达到了节省传输资源的效果。
另外,通过接收USB数字音频解码器发送的携带有缓存的剩余存储空间值的第二通知消息,继续通过块传输模式向USB数字音频解码器发送剩余的音频数据,且所发送的剩余的音频数据所占用的存储空间值不超过剩余存储空间值,可以实时发送剩余的音频数据来替换已经播放部分的音频数据,保证了音频播放过程中的流畅性。
需要说明的是:上述实施例提供的音频播放装置在进行音频播放时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将音频播放装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的音频播放装置与音频播放方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。