计算;推算;计数设备的制造及其应用技术1.本公开涉及音频处理技术领域,尤其涉及一种音频播放方法、音频播放装置和音频播放设备。背景技术:2.超文本标记语言的第五修订版(被称作“html5”,简称“h5”)由称为万维网协会(“w3c”)的国际标准组织正式地定义。html5包括涉及下一代web技术的多于100个规范。html5描述了被配置成使得设计者和开发者能够构建下一代web站点和应用(app)的一组html、css(级联样式表)以及javascript规范。3.随着html5活动的种类增加,在html5中加载音频的需求越来越多。如何在h5中实现无缝衔接播放音频亟待解决。技术实现要素:4.本公开提供一种音频播放方法和音频播放装置,以至少解决上述问题。本公开的技术方案如下:5.根据本公开实施例的第一方面,提供一种音频播放方法,所述方法可包括:获取用于循环播放的音频对象;确定所述音频对象的当前播放时间和所述音频对象的原始持续时间中的至少一个;对所述音频对象的当前播放时间和所述音频对象的原始持续时间中的至少一个进行调整;并且按照调整后的播放时间和调整后的持续时间中的至少一个,播放所述音频对象。6.作为一种实施方式,对所述音频对象的当前播放时间和所述音频对象的原始持续时间中的至少一个进行调整,可包括:通过监测所述音频对象的当前播放时间,确定所述音频对象的当前播放时间和所述原始持续时间是否满足预设时间条件;当所述音频对象的前播放时间和所述原始持续时间满足所述预设时间条件时,将所述音频对象的当前播放时间设置到指定播放时间,作为所述音频对象在下一轮播放时的开始播放时间。7.作为一种实施方式,确定所述音频对象的当前播放时间和所述原始持续时间是否满足预设时间条件,可包括:确定所述音频对象的当前播放时间是否大于所述原始持续时间与第一超前播放阈值之差;如果所述音频对象的当前播放时间大于所述原始持续时间与第一超前播放阈值之差,则确定满足所述预设时间条件。8.作为一种实施方式,将所述音频对象的当前播放时间设置到指定播放时间,可包括:将所述音频对象的当前播放时间设置为初始播放时间。9.作为一种实施方式,监测所述音频对象的当前播放时间,可包括:通过监听所述音频对象的时间更新事件来实时监测所述音频对象的当前播放时间,其中,当所述音频对象的当前播放时间发生改变时,所述音频对象的时间更新事件被触发并监听。10.作为一种实施方式,获取用于循环播放的音频对象,可包括:通过html5中的音频获取函数来获取所述音频对象。11.作为一种实施方式,确定所述音频对象的当前播放时间和所述音频对象的原始持续时间中的至少一个,可包括:根据html5中所述音频对象的当前时间属性的返回值确定所述音频对象的当前播放时间;和/或根据html5中所述音频对象的持续时间属性的返回值确定所述音频对象的原始持续时间。12.作为一种实施方式,监听所述音频对象的时间更新事件,可包括:通过html5中的事件监听函数来监听所述时间更新事件。13.作为一种实施方式,获取用于循环播放的音频对象,可包括:创建音频缓冲资源节点;通过设置所述音频缓冲资源节点的缓冲属性,获取所述音频对象。14.作为一种实施方式,对所述音频对象的当前播放时间和所述音频对象的原始持续时间中的至少一个进行调整,可包括:从所述音频对象的原始持续时间减去第二超前播放阈值,其中,所述音频对象的原始持续时间基于所述缓冲属性被确定;并且将所述音频对象的原始持续时间与第二超前播放阈值之差作为所述音频对象在循环播放时的实际持续时间。15.作为一种实施方式,按照调整后的播放时间和调整后的持续时间中的至少一个,播放所述音频对象,可包括:基于所述音频对象在循环播放时的实际持续时间,设置所述音频缓冲资源节点的开始播放函数中的参数;通过循环调用设置后的所述开始播放函数,播放所述音频对象。16.根据本公开实施例的第二方面,提供一种音频播放装置,所述装置可包括:音频获取模块,被配置为获取用于循环播放的音频对象;音频处理模块,被配置为:确定所述音频对象的当前播放时间和所述音频对象的原始持续时间中的至少一个;对所述音频对象的当前播放时间和所述音频对象的原始持续时间中的至少一个进行调整;并且按照调整后的播放时间和调整后的持续时间中的至少一个,播放所述音频对象。17.作为一种实施方式,音频处理模块可被配置为:通过监测所述音频对象的当前播放时间,确定所述音频对象的当前播放时间和所述原始持续时间是否满足预设时间条件;当所述音频对象的前播放时间和所述原始持续时间满足所述预设时间条件时,将所述音频对象的当前播放时间设置到指定播放时间,作为所述音频对象在下一轮播放时的开始播放时间。18.作为一种实施方式,音频处理模块可被配置为:确定所述音频对象的当前播放时间是否大于所述原始持续时间与第一超前播放阈值之差;如果所述音频对象的当前播放时间大于所述原始持续时间与第一超前播放阈值之差,则确定满足所述预设时间条件。19.作为一种实施方式,音频处理模块可被配置为将所述音频对象的当前播放时间设置为初始播放时间。20.作为一种实施方式,音频处理模块可被配置为:通过监听所述音频对象的时间更新事件来实时监测所述音频对象的当前播放时间,其中,当所述音频对象的当前播放时间发生改变时,所述音频对象的时间更新事件被触发并监听。21.作为一种实施方式,音频获取模块可被配置为:通过html5中的音频获取函数来获取所述音频对象。22.作为一种实施方式,音频处理模块可被配置为:根据html5中所述音频对象的当前时间属性的返回值确定所述音频对象的当前播放时间;和/或根据html5中所述音频对象的持续时间属性的返回值确定所述音频对象的原始持续时间。23.作为一种实施方式,音频处理模块可被配置为:通过html5中的事件监听函数来监听所述时间更新事件。24.作为一种实施方式,音频获取模块可被配置为:创建音频缓冲资源节点;通过设置所述音频缓冲资源节点的缓冲属性,获取所述音频对象。25.作为一种实施方式,音频处理模块可被配置为:从所述音频对象的原始持续时间减去第二超前播放阈值,其中,所述音频对象的原始持续时间基于所述缓冲属性被确定;并且将所述音频对象的原始持续时间与第二超前播放阈值之差作为所述音频对象在循环播放时的实际持续时间。26.作为一种实施方式,音频处理模块可被配置为:基于所述音频对象在循环播放时的实际持续时间,设置所述音频缓冲资源节点的开始播放函数中的参数;通过循环调用设置后的所述开始播放函数,播放所述音频对象。27.根据本公开实施例的第三方面,提供一种电子设备,所述电子设备可包括:至少一个处理器;至少一个存储计算机可执行指令的存储器,其中,所述计算机可执行指令在被所述至少一个处理器运行时,促使所述至少一个处理器执行如上所述的音频播放方法。28.根据本公开实施例的第四方面,提供一种存储指令的计算机可读存储介质,当所述指令被至少一个处理器运行时,促使所述至少一个处理器执行如上所述的音频播放方法。29.根据本公开实施例的第五方面,提供一种计算机程序产品,所述计算机程序产品中的指令被电子装置中的至少一个处理器运行以执行如上所述的音频播放方法。30.本公开的实施例提供的技术方案至少带来以下有益效果:31.通过在html5中调整音频对象的当前播放时间和/或音频对象的原始持续时间来实现音频对象的循环无缝播放,从而提高用户体验。32.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。附图说明33.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。34.图1是根据本公开的实施例的html5中的音频播放方法的流程图;35.图2是根据本公开的另一实施例的html5中的音频播放方法的流程图;36.图3是根据本公开的又一实施例的html5中的音频播放方法的流程图;37.图4是根据本公开的实施例的音频播放装置的框图;38.图5是根据本公开的实施例的音频播放设备的结构示意图;39.图6是根据本公开的实施例的电子设备的框图。具体实施方式40.为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。41.提供参照附图的以下描述以帮助对由权利要求及其等同物限定的本公开的实施例的全面理解。包括各种特定细节以帮助理解,但这些细节仅被视为是示例性的。因此,本领域的普通技术人员将认识到在不脱离本公开的范围和精神的情况下,可对描述于此的实施例进行各种改变和修改。此外,为了清楚和简洁,省略对公知的功能和结构的描述。42.以下描述和权利要求中使用的术语和词语不限于书面含义,而仅由发明人用来实现本公开的清楚且一致的理解。因此,本领域的技术人员应清楚,本公开的各种实施例的以下描述仅被提供用于说明目的而不用于限制由权利要求及其等同物限定的本公开的目的。43.需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。44.针对h5实现音频播放目前是有两种方式,一种是new audio方式,一种是audiocontext方式,这两种方式通过直接设置loop循环实现音频播放。基于以上设置loop的方式循环播放,当一轮音频播放完进入新一轮时,用户可以听到明显的卡顿。45.此外,通常h5中的音频作为中场转折,特定场景仅需要3-6秒,此时可制作一个3-6秒的音频来替换原先的音频资源,避免设置loop循环播放,从而避免循环节点结束卡顿。例如,某个场景需要循环播放某个音频对象持续6秒的时长,而该音频对象的持续时间为0.5秒,这种情况下,需要循环播放该音频对象12次来满足播放要求。现有方案是直接制作一个6秒的音频对象来替换多次循环播放音频对象。46.然而,上述方案需要的3-6秒的音频资源体积过大,在h5加载音频资源时会损耗https请求宽带以及返回时间增长。此外,对于直接制作某个场景需要的音频不够灵活,如果一个音频不是3-6秒播放时长,则音频的大小是不可估算的,从而音频大小也会随着秒数增加而增大,过大的音频资源加载成功率也会降低。47.针对上述问题,本公开设计了在不增加音频时长和体积的前提下,以最小音频时间长和体积来解决h5中的循环无缝衔接播放问题的方案。48.在下文中,根据本公开的各种实施例,将参照附图对本公开的方法、装置和设备进行详细描述。49.图1是根据本公开的实施例的html5中的音频播放方法的流程图。根据本公开实施例的音频播放方法可在任何具有音频播放功能的电子设备中实现。电子设备可以是包括如下中的至少一个,例如,智能电话、平板个人计算机(pc)、移动电话、视频电话、电子书阅读器(e-book reader)、桌上型pc、膝上型pc、上网本计算机、工作站、服务器、个人数字助理(pda)、便携式多媒体播放器(pmp)、视频播放器、可穿戴装置和服务器等。50.参照图1,在步骤s101,获取用于循环播放的音频对象。音频对象可表示具有一定时间长度的音频文件。例如,音频对象可以是一段持续时间为0.5秒的铃声音频。51.对于h5中的new audio方式,可利用h5中的音频获取函数(诸如new audio()函数)来创建音频文件,从而获取到将要循环播放的音频对象。例如,可通过new audio()函数得到音频对象audiofile。52.对于h5中的audiocontext方式,可首先创建音频缓冲资源节点,通过设置音频缓冲资源节点的缓冲buffer属性,获取音频对象。53.audiocontext接口表示由链接在一起的音频模块构建的音频处理图,每个音频模块由一个音频缓冲资源节点表示。音频上下文控制它包含的节点的创建和音频处理或解码的执行。在做任何其他操作之前,需要创建一个audiocontext对象,因为所有事情都是在上下文中发生的。54.音频缓冲资源节点可被理解为一个音频源,它可包含写在内存中的音频数据。通过设置音频缓冲资源节点buffer属性,使该音频缓冲资源节点包含将被使用的音频对象。例如,通过h5中的new(window.audiocontext||window.webkitaudiocontext)()函数得到音频上下文audioctx,通过audioctx.createbuffersource()函数得到音频缓冲资源节点audiobuffersourcenode,在对audiobuffersourcenode设置完buffer属性和连接connect后,即实现了对将被使用的音频对象的初始化。55.在步骤s102,确定音频对象的当前播放时间和音频对象的原始持续时间中的至少一个。56.对于h5中的new audio方式,可根据html5中音频对象的当前时间currenttime属性的返回值确定音频对象的当前播放时间(即音频对象当前播放到的位置)。可根据html5中音频对象的持续时间duration属性的返回值确定音频对象的原始持续时间。audio currenttime属性被用于设置或返回音频播放的当前位置,以秒的形式返回音频播放位置。设置此属性后,播放跳至指定位置。例如,通过audiofile的currenttime实时获取音频对象的播放时间,通过audiofile的duration获取音频对象的原始持续时间。57.对于h5中的audiocontext方式,可基于音频缓冲资源节点的buffer属性确定音频对象的原始持续时间。例如,可通过buffer.duration()得到音频对象的原始持续时间initduration。可将用于创建音频缓冲资源节点的音频上下文的当前时间audioctx.currenttime作为音频对象的开始播放时间。58.在步骤s103,对音频对象的当前播放时间和音频对象的原始持续时间中的至少一个进行调整。59.对于h5中的new audio方式,音频在播放完一轮后有停顿感,说明进入下一轮中间有延时,可以监听音频播放的时机,提前进入下一轮播放,这样可以将中间的一段延时差跳过。60.可通过监测音频对象的当前播放时间(即与当前播放位置对应的时间),确定音频对象的当前播放时间和原始持续时间是否满足预设时间条件。当音频对象的前播放时间和原始持续时间满足预设时间条件时,将音频对象的当前播放时间设置到指定播放时间,作为音频对象在下一轮播放时的开始播放时间。61.作为示例,可确定音频对象的当前播放时间(即与当前播放位置对应的时间)是否大于原始持续时间与第一超前播放阈值之差。如果音频对象的当前播放时间大于原始持续时间与第一超前播放阈值之差,则确定满足预设时间条件。62.例如,在满足预设时间条件时,可将音频对象的当前播放时间设置为初始播放时间,诸如初始播放位置0。63.通常,以new audio方式循环播放的音频对象的超前播放阈值audiothreshold在0.24秒左右,因此,在audiofile.currenttime》(audiofile.duration-audiothreshold)时,可设置audiofile.currenttime为0。其中,audiofile.currenttime直接取值时表示返回音频播放时间,设置值时表示指定播放时间,设置为0表示从头开始播放,这样即实现了无缝衔接循环播放。64.当音频对象的当前播放位置/当前播放时间发生改变时,音频对象的时间更新事件被触发。因此,可通过监听音频对象的时间更新事件来实时监测音频对象的当前播放时间。例如,可通过html5中的事件监听函数(诸如addeventlistene()函数)来监听时间更新事件。65.对于h5中的audiocontext方式,考虑到如果直接使用音频对象的原始持续时间initduration,则在循环播放时中间会出现卡顿的情况。因此,可从音频对象的原始持续时间减去第二超前播放阈值,其中,音频对象的原始持续时间基于buffer属性被确定,将音频对象的原始持续时间与第二超前播放阈值之差作为音频对象在循环播放时的实际持续时间。经过测试实验,一般超前播放阀值thresholdtime为0.1秒。因此,可从音频对象的原始持续时间initduration减去thresholdtime作为音频对象的持续时间。66.在步骤s104,按照调整后的播放时间和调整后的持续时间中的至少一个,播放音频对象。67.对于h5中的new audio方式,当对音频对象的当前播放时间进行设置后,可将音频对象从指定播放时间开始播放。68.对于h5中的audiocontext方式,基于音频对象在循环播放时的实际持续时间,设置音频缓冲资源节点的开始播放函数中的参数,通过循环调用设置后的开始播放函数,播放音频对象。69.作为示例,开始播放函数可以是html5中audiobuffersourcenode.start([when][,offset][,duration])函数,其中,audiobuffersourcenode.start([when][,offset][,duration])函数中的参数duration可被设置为音频对象在循环播放时的实际持续时间,audiobuffersourcenode.start([when][,offset][,duration])函数中的参数when可被设置为用于创建音频缓冲资源节点的音频上下文的当前时间或者0。[0070]接下来,需要设置audiobuffersourcenode.loop值为true,表示循环播放。至此,实现循环无缝播放。应注意,设置audiobuffersourcenode.loop值为true需要放在audiobuffersourcenode.start()之后才能实现循环播放。[0071]本公开解决了h5中不同音频初始化场景下的无缝循环播放技术问题。[0072]根据本公开的实施例,为直播间音频播放增加了扩展能力,使音频播放循环无缝丝滑进行,通过有效的无缝循环方式减少了原始音频的大小,使得加载音频资源的时间变得更短。[0073]图2是根据本公开的另一实施例的html5中的音频播放方法的流程图。图2所示的方法主要用于解决web h5在new audio方案下的循环无缝衔接播放问题。[0074]参照图2,在步骤s201,获取用于循环播放的音频对象。例如,通过html5中的new audio()函数来创建音频对象audiofile。[0075]在步骤s202,监听音频对象的时间更新事件。当音频对象的当前播放时间发生改变时,音频对象的时间更新事件被触发。通过监听音频对象的时间更新事件来实时监测音频对象的当前播放时间。例如,可通过html5中的addeventlistene()函数来监听时间更新timeupdate事件。[0076]在步骤s203,确定音频对象的当前播放时间和原始持续时间是否满足预设时间条件。例如,可确定音频对象的当前播放时间是否大于原始持续时间与第一超前播放阈值之差,如果音频对象的当前播放时间大于原始持续时间与第一超前播放阈值之差,则确定满足预设时间条件。通常audiofile的超前播放阈值误差在0.24秒左右。因此,监听timeupdate事件,判断是否满足audiofile.currenttime》(audiofile.duration–audiothreshold)。[0077]可根据html5中音频对象的当前时间currenttime属性的返回值确定音频对象的当前播放时间。根据html5中音频对象的持续时间duration属性的返回值确定音频对象的原始持续时间。例如,通过audiofile的currenttime获取音频对象的播放时间,通过audiofile的duration获取音频对象的原始持续时间。[0078]当满足预设时间条件时,可进行步骤s204,当不满足预设时间条件时,可继续监听音频对象的时间更新事件。[0079]在步骤s204,当音频对象的前播放时间和原始持续时间满足预设时间条件时,将音频对象的当前播放时间设置到指定播放时间,作为音频对象在下一轮播放时的开始播放时间。例如,可将音频对象的当前播放时间设置为初始播放时间0。[0080]监听timeupdate事件,在audiofile.currenttime》(audiofile.duration–audiothreshold)时,可设置audiofile.currenttime为0。其中,audiofile.currenttime直接取值时是返回音频播放时间,设置值时是指定播放时间,设置为0表示从头开始播放,这样即实现了无缝衔接循环播放。[0081]作为示例,可在h5中通过以下程序来实现在new audio方案下的循环无缝衔接播放。[0082][0083]上述示例仅是示例性的,本公开不限于此。图2所示的方法可通过改变音频对象的当前播放时间来h5中的实现循环无缝播放。[0084]图3是根据本公开的又一实施例的html5中的音频播放方法的流程图。图3所示的方法主要用于解决web h5在audiocontext方案下的循环无缝衔接播放问题。[0085]参照图3,在步骤s301,创建音频缓冲资源节点。例如,可通过new(window.audiocontext||window.webkitaudiocontext)()得到音频上下文audioctx,通过audioctx.createbuffersource()得到音频缓冲资源节点audiobuffersourcenode。[0086]在步骤s302,设置音频缓冲资源节点的buffer属性。例如,在audiobuffersourcenode被设置完buffer和connect后,可获取到将被使用的音频对象。此步骤可被理解为对音频对象的初始化。[0087]在步骤s303,确定音频对象在循环播放时的实际持续时间。这里的实际持续时间可指在h5中循环播放音频对象时,该音频对象每轮被播放时的真实持续时间,而非该音频对象在初始化时的原始持续时间。[0088]在设置完音频缓冲资源节点的buffer属性后可获取到将被使用的音频对象的原始持续时间。可从音频对象的原始持续时间减去第二超前播放阈值,将音频对象的原始持续时间与第二超前播放阈值之差作为音频对象在循环播放时的实际持续时间。例如,第二超前播放阈值被设置为0.1秒。上述示例仅是示例性的,本公开不限于此。[0089]在步骤s304,设置音频缓冲资源节点的开始播放函数中的参数。[0090]因为audiobuffersourcenode没有timeupdate来实时监听音频播放进度的应用程序接口api,所以无法通过监听适当时机来进行超前播放。但是发明人发现,sdk文档存在一个audiobuffersourcenode.start([when][,offset][,duration])方法,其中,when[可选]:表示音频开始播放的时间,当when被设置为0时,表示立即被播放;offset[可选]:表示偏移;duration[可选]:表示将要播放的音频的持续时间。[0091]为了实现无缝播放,start()方法的第三个参数duration不能是原始持续时间initduration。如果直接使用initduration,则循环播放中间会出现卡顿现象。[0092]可基于音频对象在循环播放时的实际持续时间,设置音频缓冲资源节点的开始播放函数中的参数。通过循环调用设置后的开始播放函数,播放音频对象。[0093]audiobuffersourcenode.start([when][,offset][,duration])函数中的参数duration可被设置为音频对象在循环播放时的实际持续时间,audiobuffersourcenode.start([when][,offset][,duration])函数中的参数when可被设置为用于创建音频缓冲资源节点的音频上下文的当前时间或者0。[0094]例如,start()中的参数when可直接取audioctx.currenttime。一般地,超前播放阀值thresholdtime为0.1秒,因此initduration减去thresholdtime可作为音频播放的真正持续时间,即start()中的参数duration。[0095]在步骤s305,通过循环调用设置后的开始播放函数,播放音频对象。在设置完start()方法后,可设置audiobuffersourcenode.loop值为true,表示循环播放。设置loop为true必须放在start()方法之后才能实现循环。[0096]作为示例,可在h5中通过以下程序来实现在audiocontext方案下的循环无缝衔接播放。[0097][0098]上述示例仅是示例性的,本公开不限于此。图3所示的方法可通过改变音频对象的原始持续时间来实现h5中的循环无缝播放。[0099]图4是根据本公开的实施例的音频播放装置的框图。图4所示的音频播放装置400可用于实现html5中的循环无缝播放。[0100]参照图4,音频播放装置400可包括音频获取模块401和音频处理模块402。音频播放装置400中的每个模块可由一个或多个模块来实现,并且对应模块的名称可根据模块的类型而变化。在各种实施例中,可省略音频播放装置400中的一些模块,或者还可包括另外的模块。此外,根据本公开的各种实施例的模块/元件可被组合以形成单个实体,并且因此可等效地执行相应模块/元件在组合之前的功能。[0101]音频获取模块401可获取用于循环播放的音频对象。[0102]音频处理模块402可确定音频对象的当前播放时间和音频对象的原始持续时间中的至少一个;对音频对象的当前播放时间和音频对象的原始持续时间中的至少一个进行调整;并且按照调整后的播放时间和调整后的持续时间中的至少一个,播放音频对象。[0103]作为一种实施方式,音频处理模块402可通过监测音频对象的当前播放时间,确定音频对象的当前播放时间和原始持续时间是否满足预设时间条件;当音频对象的前播放时间和原始持续时间满足预设时间条件时,将音频对象的当前播放时间设置到指定播放时间,作为音频对象在下一轮播放时的开始播放时间。[0104]作为一种实施方式,音频处理模块402可确定音频对象的当前播放时间是否大于原始持续时间与第一超前播放阈值之差;如果音频对象的当前播放时间大于原始持续时间与第一超前播放阈值之差,则确定满足预设时间条件。[0105]作为一种实施方式,音频处理模块402可将音频对象的当前播放时间设置为初始播放时间。例如,可将当前播放位置设置为0。[0106]作为一种实施方式,音频处理模块402可通过监听音频对象的时间更新事件来实时监测音频对象的当前播放时间,其中,当音频对象的当前播放时间发生改变时,音频对象的时间更新事件被触发并监听。[0107]作为一种实施方式,对于以new audio方式实现循环播放,音频获取模块401可通过html5中的音频获取函数(诸如new audio()函数)来获取音频对象。[0108]作为一种实施方式,音频处理模块402可根据html5中音频对象的当前时间currenttime属性的返回值确定音频对象的当前播放时间;和/或根据html5中音频对象的持续时间duration属性的返回值确定音频对象的原始持续时间。[0109]作为一种实施方式,音频处理模块402可通过html5中的事件监听函数(诸如addeventlistene()函数)来监听时间更新事件。[0110]作为一种实施方式,对于以audiocontext方式实现循环播放,音频获取模块401可创建音频缓冲资源节点;通过设置音频缓冲资源节点的缓冲buffer属性,获取音频对象。[0111]作为一种实施方式,音频处理模块402可从音频对象的原始持续时间减去第二超前播放阈值,其中,音频对象的原始持续时间基于buffer属性被确定;并且将音频对象的原始持续时间与第二超前播放阈值之差作为音频对象在循环播放时的实际持续时间。[0112]作为一种实施方式,音频处理模块402可基于音频对象在循环播放时的实际持续时间,设置音频缓冲资源节点的开始播放函数中的参数;通过循环调用设置后的开始播放函数,播放音频对象。[0113]作为一种实施方式,开始播放函数可以是html5中的audiobuffersourcenode.start([when][,offset][,duration])函数,其中,audiobuffersourcenode.start([when][,offset][,duration])函数中的参数duration被设置为音频对象在循环播放时的实际持续时间,audiobuffersourcenode.start([when][,offset][,duration])函数中的参数when被设置为用于创建音频缓冲资源节点的音频上下文的当前时间或者0。[0114]上面已经参照图1至图3详细描述了h5中的循环无缝播放过程,这里不再详细赘述。[0115]图5是本公开实施例的硬件运行环境的音频播放设备的结构示意图。这里,音频播放设备600可实现上述循环无缝播放的功能。[0116]如图5所示,音频播放设备600可包括:处理组件601、通信总线602、网络接口603、输入输出接口604、存储器605以及电源组件606。其中,通信总线602用于实现这些组件之间的连接通信号。输入输出接口604可以包括视频显示器(诸如,液晶显示器)、麦克风和扬声器以及用户交互接口(诸如,键盘、鼠标、触摸输入装置等),可选地,输入输出接口604还可包括标准的有线接口、无线接口。网络接口603可选的可包括标准的有线接口、无线接口(如无线保真接口)。存储器605可以是高速的随机存取存储器,也可以是稳定的非易失性存储器。存储器605可选的还可以是独立于前述处理组件601的存储装置。[0117]本领域技术人员可以理解,图5中示出的结构并不构成对音频播放设备600的限定,可包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。[0118]如图5所示,作为一种存储介质的存储器605中可包括操作系统(诸如mac操作系统)、数据存储模块、网络通信模块、用户接口模块、html5中的音频播放方法相关的程序以及数据库。[0119]在图5所示的音频播放设备600中,网络接口603主要用于与外部设备/终端进行数据通信;输入输出接口604主要用于与用户进行数据交互;音频播放设备600中的处理组件601、存储器605可被设置在音频播放设备600中,音频播放设备600通过处理组件601调用存储器605中存储的实现本公开的html5中的音频播放方法的程序以及由操作系统提供的各种api,执行本公开实施例提供的html5中的音频播放方法等。[0120]处理组件601可以包括至少一个处理器,存储器605中存储有计算机可以执行指令集合,当计算机可以执行指令集合被至少一个处理器执行时,执行根据本公开实施例的html5中的音频播放方法。此外,处理组件601可执行如上所述的音频对象的循环无缝播放过程等。然而,上述示例仅是示例性的,本公开不限于此。[0121]作为示例,音频播放设备600可以是pc计算机、平板装置、个人数字助理、智能手机、或其他能够执行上述指令集合的装置。这里,音频播放设备600并非必须是单个的电子设备,还可以是任何能够单独或联合执行上述指令(或指令集)的装置或电路的集合体。音频播放设备600还可以是集成控制系统或系统管理器的一部分,或者可以被配置为与本地或远程(例如,经由无线传输)以接口互联的便携式电子设备。[0122]在音频播放设备600中,处理组件601可包括中央处理器(cpu)、图形处理器(gpu)、可编程逻辑装置、专用处理器系统、微控制器或微处理器。作为示例而非限制,处理组件601还可以包括模拟处理器、数字处理器、微处理器、多核处理器、处理器阵列、网络处理器等。[0123]处理组件601可运行存储在存储器中的指令或代码,其中,存储器605还可以存储数据。指令和数据还可以经由网络接口603而通过网络被发送和接收,其中,网络接口603可以采用任何已知的传输协议。[0124]存储器605可以与处理器集成为一体,例如,将ram或闪存布置在集成电路微处理器等之内。此外,存储器605可包括独立的装置,诸如,外部盘驱动、存储阵列或任何数据库系统可以使用的其他存储装置。存储器和处理器可以在操作上进行耦合,或者可以例如通过i/o端口、网络连接等互相通信,使得处理器能够读取存储在存储器中的文件。[0125]根据本公开的实施例,可提供一种电子设备。图6是根据本公开实施例的电子设备的框图,该电子设备700可包括至少一个存储器702和至少一个处理器701,所述至少一个存储器702存储有计算机可执行指令集合,当计算机可执行指令集合被至少一个处理器701执行时,执行根据本公开实施例的html5中的音频播放方法。[0126]处理器701可包括中央处理器(cpu)、音频处理器、可编程逻辑装置、专用处理器系统、微控制器或微处理器。作为示例而非限制,处理器701还可包括模拟处理器、数字处理器、微处理器、多核处理器、处理器阵列、网络处理器等。[0127]作为一种存储介质的存储器702可包括操作系统(例如mac操作系统)、数据存储模块、网络通信模块、用户接口模块、推荐模块以及数据库。[0128]存储器702可与处理器701集成为一体,例如,可将ram或闪存布置在集成电路微处理器等之内。此外,存储器702可包括独立的装置,诸如,外部盘驱动、存储阵列或任何数据库系统可使用的其他存储装置。存储器702和处理器701可在操作上进行耦合,或者可例如通过i/o端口、网络连接等互相通信,使得处理器701能够读取存储在存储器702中的文件。[0129]此外,电子设备700还可包括视频显示器(诸如,液晶显示器)和用户交互接口(诸如,键盘、鼠标、触摸输入装置等)。电子设备700的所有组件可经由总线和/或网络而彼此连接。[0130]作为示例,电子设备700可以是pc计算机、平板装置、个人数字助理、智能手机、或其他能够执行上述指令集合的装置。这里,电子设备700并非必须是单个的电子设备,还可以是任何能够单独或联合执行上述指令(或指令集)的装置或电路的集合体。电子设备700还可以是集成控制系统或系统管理器的一部分,或者可被配置为与本地或远程(例如,经由无线传输)以接口互联的便携式电子设备。[0131]本领域技术人员可理解,图6中示出的结构并不构成对的限定,可包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。[0132]根据本公开的实施例,还可提供一种存储指令的计算机可读存储介质,其中,当指令被至少一个处理器运行时,促使至少一个处理器执行根据本公开的html5中的音频播放方法。这里的计算机可读存储介质的示例包括:只读存储器(rom)、随机存取可编程只读存储器(prom)、电可擦除可编程只读存储器(eeprom)、随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)、闪存、非易失性存储器、cd-rom、cd-r、cd+r、cd-rw、cd+rw、dvd-rom、dvd-r、dvd+r、dvd-rw、dvd+rw、dvd-ram、bd-rom、bd-r、bd-r lth、bd-re、蓝光或光盘存储器、硬盘驱动器(hdd)、固态硬盘(ssd)、卡式存储器(诸如,多媒体卡、安全数字(sd)卡或极速数字(xd)卡)、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他装置,所述任何其他装置被配置为以非暂时性方式存储计算机程序以及任何相关联的数据、数据文件和数据结构并将所述计算机程序以及任何相关联的数据、数据文件和数据结构提供给处理器或计算机使得处理器或计算机能执行所述计算机程序。上述计算机可读存储介质中的计算机程序可在诸如客户端、主机、代理装置、服务器等计算机设备中部署的环境中运行,此外,在一个示例中,计算机程序以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得计算机程序以及任何相关联的数据、数据文件和数据结构通过一个或多个处理器或计算机以分布式方式存储、访问和执行。[0133]根据本公开的实施例中,还可提供一种计算机程序产品,该计算机程序产品中的指令可由计算机设备的处理器执行以完成上述html5中的音频播放方法。[0134]本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。[0135]应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!
音频播放方法和音频播放装置与流程 专利技术说明
作者:admin
2022-11-26 13:05:29
285
关键词:
计算;推算;计数设备的制造及其应用技术
专利技术