CN111339351A - 一种Android***中的音频播放方法 - Google Patents

一种Android***中的音频播放方法 Download PDF

Info

Publication number
CN111339351A
CN111339351A CN201811555476.6A CN201811555476A CN111339351A CN 111339351 A CN111339351 A CN 111339351A CN 201811555476 A CN201811555476 A CN 201811555476A CN 111339351 A CN111339351 A CN 111339351A
Authority
CN
China
Prior art keywords
playing
state
audio
platform
cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201811555476.6A
Other languages
English (en)
Other versions
CN111339351B (zh
Inventor
李智
杨建川
顾益双
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu TD Tech Ltd
Original Assignee
Chengdu TD Tech Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chengdu TD Tech Ltd filed Critical Chengdu TD Tech Ltd
Priority to CN201811555476.6A priority Critical patent/CN111339351B/zh
Publication of CN111339351A publication Critical patent/CN111339351A/zh
Application granted granted Critical
Publication of CN111339351B publication Critical patent/CN111339351B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Indexing, Searching, Synchronizing, And The Amount Of Synchronization Travel Of Record Carriers (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本申请公开了一种Android***中的音频播放方法,包括:在播放配置阶段,将Android平台的TrackBuffer设为MinBuffer;其中,MinBuffer为Android平台当前需要的最小缓存数;应用识别Android平台的播放状态;所述播放状态为未播放时,持续向缓存写入音频数据;当所述播放状态为播放时,播放缓存中的音频数据。应用本申请,能够减小音频播放的延时。

Description

一种Android***中的音频播放方法
技术领域
本申请涉及Android***技术,特别涉及一种Android***中的音频播放方法。
背景技术
在Android***中,现有的使用Audio Track进行音频播放时,Audio Track应用与Android***平台的交互过程如图1所示,在图1中,MinBuffer是Android平台API返回值,告知应用当前需要配置给Android平台的最小缓存数;TrackBuffer为应用最终设置给平台的缓存数,需要保证TrackBuffer>=MinBuffer;Write为应用向平台缓存中写数据,内部维护的已写数量总和;Play是Android平台API返回值,告知当前的播放进度;X是Android平台内部的缓存,应用无法感知,对不同终端该值不同,需要缓存量大于X时才真正开始播放。
基于上述交互过程实现的音频播放流程具体包括:
1)应用在播放配置阶段创建AudioTrack时,为Audio Track设置buffer大小为TrackBuffer,为了能够正常播放,通常TrackBuffer≥MinBuffer;
2)在启动播放阶段,应用向TrackBuffer中持续写入数据,当TrackBuffer被填满后AudioTrack开始播放;
3)在稳态播放过程中,当存在一帧待播放的音频数据时,应用记录已经送给平台的音频数Write,同时不断通过API获取平台的播放进度Play,判断如下:
a)若Write–Play≥TrackBuffer,则认为平台的缓存已满,不作处理;
b)若Write–Play<TrackBuffer,则认为平台缓存未满,调用API向平台写数据,同时更新已写总数Write。
4)判断若还存在待播放的音频数据,则继续执行步骤3,否则等待有新数据时再执行步骤3。
上述音频播放方式存在如下两个问题:
1、对于某些终端,当应用已经给AudioTrack的buffer填充满TrackBuffer数据后,Android平台API返回的播放进度Play并不改变,导致音频不能正常播放;其原因可能是Android平台底层的AudioFlinger还未真正启动播放,还需要TrackBuffer中的数据达到一定的缓存量X后才开始播放。为了TrackBuffer被填满后,能够真正的启动播放,通常将该buffer值设定的很大,让其大于AudioFlinger层真正启动播放需要的缓存量X。但是X的实际值对应用并不可见,只能针对不同终端去猜测X的大小。且如果为了保证能够正常播放而配置更大的TrackBuffer量,则填充TrackBuffer的时间会随之增长,势必会导致流媒体播放的用户面时延增大;
2、使用Android平台进行音频播放过程中如果连接蓝牙播放设备,可能导致音频无法继续播放。具体地,使用蓝牙设备进行音频播放时,AudioTrack需要的缓存量较大,通常大于使用Android设备自身喇叭播放时需要的TrackBuffer值。因此,当连接上蓝牙设备后,原先设给Android平台的缓存量不能满足蓝牙设备的播放。连接蓝牙设备进行音频播放所需的缓存量大小对应用不可见,且不同蓝牙设备的缓存需求量不同。如果为了保证能够正常播放而配置更大的TrackBuffer量,则填充TrackBuffer的时间会随之增长,势必会导致流媒体播放的用户面时延增大。
发明内容
本申请提供一种Android***中的音频播放方法,能够减小音频播放的时延。
为实现上述目的,本申请采用如下技术方案:
一种Android***中的音频播放方法,包括:
在播放配置阶段,将Android平台的TrackBuffer设为MinBuffer;其中,MinBuffer为Android平台当前需要的最小缓存数;
应用识别Android平台的播放状态;
当所述播放状态为未播放时,继续向缓存写入音频数据;当所述播放状态为播放时,播放缓存中的音频数据。
较佳地,所述应用识别Android平台的播放状态包括:
当所述应用从播放配置阶段刚进入启动播放阶段的初始场景下,所述播放状态为未播放;和/或,
在预设的第一时间段内播放进度值没有更新,则确定所述播放状态为未播放;和/或,
连续N次向TrackBuffer写入数据的间隔时间大于预设的第二时间段,则确定所述播放状态为未播放;和/或,
连续M次接收Android平台反馈的播放进度值不同,则确定所述播放状态为播放;其中,所述N和M为预设的正整数。
较佳地,该方法进一步包括:当所述播放状态为播放时,如果连续X次出现写入数据耗时超过预设的第三时间段,将缓存中剩余未播放数据量重设为TrackBuffer;其中,X为预设的正整数。
由上述技术方案可见,在播放配置阶段,将Android平台的TrackBuffer设为MinBuffer;应用识别Android平台的播放状态;当所述播放状态为未播放时,若缓存中剩余的未播放数据大于或等于预先配置的TrackBuffer,仍继续向缓存写入音频数据,以驱动Android平台进入播放状态;当所述播放状态为播放时,按照图1方式播放缓存中的音频数据。通过上述方式,不需要在配置阶段将TrackBuffer设置的过大,仍然能够保证音频的正常播放,从而减小了音频播放启动的时延。
附图说明
图1为现有的Audio Track应用与Android***平台的交互过程示意图;
图2为本申请实施例中音频播放方法的具体流程示意图。
具体实施方式
为了使本申请的目的、技术手段和优点更加清楚明白,以下结合附图对本申请做进一步详细说明。
如背景技术所述,为了使Android的音频正常播放,需要保证初始阶段Android平台缓存的数据量能够达到X。通常的方式是将TrackBuffer设置的比较大,使得TrackBuffer大于X。然而这种方式可能会导致音频播放的延时较大。
本申请中为避免出现音频播放延时过大的问题,提供一种音频播放方法。该方法具体包括:
在播放配置阶段,将Android平台的TrackBuffer设为MinBuffer;接下来在音频播放阶段,应用识别Android平台的播放状态;当播放状态为未播放时,若缓存中剩余的未播放数据大于或等于预先配置的TrackBuffer,则表明设置的TrackBuffer可能小于播放音频的最低缓存量X,这时,本申请中将继续向缓存写入音频数据,使缓存内部的数据量大于X,以触发音频播放;当播放状态为播放时,仍然按照现有的方式控制播放缓存中的音频数据。
在上述处理中,新增了应用对平台播放状态的识别机制,其中,判断平台播放状态的机制具体包括:
1)在以下场景时,判断平台播放状态为“未播放”的场景:
A.初始场景,即应用刚刚从“播放配置”阶段进入“启动播放”阶段;
B.连续预设的第一时间段内播放进度Play都不更新,如:每隔100ms判断一次,连续三次查询时,播放进度都没更新则可认为平台没有播放;
C.连续N次向TrackBuffer中填充数据的间隔时间过长,例如大于预设的第二时间段。
2)在以下场景时,判断平台播放状态为“播放”的场景:
A.连续M次平台返回的播放进度Play不一样。
上述即为应用判断平台播放状态的具体方式。
优化后应用根据平台的播放状态的数据处理机制为:
1)若平台为未播放状态:
A.当Write–Play<TrackBuffer时,正常向TrackBuffer中写入数据;
B.当Write–Play≥TrackBuffer时,强行执行写入动作。
2)若平台为播放状态:
A.音频播放相关的处理同原有的播放机制。
B.为了增强方案健壮性,在播放状态下,如果连续X次出现写入数据耗时大于预设的第三时间段,则认为平台缓存已满,强制令Write–Play=TrackBuffer,即认为AudioTrack的可用缓存为0,避免下次继续执行数据写入耗时过长。
下面通过一个具体实施例说明本申请的具体实现。图2为本申请实施例中音频播放方法的具体流程图。该实施例是在专网终端上实现的。如图2所示,该方法包括:
步骤201,在播放配置阶段,将Android平台的TrackBuffer设为MinBuffer,并开始向AudioTrack中写入数据。
本实施例中,假定在播放配置阶段,将Android平台的TrackBuffer设为MinBuffer。
步骤202,识别平台播放状态。
步骤203,判断播放状态是否为播放,若否,则执行步骤204,若是,执行步骤205。
本实施例中,假定获取到的MinBuffer为640字节,则TrackBuffer也设置为640字节。当缓存量达到TrackBuffer大小时,音频并不会开始播放,因为平台要求960字节以上才能启动播放。那么在缓存量达到640字节后,判断播放状态为未播放,则执行步骤204。
步骤204,强行向平台写入音频数据。
通过播放进度判决Android平台为“未播放”状态,开始强行向AudioTrack中写入数据。继续强行写入320字节后,Android平台真正开始音频播放,App根据播放进度更新平台为“播放”状态。
步骤205,将平台状态标记为“播放”,按照现有方式播放音频。
在Android平台的“播放”状态下,App按照原有播放机制进行音频播放直到播放结束。
步骤206,判断平台是否有空余缓存,若是,则执行步骤207,否则,返回步骤202。
步骤207,判断距离上一次平台写入数据时间是否超过设定的时间段,若是,则执行步骤204,否则,执行步骤208。
如果在“播放”状态下平台长时间没有可播放的数据,App会再次判决平台为“未播放”状态,再次播放数据时将重复业务开始时的流程,再次触发强写机制。
步骤208,向平台写入音频数据。
步骤209,判断多次写入耗时是否过长(例如大于8ms),若是,则执行步骤210,否则返回步骤202。
当多次写入耗时过长时,认为平台缓存已满,通过步骤210将可用缓存设为0,继续判断平台播放状态。
步骤210,将平台剩余缓存空间设为0。
上述即为本实施例中的音频播放方法的具体实现。
通过上述本申请中的音频播放方法,能够降低在Android***中播放流媒体音频时的耗时,对于用户面时延要求高的场景,该方案能够带来较为显著的时延优化效果;另外,对于某些Android终端,在音频播放过程中切换为蓝牙播放后就无声的问题可以得到解决。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

Claims (3)

1.一种Android***中的音频播放方法,其特征在于,包括:
在播放配置阶段,将Android平台的TrackBuffer设为MinBuffer;其中,MinBuffer为Android平台当前需要的最小缓存数;
应用识别Android平台的播放状态;
当所述播放状态为未播放时,继续向缓存写入音频数据;当所述播放状态为播放时,播放缓存中的音频数据。
2.根据权利要求1所述的方法,其特征在于,所述应用识别Android平台的播放状态包括:
当所述应用从播放配置阶段刚进入启动播放阶段的初始场景下,所述播放状态为未播放;和/或,
在预设的第一时间段内播放进度值没有更新,则确定所述播放状态为未播放;和/或,
连续N次向TrackBuffer写入数据的间隔时间大于预设的第二时间段,则确定所述播放状态为未播放;和/或,
连续M次接收Android平台反馈的播放进度值不同,则确定所述播放状态为播放;其中,所述N和M为预设的正整数。
3.根据权利要求1所述的方法,其特征在于,该方法进一步包括:当所述播放状态为播放时,如果连续X次出现写入数据耗时超过预设的第三时间段,将缓存中剩余未播放数据量重设为TrackBuffer;其中,X为预设的正整数。
CN201811555476.6A 2018-12-19 2018-12-19 一种Android***中的音频播放方法 Active CN111339351B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811555476.6A CN111339351B (zh) 2018-12-19 2018-12-19 一种Android***中的音频播放方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811555476.6A CN111339351B (zh) 2018-12-19 2018-12-19 一种Android***中的音频播放方法

Publications (2)

Publication Number Publication Date
CN111339351A true CN111339351A (zh) 2020-06-26
CN111339351B CN111339351B (zh) 2023-08-11

Family

ID=71183208

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811555476.6A Active CN111339351B (zh) 2018-12-19 2018-12-19 一种Android***中的音频播放方法

Country Status (1)

Country Link
CN (1) CN111339351B (zh)

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101466034A (zh) * 2008-12-25 2009-06-24 华为技术有限公司 发送、播放流媒体数据的方法和装置及流媒体点播***
CN103051955A (zh) * 2012-12-21 2013-04-17 华为技术有限公司 流媒体播放方法及装置
CN103714837A (zh) * 2013-12-18 2014-04-09 福州瑞芯微电子有限公司 播放音频文件的电子设备与方法
US20140331133A1 (en) * 2014-07-14 2014-11-06 Sonos, Inc. Policies for Media Playback
CN104254007A (zh) * 2014-09-03 2014-12-31 海信集团有限公司 一种音频处理方法及装置
CN104505109A (zh) * 2014-12-29 2015-04-08 珠海全志科技股份有限公司 多媒体播放器的音轨切换方法、***及对应播放器和设备
CN104581228A (zh) * 2015-01-06 2015-04-29 南京爱布谷网络科技有限公司 一种服务多种不同终端的带宽自适应流媒体***
US20150256639A1 (en) * 2014-03-04 2015-09-10 Mobophiles, Inc., Dba Mobolize Dynamic cache allocation and network management
US20170105141A1 (en) * 2015-10-08 2017-04-13 Le Holdings (Beijing) Co., Ltd. Method for shortening a delay in real-time voice communication and electronic device
WO2017102031A1 (en) * 2015-12-18 2017-06-22 Telefonaktiebolaget Lm Ericsson (Publ) Video playback buffer control
CN107105096A (zh) * 2017-04-28 2017-08-29 努比亚技术有限公司 一种音频处理方法、终端及存储介质
CN107566595A (zh) * 2017-08-18 2018-01-09 广东欧珀移动通信有限公司 移动终端的音量控制方法、装置及存储介质和移动终端
CN108495142A (zh) * 2018-04-11 2018-09-04 腾讯科技(深圳)有限公司 视频编码方法及装置
CN108509176A (zh) * 2018-04-10 2018-09-07 Oppo广东移动通信有限公司 一种播放音频数据的方法、装置、存储介质及智能终端
CN108966197A (zh) * 2018-08-20 2018-12-07 南昌黑鲨科技有限公司 基于蓝牙的音频传输方法、***、音频播放设备及计算机可读存储介质

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101466034A (zh) * 2008-12-25 2009-06-24 华为技术有限公司 发送、播放流媒体数据的方法和装置及流媒体点播***
CN103051955A (zh) * 2012-12-21 2013-04-17 华为技术有限公司 流媒体播放方法及装置
CN103714837A (zh) * 2013-12-18 2014-04-09 福州瑞芯微电子有限公司 播放音频文件的电子设备与方法
US20150256639A1 (en) * 2014-03-04 2015-09-10 Mobophiles, Inc., Dba Mobolize Dynamic cache allocation and network management
US20140331133A1 (en) * 2014-07-14 2014-11-06 Sonos, Inc. Policies for Media Playback
CN104254007A (zh) * 2014-09-03 2014-12-31 海信集团有限公司 一种音频处理方法及装置
CN104505109A (zh) * 2014-12-29 2015-04-08 珠海全志科技股份有限公司 多媒体播放器的音轨切换方法、***及对应播放器和设备
CN104581228A (zh) * 2015-01-06 2015-04-29 南京爱布谷网络科技有限公司 一种服务多种不同终端的带宽自适应流媒体***
US20170105141A1 (en) * 2015-10-08 2017-04-13 Le Holdings (Beijing) Co., Ltd. Method for shortening a delay in real-time voice communication and electronic device
WO2017102031A1 (en) * 2015-12-18 2017-06-22 Telefonaktiebolaget Lm Ericsson (Publ) Video playback buffer control
CN107105096A (zh) * 2017-04-28 2017-08-29 努比亚技术有限公司 一种音频处理方法、终端及存储介质
CN107566595A (zh) * 2017-08-18 2018-01-09 广东欧珀移动通信有限公司 移动终端的音量控制方法、装置及存储介质和移动终端
CN108509176A (zh) * 2018-04-10 2018-09-07 Oppo广东移动通信有限公司 一种播放音频数据的方法、装置、存储介质及智能终端
CN108495142A (zh) * 2018-04-11 2018-09-04 腾讯科技(深圳)有限公司 视频编码方法及装置
CN108966197A (zh) * 2018-08-20 2018-12-07 南昌黑鲨科技有限公司 基于蓝牙的音频传输方法、***、音频播放设备及计算机可读存储介质

Non-Patent Citations (10)

* Cited by examiner, † Cited by third party
Title
VANFANEL等: "Noticeable audio delay with buffer size", Retrieved from the Internet <URL:https://github.com/midwan/amiberry/issues/166> *
WENJIE HU等: "Energy-aware video streaming on smartphones", 《2015 IEEE CONFERENCE ON COMPUTER COMMUNICATIONS (INFOCOM)》 *
WENJIE HU等: "Energy-aware video streaming on smartphones", 《2015 IEEE CONFERENCE ON COMPUTER COMMUNICATIONS (INFOCOM)》, 24 August 2015 (2015-08-24), pages 1185 - 1193 *
WHSHIYUN: "AudioEffect音频数据流笔记--buffer相关", Retrieved from the Internet <URL:https://blog.csdn.net/whshiyun/article/details/79820714> *
姚彬: "P2P流媒体***数据调度和传输层优化技术研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
姚彬: "P2P流媒体***数据调度和传输层优化技术研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》, 15 February 2014 (2014-02-15), pages 139 - 1 *
有只坏龙猫: "android使用AudioTrack播放多个音频文件", 《HTTPS://BLOG.CSDN.NET/W1027296673/ARTICLE/DETAILS/50441709》 *
有只坏龙猫: "android使用AudioTrack播放多个音频文件", 《HTTPS://BLOG.CSDN.NET/W1027296673/ARTICLE/DETAILS/50441709》, 31 December 2015 (2015-12-31) *
陈华观: "基于智能手机音频接口的数据通信及应用", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
陈华观: "基于智能手机音频接口的数据通信及应用", 《中国优秀硕士学位论文全文数据库 信息科技辑》, 15 March 2017 (2017-03-15), pages 136 - 1032 *

Also Published As

Publication number Publication date
CN111339351B (zh) 2023-08-11

Similar Documents

Publication Publication Date Title
US9021537B2 (en) Pre-buffering audio streams
US6642966B1 (en) Subliminally embedded keys in video for synchronization
JP5302463B2 (ja) デジタルコンテンツの配布のための適応型ストリーミング
CN102724585A (zh) 一种用于终端设备网络视频播放预加载的方法及装置
EP3410290B1 (en) Audio processing method, server, user equipment, and system
JP2013500634A (ja) デジタルコンテンツの配布のための適応型ストリーミング
US10848835B2 (en) Video summary information playback device and method and video summary information providing server and method
CN101206899A (zh) 用于编码/解码具有预览功能的多媒体数据的方法以及装置
CN106375835B (zh) 一种流媒体播放方法及设备
CN104376859B (zh) 一种播放列表自动调整的方法和网络音乐播放器
CN111339351A (zh) 一种Android***中的音频播放方法
CN108024125A (zh) 一种音视频数据播放方法以及服务器和客户端
US20060005223A1 (en) Method of recording and playing video at optimized resolution
JP6871388B2 (ja) オーディオまたはビデオ内のカット間タイムバケットを決定するための方法および装置
CN109218809B (zh) 一种流媒体的播放方法和装置
CN115297371A (zh) 一种自适应播放器的生成方法及自适应播放器设备
CN109688468A (zh) 一种开机视频的播放方法、智能终端、***及存储介质
CN110636368B (zh) 媒体播放方法、***、装置及存储介质
JP2010251913A (ja) コンテンツ再生装置、プログラムおよび半導体集積回路
CN103731735A (zh) 在智能电视中实现连续播放在线视频的方法及智能电视
KR101295455B1 (ko) 동영상 파일의 분할저장 재생기법을 이용한 VoD 버퍼링방법 및 그 시스템
CN108650544A (zh) 一种媒体播放方法、装置以及媒体播放***
JP7304419B2 (ja) 送信装置、送信方法及びプログラム
CN102523513A (zh) 基于视频播放器精确获取原视频文件图像的实现方法
WO2016206466A1 (zh) 一种iptv节目的处理方法及装置、iptv***

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant