发明内容
本发明实施例提供了一种通过音频流传输自定义数据的方法、装置及可读存储介质,用于提供一种简单高效的自定义数据传输方法。
第一方面,本发明实施例提供了一种通过音频流传输自定义数据的方法,应用于主播终端,包括:
在所述主播终端与用户终端进行连麦语音时,获得当前时刻进行语音通话的自定义数据;
将主播语音与用户语音进行语音混音后,进行AAC编码,获得初始音频数据包;
将所述自定义数据插入至所述初始音频数据包尾部,获得目标音频数据包;
将所述目标音频数据包发送至预设对象,以使得所述预设对象将所述目标音频数据包分发至与所述主播终端连接的用户终端,接收到所述目标音频数据包的用户终端对所述目标音频数据包进行解析后输出所述自定义数据。
可选的,所述自定义数据包括在当前时刻参与语音通话的各用户终端的用户标识以及声音振幅信息,所述自定义数据按预设格式生成。
可选的,所述将所述自定义数据插入至所述初始音频数据包尾部,获得目标音频数据包,包括:
从所述初始音频数据包的尾部开始反向读取所述初始音频数据包的位序列,在读取到结束元素时,将所述自定义数据插入至所述结束元素的位置之前的位置,获得目标数据包。
可选的,所述将所述自定义数据插入至所述初始音频数据包尾部,获得目标音频数据包,包括:
确定所述自定义数据的数据长度;
基于所述数据长度与预设数据长度,将所述自定义数据分为N段,共计获得N段数据,其中,N为大于0的整数;
将所述N段数据分别填充至对应的N个填充元素中,每个填充元素中设置有该填充元素对应的数据签名;
将所述N个填充元素插入至所述初始音频数据包尾部,获得目标音频数据包。
第二方面,本发明实施例提供一种通过音频流传输自定义数据的方法,应用于用户终端,包括:
在所述用户终端与主播终端连接时,接收预设对象发送的目标音频数据包;
对所述目标音频数据包进行解析,获得自定义数据和音频数据,所述音频数据包括在当前时刻与所述主播终端进行连麦语音的主播语音和用户语音,所述自定义数据包括在当前时刻参与连麦语音的各个用户的相关信息;
输出所述音频数据以及所述自定义数据,以使得用户在通过所述用户终端收听所述主播终端的连麦语音时,可以获知参与所述连麦语音的各个用户的相关信息。
可选的,所述对所述目标音频数据包进行解析,获得自定义数据,包括:
依次读取所述目标音频数据包,如果读取到填充元素,对所述填充元素进行校验,在确定所述填充元素为所述自定义数据对应的元素时,将所述填充元素对应的自定义数据段加入预设存储空间;
直至读取到所述目标音频数据包的结束元素时,获得所述预设存储空间存储的N个填充元素,将所述N个填充元素按预设格式组装成自定义数据,其中,N为大于0的整数。
第三方面,本发明实施例提供一种通过音频流传输自定义数据的装置,应用于主播终端,包括:
第一获取单元,用于在所述主播终端与用户终端进行连麦语音时,获得当前时刻进行语音通话的自定义数据;
编码单元,用于将主播语音与用户语音进行语音混音后,进行AAC编码,获得初始音频数据包;
第二获取单元,用于将所述自定义数据插入至所述初始音频数据包尾部,获得目标音频数据包;
传输单元,用于将所述目标音频数据包发送至预设对象,以使得所述预设对象将所述目标音频数据包分发至与所述主播终端连接的用户终端,接收到所述目标音频数据包的用户终端对所述目标音频数据包进行解析后输出所述自定义数据。
可选的,所述自定义数据包括在当前时刻参与语音通话的各用户终端的用户标识以及声音振幅信息,所述自定义数据按预设格式生成。
可选的,所述第二获取单元具体用于:
从所述初始音频数据包的尾部开始反向读取所述初始音频数据包的位序列,在读取到结束元素时,将所述自定义数据插入至所述结束元素的位置之前的位置。
可选的,所述第二获取单元具体用于:
确定所述自定义数据的数据长度;
基于所述数据长度与预设数据长度,将所述自定义数据分为N段,共计获得N段数据,其中,N为大于0的整数;
将所述N段数据分别填充至对应的N个填充元素中,每个填充元素中设置有该填充元素对应的数据签名;
将所述N个填充元素插入至所述初始音频数据包尾部,获得目标音频数据包。
第四方面,本发明实施例提供一种通过音频流传输自定义数据的装置,应用于用户终端,包括:
接收单元,用于在所述用户终端与主播终端连接时,接收预设对象发送的目标音频数据包;
解析单元,用于对所述目标音频数据包进行解析,获得自定义数据和音频数据,所述音频数据包括在当前时刻与所述主播终端进行连麦语音的主播语音和用户语音,所述自定义数据包括在当前时刻参与连麦语音的各个用户的相关信息;
输出单元,用于输出所述音频数据以及所述自定义数据,以使得用户在通过所述用户终端收听所述主播终端的连麦语音时,可以获知参与所述连麦语音的各个用户的相关信息。
可选的,所述解析单元具体用于:
依次读取所述目标音频数据包,如果读取到填充元素,对所述填充元素进行校验,在确定所述填充元素为所述自定义数据对应的元素时,将所述填充元素对应的自定义数据段加入预设存储空间;
直至读取到所述目标音频数据包的结束元素时,获得所述预设存储空间存储的N个填充元素,将所述N个填充元素按预设格式组装成自定义数据,其中,N为大于0的整数。
第五方面,本发明实施例提供一种通过音频流传输自定义数据的装置,应用于主播终端,所述装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如前述第一方面实施例中所述的通过音频流传输自定义数据的方法的步骤。
第六方面,本发明实施例提供一种通过音频流传输自定义数据的装置,应用于用户终端,所述装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如前述第二方面实施例中所述的通过音频流传输自定义数据的方法的步骤。
第七方面,本发明实施例提供了一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前述第一方面或第二方面实施例中所述的通过音频流传输自定义数据的方法的步骤。
本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
在本发明实施例的技术方案中,在主播终端与用户终端进行连麦语音时,获得当前时刻进行语音通话的自定义数据,然后将主播语音与用户语音进行语音混音后,进行AAC编码,获得初始音频数据包,将自定义数据插入至初始音频数据包尾部,获得目标音频数据包,将目标音频数据包发送至预设对象,以使得预设对象将目标音频数据包分发至与主播终端连接的用户终端,接收到目标音频数据包的用户终端对目标音频数据包进行解析后输出自定义数据。这样,将自定义数据按对应的格式插入音频数据包中进行传输,可实现严格的音频与自定义数据的同步,开发成本低,并且,自定义数据对于数据传输量和数据类型没有限定,对于任何音视频关联性强的数据传输,这种方式都能满足传输要求。
具体实施方式
本发明实施例提供了一种通过音频流传输自定义数据的方法、装置及可读存储介质,用于提供一种简单高效的自定义数据传输方法。应用于主播客户端的方法包括:在所述主播终端与用户终端进行连麦语音时,获得当前时刻进行语音通话的自定义数据;将主播语音与用户语音进行语音混音后,进行AAC编码,获得初始音频数据包;将所述自定义数据插入至所述初始音频数据包尾部,获得目标音频数据包;将所述目标音频数据包发送至预设对象,以使得所述预设对象将所述目标音频数据包分发至与所述主播终端连接的用户终端,接收到所述目标音频数据包的用户终端对所述目标音频数据包进行解析后输出所述自定义数据。
下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
实施例
请参考图1,本发明第一实施例提供一种通过音频流传输自定义数据的方法,应用于主播终端,该通过音频流传输自定义数据的方法包括如下步骤:
S101:在所述主播终端与用户终端进行连麦语音时,获得当前时刻进行语音通话的自定义数据;
S102:将主播语音与用户语音进行语音混音后,进行AAC编码,获得初始音频数据包;
S103:将所述自定义数据插入至所述初始音频数据包尾部,获得目标音频数据包;
S104:将所述目标音频数据包发送至预设对象,以使得所述预设对象将所述目标音频数据包分发至与所述主播终端连接的用户终端,接收到所述目标音频数据包的用户终端对所述目标音频数据包进行解析后输出所述自定义数据。
其中,所述自定义数据包括在当前时刻参与语音通话的各用户终端的用户标识以及声音振幅信息,所述自定义数据按预设格式生成。
具体的,本实施例中通过音频流传输自定义数据的方法,可以应用于主播终端,主播终端可以是直播间主播使用的终端,具体可包括室内或室外、手持、穿戴或车载设备。例如,所述主播终端可以是智能手机、平板电脑、笔记本电脑、个人电脑(PC)等。在本发明实施例中,主播用户可以通过主播终端与所述服务器建立通信连接后在所在直播间进行在线直播,并实时将直播数据发送给服务器1,以便于其它用户终端访问服务器1观看该主播用户所在直播间。
在主播用户可通过主播终端进行直播过程中,可以开启连麦功能,与观看直播的多个用户进行语音互动。此时,通过步骤S101,在主播终端获得当前时刻进行连麦通话的多个用户输入的语音,以及各个用户对应的自定义数据,在本实施例中,自定义数据可以包括在当前时刻参与语音通话的各用户终端的用户标识以及声音振幅信息,当然,自定义数据还可以包括其他数据在具体实施过程中,自定义数据可根据实际需要进行设定,在此,本申请不做限制。比如:在当前时刻有用户B、用户C与主播A进行连麦语音,均在进行语音通话,此时,自定义数据包括主播A的用户标识uidA以及主播A的当前语音的声音振幅A,自定义数据包括用户B的用户标识uidB以及用户B的当前语音的声音振幅B,自定义数据包括用户C的用户标识uidC以及用户C的当前语音的声音振幅C。
自定义数据按预设格式生成,具体格式为0x10|<主播+用户人数>|<uid长度><uid><声音振幅>...,这里0x10表明一种应用数据类型,可以扩展其他类型,在此,本申请不做限制。<声音振幅>字段长度为1字节。沿用前述示例,自定义数据为0x10|<3>|<uidA长度><uidA><声音振幅A><uidB长度><uidB><声音振幅B><uidC长度><uidC><声音振幅C>。
进一步,通过步骤S102,将当前时刻的主播语音与用户语音进行语音混音,比如:可以采用多点控制单元(MCU)将多路音频信号混音为一路,如此可以有效降低网络数据的传输量。MCU混音的方式是:根据信号线性叠加的原理,将多路音频信号的采样量化数据叠加。然后对混音处理后的语音进行高级音频编码,即AAC编码,获得初始音频数据包。在具体实施过程中,对主播语音与用户语音进行混音处理的方式可根据实际需要进行设定,在此,本申请不做限制。并且。步骤S101中确定自定义数据和步骤S102中对主播语音和用户语音进行混音处理后进行AAC编码之间并没有执行的先后顺序,可根据实际需要设定执行顺序,在此,本申请不做限制。
进而,在确定好自定义数据以及初始音频数据包后,通过步骤S103,将自定义数据插入至初始音频数据包尾部,获得目标音频数据包。在向初始音频数据包插入自定义数据时,主要通过如下步骤实现:
从所述初始音频数据包的尾部开始反向读取所述初始音频数据包的位序列,在读取到结束元素时,将所述自定义数据插入至所述结束元素的位置之前的位置。
具体的,在本实施例中,由于需要将自定义数据插入到初始音频数据包尾部,所以,可以从初始音频数据包尾部的尾部反向读取位序列,读取到结束元素ID_END时,将自定义数据插入至ID_END元素的位置之前的位置。这样,能有效减少目标数据生成时间,提高数据传输实时性。
进一步,在将所述自定义数据插入至初始音频数据包尾部时,还需要考虑数据长度,具体包括如下步骤:
确定所述自定义数据的数据长度;
基于所述数据长度与预设数据长度,将所述自定义数据分为N段,共计获得N段数据,其中,N为大于0的整数;
将所述N段数据分别填充至对应的N个填充元素中,每个填充元素中设置有该填充元素对应的数据签名;
将所述N个填充元素插入至所述初始音频数据包尾部,获得目标音频数据包。
具体的,在本实施例中,自定义数据主要以填充元素ID_FIL的形式插入初始音频数据包尾部,在AAC中规定,AAC的ID_FIL元素最多269个字节,减去固定的9个字节标识前缀,剩余260字节可以填充数据。所以,需要确定自定义数据的数据长度,在自定义数据的数据长度小于或等于预设数据长度260字节情况下,所有的自定义数据可以填充至一个ID_FIL元素,进而将该ID_FIL元素插入至初始音频数据包尾部,形成目标数据。在自定义数据的数据长度大于预设数据长度260字节情况下,可以对自定义数据进行分段,具体的,自定义数据的长度为L,L/260的值为整数N时,则可将其分为N段数据,在L/260的值为商N-1,余M情况下,也可将其分为N段数据,即最后不满260字节的自定义数据可以归为一段。当然,在具体实施过程中,还可以根据实际需要设定每段的长度,仅需每段数据长度不超过260字节即可,在此,本申请对分段方式并不限制。
ID_FIL元素中包括9个字节标识前缀,AAC中定义的ID_FIL元素格式是0x06|<count>|[<esc_count>]|<填充数据>,0x06是ID_FIL元素的标识,count是后面字节数,如果超过15,则有esc_count字段。每一段自定义数据作为<填充元素>,组织到一个ID_FIL元素中,格式为0x01|0x02|0x03|0x04|'d'|'o'|'u'|'y’|<自定义数据段>,0x01|0x02|0x03|0x04|'d'|'o'|'u'|'y'|相当于该ID_FIL元素对应的自定义数据的数据签名,避免与其他的ID_FIL元素混淆,表明其有自定义数据嵌入。在根据自定义数据形成N个ID_FIL元素后,将其依次插入到初始音频数据包尾部,形成目标音频数据包。
在形成好目标音频数据包后,可通过步骤S104,将目标音频数据包发送至预设对象,预设对象可以是CDN系统的CDN节点,通过CDN节点将目标音频数据包分发至观看该主播终端的直播的所有用户终端的用户。当然,主播终端还可以直接将其发送至观看该主播终端的直播的所有用户终端的用户。
进而,在与主播终端连接的用户终端侧,可以执行如下步骤对目标音频数据包进行处理:
在所述用户终端与主播终端连接时,接收预设对象发送的目标音频数据包;
对所述目标音频数据包进行解析,获得自定义数据和音频数据,所述音频数据包括在当前时刻与所述主播终端进行连麦语音的主播语音和用户语音,所述自定义数据包括在当前时刻参与连麦语音的各个用户的相关信息;
输出所述音频数据以及所述自定义数据,以使得用户在通过所述用户终端收听所述主播终端的连麦语音时,可以获知参与所述连麦语音的各个用户的相关信息。
其中,所述对所述目标音频数据包进行解析,获得自定义数据,包括:
依次读取所述目标音频数据包,如果读取到填充元素,对所述填充元素进行校验,在确定所述填充元素为所述自定义数据对应的元素时,将所述填充元素对应的自定义数据段加入预设存储空间;
直至读取到所述目标音频数据包的结束元素时,获得所述预设存储空间存储的N个填充元素,将所述N个填充元素按预设格式组装成自定义数据,其中,N为大于0的整数。
具体的,在本实施例中,用户终端接收到CDN节点分发的主播终端生成的目标音频数据包后,对目标音频数据包进行解析,得到对应的音频数据和自定义数据,音频数据即为在当前时刻说话的用户的语音,自定义数据即为在当前时刻说话者的相关信息,包括说话者的用户标识和声音振幅等。
在解析目标音频数据包时,按顺序依次读取目标音频数据包中的元素,如果读取到的是ID_SCE、ID_CPE、ID_CCE、ID_LFE或ID_PCE等元素,则说明是普通的音频数据元素,进行AAC音频解码,得到音频数据。如果读取到的是ID_FIL元素,说明该ID_FIL元素中可能包含自定义数据,所以可以对该ID_FIL元素进行校验,即验证[0x01,0x02,0x03,0x04,0x05,'d','o','u','y]的字节数组,验证通过,说明该ID_FIL元素中填充有自定义数据段,通过解析的字节序列长度字段读取这个自定义数据段,保存到预设存储空间,比如保存至自定义字节序列数组中。
按此方式依次读取目标音频数据包,如果读取到结束元素,即ID_END元素,说明目标音频数据包已经全部读取完成,解析结束,预设存储空间中完整保存了N段自定义数据段,可还原为完整的自定义数据,转到数据处理。
将解码出的音频数据输出到音频输出设备,将自定义数据按照预先定义好的数据格式进行解析,跟主播终端一致,即:0x10|<主播+用户人数>|<uid长度><uid><声音振幅>...。得到uid及对应的声音振幅信息,输出到直播应用程序的UI层进行展示,这样,用户终端的用户就可以收听到说话者声音,同时观看到说话者图像动态展示效果,比如:用户标识uid对应该用户的头像及账户名称,声音振幅可以展示动态的振幅图像,这样,对观众而言,可以将用户声音和用户图像进行关联,使其获得良好的应用体验。
由本实施例中的方法可知,无需为自定义数据专设一路数据流,将自定义数据插入至音频数据包即可按直播流进行传输至各个用户终端,不依赖于第三方CDN厂商,不依赖于CDN系统,对CDN系统透明。主播在直播过程中,与其他用户连麦,同时有多人语音聊天,这些声音信息通过直播CDN系统传输到用户终端的播放器输出。同时,说话者说话时,可以标识出每个用户,即获得对应音频数据的说话者用户标识(uid)和声音振幅信息,这些信息按照事先定义的格式,通过本实施例中的方法,嵌入到编码的AAC音频包里,发送到CDN系统。在观众对应的用户终端,播放器解析出这种嵌入到AAC音频包中的自定义数据,实现声音数据输出的同时,同步输出声音对应的说话者用户标识以及声音振幅信息。可实现严格的音频数据与自定义数据的同步,并且开发成本低,自定义数据对于数据传输量和数据类型没有限定,对于任何音视频关联性很强的数据传输,这种方式都能满足传输要求。
请参见图2,本发明的第二实施例提供了一种通过音频流传输自定义数据的方法,应用于用户终端,包括:
S201:在所述用户终端与主播终端连接时,接收预设对象发送的目标音频数据包;
S202:对所述目标音频数据包进行解析,获得自定义数据和音频数据,所述音频数据包括在当前时刻与所述主播终端进行连麦语音的主播语音和用户语音,所述自定义数据包括在当前时刻参与连麦语音的各个用户的相关信息;
S203:输出所述音频数据以及所述自定义数据,以使得用户在通过所述用户终端收听所述主播终端的连麦语音时,可以获知参与所述连麦语音的各个用户的相关信息。
在一种可能的实现方式中,所述对所述目标音频数据包进行解析,获得自定义数据,包括:
依次读取所述目标音频数据包,如果读取到填充元素,对所述填充元素进行校验,在确定所述填充元素为所述自定义数据对应的元素时,将所述填充元素对应的自定义数据段加入预设存储空间;
直至读取到所述目标音频数据包的结束元素时,获得所述预设存储空间存储的N个填充元素,将所述N个填充元素按预设格式组装成自定义数据,其中,N为大于0的整数。
本实施例中的用户终端可以是与主播终端连接观看直播的观众所使用的电子设备,具体可包括室内或室外、手持、穿戴或车载设备。例如,所述用户终端可以是智能手机、平板电脑、笔记本电脑、个人电脑(PC)等。在此,本申请不做限制。
用户终端接收到目标音频数据包后,对目标音频数据包的解析过程已在前述第一实施例中完整阐述,可参照第一实施例,在此,本申请不做赘述。
请参见图3,本发明的第三实施例提供了一种通过音频流传输自定义数据的装置,应用于主播终端,包括:
第一获取单元301,用于在所述主播终端与用户终端进行连麦语音时,获得当前时刻进行语音通话的自定义数据;
编码单元302,用于将主播语音与用户语音进行语音混音后,进行AAC编码,获得初始音频数据包;
第二获取单元303,用于将所述自定义数据插入至所述初始音频数据包尾部,获得目标音频数据包;
传输单元304,用于将所述目标音频数据包发送至预设对象,以使得所述预设对象将所述目标音频数据包分发至与所述主播终端连接的用户终端,接收到所述目标音频数据包的用户终端对所述目标音频数据包进行解析后输出所述自定义数据。
在一种可能的实现方式中,所述自定义数据包括在当前时刻参与语音通话的各用户终端的用户标识以及声音振幅信息,所述自定义数据按预设格式生成。
在一种可能的实现方式中,所述第二获取单元具体用于:
从所述初始音频数据包的尾部开始反向读取所述初始音频数据包的位序列,在读取到结束元素时,将所述自定义数据插入至所述结束元素的位置之前的位置。
在一种可能的实现方式中,所述第二获取单元具体用于:
确定所述自定义数据的数据长度;
基于所述数据长度与预设数据长度,将所述自定义数据分为N段,共计获得N段数据,其中,N为大于0的整数;
将所述N段数据分别填充至对应的N个填充元素中,每个填充元素中设置有该填充元素对应的数据签名;
将所述N个填充元素插入至所述初始音频数据包尾部,获得目标音频数据包。
本实施例中的装置实现自定义数据传输的过程已在第一实施例中完整阐述,在此,本申请不做赘述。
请参见图4,本发明的第四实施例提供了一种通过音频流传输自定义数据的装置,应用于用户终端,包括:
接收单元401,用于在所述用户终端与主播终端连接时,接收预设对象发送的目标音频数据包;
解析单元402,用于对所述目标音频数据包进行解析,获得自定义数据和音频数据,所述音频数据包括在当前时刻与所述主播终端进行连麦语音的主播语音和用户语音,所述自定义数据包括在当前时刻参与连麦语音的各个用户的相关信息;
输出单元403,用于输出所述音频数据以及所述自定义数据,以使得用户在通过所述用户终端收听所述主播终端的连麦语音时,可以获知参与所述连麦语音的各个用户的相关信息。
在一种可能的实现方式中,所述解析单元具体用于:
依次读取所述目标音频数据包,如果读取到填充元素,对所述填充元素进行校验,在确定所述填充元素为所述自定义数据对应的元素时,将所述填充元素对应的自定义数据段加入预设存储空间;
直至读取到所述目标音频数据包的结束元素时,获得所述预设存储空间存储的N个填充元素,将所述N个填充元素按预设格式组装成自定义数据,其中,N为大于0的整数。
本实施例中的装置实现自定义数据传输的过程已在第一实施例中完整阐述,在此,本申请不做赘述。
请参见图5,本发明的第五实施例提供了一种通过音频流传输自定义数据的装置,该实施例的装置包括:处理器501、存储器502以及存储在所述存储器中并可在所述处理器上运行的计算机程序,例如第一实施例或第二实施例中通过音频流传输自定义数据的方法对应的程序。所述处理器执行所述计算机程序时实现上述第一实施例或第二实施例中的步骤。或者,所述处理器执行所述计算机程序时实现上述第二实施例的装置中各模块/单元的功能。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述计算机装置中的执行过程。
所述装置可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,所述示意图5仅仅是计算机装置的示例,并不构成对装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述装置还可以包括输入输出设备、网络接入设备、总线等。
所称处理器501可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
所述存储器502可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述计算机装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、视频数据等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本发明第六实施例提供了一种计算机可读存储介质,其上存储有计算机程序,本发明第三实施例或第四实施例中的所述通过音频流传输自定义数据的装置集成的功能单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述第一实施例或第二实施例的通过音频流传输自定义数据的方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。