CN104505109B - 多媒体播放器的音轨切换方法、系统及对应播放器和设备 - Google Patents

多媒体播放器的音轨切换方法、系统及对应播放器和设备 Download PDF

Info

Publication number
CN104505109B
CN104505109B CN201410849953.5A CN201410849953A CN104505109B CN 104505109 B CN104505109 B CN 104505109B CN 201410849953 A CN201410849953 A CN 201410849953A CN 104505109 B CN104505109 B CN 104505109B
Authority
CN
China
Prior art keywords
data
voice data
streammanager
track
pframes
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.)
Active
Application number
CN201410849953.5A
Other languages
English (en)
Other versions
CN104505109A (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.)
Allwinner Technology Co Ltd
Original Assignee
Allwinner Technology Co 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 Allwinner Technology Co Ltd filed Critical Allwinner Technology Co Ltd
Priority to CN201410849953.5A priority Critical patent/CN104505109B/zh
Publication of CN104505109A publication Critical patent/CN104505109A/zh
Application granted granted Critical
Publication of CN104505109B publication Critical patent/CN104505109B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Communication Control (AREA)

Abstract

本发明公开了一种多媒体播放器的音轨切换方法、系统及对应播放器和设备,所述方法创建与音轨相同个数的先进先出的数据管理模块;之后,对于数据解析端所传送的音频数据,根据对应的音轨索引值,将音频数据写入对应的数据管理模块中;之后,在用户播放时,将记录当前音轨索引值的变量赋值为当前需要播放的音频数据的音轨索引值,以从数据管理模块中读取对应的音频数据,并将读取的音频数据传送至音频解码模块进行解码后播放;之后,清除每个数据管理模块中过时的音频数据。本发明可采用较小的内存空间保存多路音频数据,并实现音轨的无缝切换。

Description

多媒体播放器的音轨切换方法、系统及对应播放器和设备
技术领域
本发明涉及数据存储领域,特别是一种多媒体播放器的音轨切换方法、系统及对应播放器和设备。
背景技术
在多媒体播放过程中,如何实现音频的无缝切换是用户面临的难题。因此,为了存储、管理多路音频数据,必须采用一种高效、实用的数据存储方法。
现有的音轨切换技术主要有两种,一种是只将目前正在播放的音频数据传输到音频缓冲buffer中,进行音轨切换时,先清空音频缓冲buffer,然后数据解析端开始传送属于新音轨的音频数据。但在播放过程中,为了保证音频播放的流畅性,数据解析端会将数据提前送入(一般会提前2s)音频缓冲buffer,这种方式切完音轨后,buffer中新的缓冲数据对应的播放时间会比当前多媒体播放时间晚2s, 切换后会出现接近2s时间的断音,同时这种方式没有考虑不同音轨对应的数据帧的大小,会导致音频buffer的利用率比较低。另一种方法是根据音轨总个数开辟多个音频缓冲buffer,缓冲每一路音频数据。这种方法可以解决上述音轨切换出现断音的问题,但无法解决缓冲buffer利用率低的问题,相反,这种方法申请的buffer越多,buffer利用率越低。
为此,需要一种更有效的方法解决以上两种方法存在的缺陷。
发明内容
为解决上述问题,本发明的目的在于提供一种多媒体播放器的音轨切换方法、系统及对应播放器和设备,动态分配每一路音频中音频数据的内存空间,在有效的利用存储空间的基础上,实现音频的无缝音轨切换。
本发明解决其问题所采用的技术方案是:
一种多媒体播放器的音轨切换方法,包括:
(1)根据码流所包含的音轨的总个数n创建相同个数的先进先出的数据管理模块StreamManager[n-1],所述数据管理模块StreamManager[n-1]用于对音频数据的进行存储管理;
(2)对于数据解析端所传送的音频数据,根据该音频数据对应的音轨索引值m,将该音频数据写入对应的StreamManager[m]中,其中,0<=m<n;
(3)在用户播放时,若用户选择的当前需要播放的音频数据的音轨索引值为i,则将记录当前音轨索引值的变量k赋值为i,从StreamManager[k]中读取对应的音频数据,并将读取的音频数据传送至音频解码模块进行解码后播放,其中,0<=i<n;
(4)清除每个数据管理模块StreamManager[n-1]中过时的音频数据。
优选的,所述方法还包括:
(5)当用户进行音轨切换时,将当前播放的音轨索引值i修改为需要播放的音轨索引值j,并将记录当前音轨索引值的变量k赋值为j,之后,从StreamManager[k]中读取对应的音频数据,并将读取的音频数据传送至音频解码模块进行解码后播放,其中,0<=j<n。
优选的,所述创建的每个数据管理模块StreamManager[n-1]包括有以下用于对音频数据对应的数据帧进行存储管理的变量:
用于限定允许存储的最大数据帧个数nMaxFrameNum;
所存储的有效数据帧个数nValidFrameNum;
对应的用于存储数据帧信息的结构体数组 pFrames[nMaxFrameNum-1],所述结构体数组 pFrames[nMaxFrameNum-1]包含有以下用于描述数据帧信息的变量:
数据帧存储的地址指针pData,
数据帧的存储长度 nLength,和
数据帧对应的显示时间戳 nPts;
将要读取的数据帧在pFrames数组中的位置索引nReadPos,且0<=nReadPos <nMaxFrameNum;
将要写入的数据帧在pFrames数组中的位置索引nWritePos,且0<=nWritePos <nMaxFrameNum;
将要移除的数据帧在pFrames数组中的位置索引nFlushPos。
优选的,所述步骤(2)中,当根据该音频数据对应的音轨索引值m,将该音频数据写入对应的StreamManager[m]中时,StreamManager[m]首先根据该音频数据对应数据帧的长度申请一段内存空间,再将音频数据存储至所申请的内存空间,同时,该内存空间的地址会被存储至对应pFrames[nWritePos]的pData中,该音频数据对应数据帧的长度和显示时间戳分别存储在pFrames[nWritePos]的nLength和nPts变量中,然后将nValidFrameNum加1,nWritePos 加1,若nWritePos 等于nMaxFrameNum,则将nWritePos 置为0。
优选的,所述步骤(3)和步骤(5)中,当需要从StreamManager[k]中读取对应的音频数据时,具体包括:
从StreamManager[k]的pFrames[nReadPos]中得到对应音频数据的数据帧的内存空间地址、数据长度和数据的显示时间戳, 同时将nValidFrameNum减1, nReadPos 加1,若nReadPos等于nMaxFrameNum, 则将nReadPos 置为0。
优选的,所述步骤(4)中,当需要清除数据管理模块StreamManager[n-1]中过时的音频数据时,对于需要清除的音频数据,对应StreamManager释放为该音频数据申请的内存空间,即清除pFrames[nFlushPos] 的pData对应的内存空间,同时将nFlushPos 加1,若nFlushPos 等于nMaxFrameNum,则将nFlushPos 置为0。
一种多媒体播放器的音轨切换系统,包括:
模块创建装置,用于根据码流所包含的音轨的总个数n创建相同个数的先进先出的数据管理模块StreamManager[n-1],所述数据管理模块StreamManager[n-1]用于对音频数据的进行存储管理;
写入装置,用于对于数据解析端所传送的音频数据,根据该音频数据对应的音轨索引值m,将该音频数据写入对应的StreamManager[m]中,其中,0<=m<n;
读取播放装置,用于在用户播放时,若用户选择的当前需要播放的音频数据的音轨索引值为i,则将记录当前音轨索引值的变量k赋值为i,从StreamManager[k]中读取对应的音频数据,并将读取的音频数据传送至音频解码模块进行解码后播放,其中,0<=i<n;
清除装置,用于清除每个数据管理模块StreamManager[n-1]中过时的音频数据。
优选的,还包括:
切换装置,用于当用户进行音轨切换时,将当前播放的音轨索引值i修改为需要播放的音轨索引值j,并将记录当前音轨索引值的变量k赋值为j,之后,从StreamManager[k]中读取对应的音频数据,并将读取的音频数据传送至音频解码模块进行解码后播放,其中,0<=j<n。
优选的,所述模块创建装置创建的每个数据管理模块StreamManager[n-1]包括有以下用于对音频数据对应的数据帧进行存储管理的变量:
用于限定允许存储的最大数据帧个数nMaxFrameNum;
所存储的有效数据帧个数nValidFrameNum;
对应的用于存储数据帧信息的结构体数组 pFrames[nMaxFrameNum-1],所述结构体数组 pFrames[nMaxFrameNum-1]包含有以下用于描述数据帧信息的变量:
数据帧存储的地址指针pData,
数据帧的存储长度 nLength,和
数据帧对应的显示时间戳 nPts;
将要读取的数据帧在pFrames数组中的位置索引nReadPos,且0<=nReadPos <nMaxFrameNum;
将要写入的数据帧在pFrames数组中的位置索引nWritePos,且0<=nWritePos <nMaxFrameNum;
将要移除的数据帧在pFrames数组中的位置索引nFlushPos。
优选的,所述写入装置根据该音频数据对应的音轨索引值m,将该音频数据写入对应的StreamManager[m]中时,StreamManager[m]首先根据该音频数据对应数据帧的长度申请一段内存空间,再将音频数据存储至所申请的内存空间,同时,该内存空间的地址会被存储至对应pFrames[nWritePos]的pData中,该音频数据对应数据帧的长度和显示时间戳分别存储在pFrames[nWritePos]的nLength和nPts变量中,然后将nValidFrameNum加1,nWritePos 加1,若nWritePos 等于nMaxFrameNum,则将nWritePos 置为0。
优选的,当所述读取播放装置和切换装置需要从StreamManager[k]中读取对应的音频数据时,具体包括:
从StreamManager[k]的pFrames[nReadPos]中得到对应音频数据的数据帧的内存空间地址、数据长度和数据的显示时间戳, 同时将nValidFrameNum减1, nReadPos 加1,若nReadPos等于nMaxFrameNum, 则将nReadPos 置为0。
优选的,当所述清除装置需要清除数据管理模块StreamManager[n-1]中过时的音频数据时,对于需要清除的音频数据,对应StreamManager释放为该音频数据申请的内存空间,即清除pFrames[nFlushPos] 的pData对应的内存空间,同时将nFlushPos 加1,若nFlushPos 等于nMaxFrameNum,则将nFlushPos 置为0。
一种播放器,所述播放器采用以上所述的音轨切换系统。
一种智能设备,所述智能设备安装有以上所述的播放器。
本发明的有益效果是:
本发明采用一种多媒体播放器的音轨切换方法、系统及对应播放器和设备,对每一路音轨分别创建数据管理模块,数据管理模块采用先进先出方式,达到了采用较小的内存空间保存多路音频数据的目的;由于各路音频数据都存储在StreamManager中,用户在进行音轨切换时,可以实时地实现将新的音轨数据送入音频解码器解码后进行播放,从而达到无缝切换。
附图说明
下面结合附图和实例对本发明作进一步说明。
图1是本发明所述方法的流程示意图;
图2是本发明所述数据管理模块进行数据管理的示意框图。
具体实施方式
参照图1所示,本发明提供了一种多媒体播放器的音轨切换方法,包括:
(1)根据码流所包含的音轨的总个数n创建相同个数的先进先出的数据管理模块StreamManager[n-1],所述数据管理模块StreamManager[n-1]用于对音频数据的进行存储管理;
(2)对于数据解析端所传送的音频数据,根据该音频数据对应的音轨索引值m,将该音频数据写入对应的StreamManager[m]中,其中,0<=m<n;
(3)在用户播放时,若用户选择的当前需要播放的音频数据的音轨索引值为i,则将记录当前音轨索引值的变量k赋值为i,从StreamManager[k]中读取对应的音频数据,并将读取的音频数据传送至音频解码模块进行解码后播放,其中,0<=i<n;
(4)清除每个数据管理模块StreamManager[n-1]中过时的音频数据;
(5)当用户进行音轨切换时,将当前播放的音轨索引值i修改为需要播放的音轨索引值j,并将记录当前音轨索引值的变量k赋值为j,之后,从StreamManager[k]中读取对应的音频数据,并将读取的音频数据传送至音频解码模块进行解码后播放,其中,0<=j<n。
为具体实现以上所述方法,所述创建的每个数据管理模块StreamManager[n-1]包括有以下用于对音频数据对应的数据帧进行存储管理的变量:
用于限定允许存储的最大数据帧个数nMaxFrameNum;
所存储的有效数据帧个数nValidFrameNum;
对应的用于存储数据帧信息的结构体数组 pFrames[nMaxFrameNum-1],所述结构体数组 pFrames[nMaxFrameNum-1]包含有以下用于描述数据帧信息的变量:
数据帧存储的地址指针pData,
数据帧的存储长度 nLength,和
数据帧对应的显示时间戳 nPts;
将要读取的数据帧在pFrames数组中的位置索引nReadPos,且0<=nReadPos <nMaxFrameNum,当从StreamManager中读取完一帧数据后,nReadPos将自动加1,nValidFrameNum将自动减1 ;
将要写入的数据帧在pFrames数组中的位置索引nWritePos,且0<=nWritePos <nMaxFrameNum,当将一帧数据添加到StreamManager中后,nValidFrameNum将自动加1,nWritePos 将自动加1;
将要移除的数据帧在pFrames数组中的位置索引nFlushPos,当从StreamManager中移除一笔数据后,nFlushPos 将自动加1。
其中,所述步骤(2)中,当根据该音频数据对应的音轨索引值m,将该音频数据写入对应的StreamManager[m]中时,StreamManager[m]首先根据该音频数据对应数据帧的长度申请一段内存空间,再将音频数据存储至所申请的内存空间,同时,该内存空间的地址会被存储至对应pFrames[nWritePos]的pData中,该音频数据对应数据帧的长度和显示时间戳分别存储在pFrames[nWritePos]的nLength和nPts变量中,然后将nValidFrameNum加1,nWritePos 加1,若nWritePos 等于nMaxFrameNum,则将nWritePos 置为0。
其中,所述步骤(3)和步骤(5)中,当需要从StreamManager[k]中读取对应的音频数据时,具体包括:
从StreamManager[k]的pFrames[nReadPos]中得到对应音频数据的数据帧的内存空间地址、数据长度和数据的显示时间戳, 同时将nValidFrameNum减1, nReadPos 加1,若nReadPos等于nMaxFrameNum, 则将nReadPos 置为0。
其中,所述步骤(4)中,当需要清除数据管理模块StreamManager[n-1]中过时的音频数据时,对于需要清除的音频数据,对应StreamManager释放为该音频数据申请的内存空间,即清除pFrames[nFlushPos] 的pData对应的内存空间,同时将nFlushPos 加1,若nFlushPos 等于nMaxFrameNum,则将nFlushPos 置为0。
本发明在对音频数据处理时,首先根据音轨的个数创建对应数目的先进先出的数据管理模块,对应的数据管理模块存储对应的音频数据。创建的先进先出的数据管理模块动态的为每一路音频数据分配内存空间,可有效的利用存储空间;由于各路音频数据是单独存储,因此,在进行音轨切换时,可以实时地实现将新的音轨数据送入音频解码器解码后进行播放,实现音频的无缝切换,消除延迟。
本发明还提供了一种多媒体播放器的音轨切换系统,包括:
模块创建装置,用于根据码流所包含的音轨的总个数n创建相同个数的先进先出的数据管理模块StreamManager[n-1],所述数据管理模块StreamManager[n-1]用于对音频数据的进行存储管理;
写入装置,用于对于数据解析端所传送的音频数据,根据该音频数据对应的音轨索引值m,将该音频数据写入对应的StreamManager[m]中,其中,0<=m<n;
读取播放装置,用于在用户播放时,若用户选择的当前需要播放的音频数据的音轨索引值为i,则将记录当前音轨索引值的变量k赋值为i,从StreamManager[k]中读取对应的音频数据,并将读取的音频数据传送至音频解码模块进行解码后播放,其中,0<=i<n;
清除装置,用于清除每个数据管理模块StreamManager[n-1]中过时的音频数据;以及
切换装置,用于当用户进行音轨切换时,将当前播放的音轨索引值i修改为需要播放的音轨索引值j,并将记录当前音轨索引值的变量k赋值为j,之后,从StreamManager[k]中读取对应的音频数据,并将读取的音频数据传送至音频解码模块进行解码后播放,其中,0<=j<n。
其中,所述模块创建装置创建的每个数据管理模块StreamManager[n-1]包括有以下用于对音频数据对应的数据帧进行存储管理的变量:
用于限定允许存储的最大数据帧个数nMaxFrameNum;
所存储的有效数据帧个数nValidFrameNum;
对应的用于存储数据帧信息的结构体数组 pFrames[nMaxFrameNum-1],所述结构体数组 pFrames[nMaxFrameNum-1]包含有以下用于描述数据帧信息的变量:
数据帧存储的地址指针pData,
数据帧的存储长度 nLength,和
数据帧对应的显示时间戳 nPts;
将要读取的数据帧在pFrames数组中的位置索引nReadPos,且0<=nReadPos <nMaxFrameNum;
将要写入的数据帧在pFrames数组中的位置索引nWritePos,且0<=nWritePos <nMaxFrameNum;
将要移除的数据帧在pFrames数组中的位置索引nFlushPos。
所述写入装置根据该音频数据对应的音轨索引值m,将该音频数据写入对应的StreamManager[m]中时,StreamManager[m]首先根据该音频数据对应数据帧的长度申请一段内存空间,再将音频数据存储至所申请的内存空间,同时,该内存空间的地址会被存储至对应pFrames[nWritePos]的pData中,该音频数据对应数据帧的长度和显示时间戳分别存储在pFrames[nWritePos]的nLength和nPts变量中,然后将nValidFrameNum加1,nWritePos加1,若nWritePos 等于nMaxFrameNum,则将nWritePos 置为0。
其中,当所述读取播放装置和切换装置需要从StreamManager[k]中读取对应的音频数据时,具体包括:
从StreamManager[k]的pFrames[nReadPos]中得到对应音频数据的数据帧的内存空间地址、数据长度和数据的显示时间戳, 同时将nValidFrameNum减1, nReadPos 加1,若nReadPos等于nMaxFrameNum, 则将nReadPos 置为0。
其中,当所述清除装置需要清除数据管理模块StreamManager[n-1]中过时的音频数据时,对于需要清除的音频数据,对应StreamManager释放为该音频数据申请的内存空间,即清除pFrames[nFlushPos] 的pData对应的内存空间,同时将nFlushPos 加1,若nFlushPos 等于nMaxFrameNum,则将nFlushPos 置为0。
本发明还提供了一种播放器,所述播放器采用以上所述的音轨切换系统。
本发明还提供了一种智能设备,所述智能设备安装有以上所述的播放器。
以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,都应属于本发明的保护范围。

Claims (12)

1.一种多媒体播放器的音轨切换方法,其特征在于,包括:
(1)根据码流所包含的音轨的总个数n创建相同个数的先进先出的数据管理模块StreamManager[n-1],所述数据管理模块StreamManager[n-1]用于对音频数据的进行存储管理;
(2)对于数据解析端所传送的音频数据,根据该音频数据对应的音轨索引值m,将该音频数据写入对应的StreamManager[m]中,其中,0<=m<n;
(3)在用户播放时,若用户选择的当前需要播放的音频数据的音轨索引值为i,则将记录当前音轨索引值的变量k赋值为i,从StreamManager[k]中读取对应的音频数据,并将读取的音频数据传送至音频解码模块进行解码后播放,其中,0<=i<n;
(4)清除每个数据管理模块StreamManager[n-1]中过时的音频数据;
(5)当用户进行音轨切换时,将当前播放的音轨索引值i修改为需要播放的音轨索引值j,并将记录当前音轨索引值的变量k赋值为j,之后,从StreamManager[k]中读取对应的音频数据,并将读取的音频数据传送至音频解码模块进行解码后播放,其中,0<=j<n。
2.根据权利要求1所述的音轨切换方法,其特征在于,所述创建的每个数据管理模块StreamManager[n-1]包括有以下用于对音频数据对应的数据帧进行存储管理的变量:
用于限定允许存储的最大数据帧个数nMaxFrameNum;
所存储的有效数据帧个数nValidFrameNum;
对应的用于存储数据帧信息的结构体数组pFrames[nMaxFrameNum-1],所述结构体数组pFrames[nMaxFrameNum-1]包含有以下用于描述数据帧信息的变量:
数据帧存储的地址指针pData,
数据帧的存储长度nLength,和
数据帧对应的显示时间戳nPts;
将要读取的数据帧在pFrames数组中的位置索引nReadPos,且0<=nReadPos<nMaxFrameNum;
将要写入的数据帧在pFrames数组中的位置索引nWritePos,且0<=nWritePos<nMaxFrameNum;
将要移除的数据帧在pFrames数组中的位置索引nFlushPos。
3.根据权利要求2所述的音轨切换方法,其特征在于,所述步骤(2)中,当根据该音频数据对应的音轨索引值m,将该音频数据写入对应的StreamManager[m]中时,StreamManager[m]首先根据该音频数据对应数据帧的长度申请一段内存空间,再将音频数据存储至所申请的内存空间,同时,该内存空间的地址会被存储至对应pFrames[nWritePos]的pData中,该音频数据对应数据帧的长度和显示时间戳分别存储在pFrames[nWritePos]的nLength和nPts变量中,然后将nValidFrameNum加1,nWritePos加1,若nWritePos等于nMaxFrameNum,则将nWritePos置为0。
4.根据权利要求3所述的音轨切换方法,其特征在于,所述步骤(3)和步骤(5)中,当需要从StreamManager[k]中读取对应的音频数据时,具体包括:
从StreamManager[k]的pFrames[nReadPos]中得到对应音频数据的数据帧的内存空间地址、数据长度和数据的显示时间戳,同时将nValidFrameNum减1,nReadPos加1,若nReadPos等于nMaxFrameNum,则将nReadPos置为0。
5.根据权利要求3或4所述的音轨切换方法,其特征在于,所述步骤(4)中,当需要清除数据管理模块StreamManager[n-1]中过时的音频数据时,对于需要清除的音频数据,对应StreamManager释放为该音频数据申请的内存空间,即清除pFrames[nFlushPos]的pData对应的内存空间,同时将nFlushPos加1,若nFlushPos等于nMaxFrameNum,则将nFlushPos置为0。
6.一种多媒体播放器的音轨切换系统,其特征在于,包括:
模块创建装置,用于根据码流所包含的音轨的总个数n创建相同个数的先进先出的数据管理模块StreamManager[n-1],所述数据管理模块StreamManager[n-1]用于对音频数据的进行存储管理;
写入装置,用于对于数据解析端所传送的音频数据,根据该音频数据对应的音轨索引值m,将该音频数据写入对应的StreamManager[m]中,其中,0<=m<n;
读取播放装置,用于在用户播放时,若用户选择的当前需要播放的音频数据的音轨索引值为i,则将记录当前音轨索引值的变量k赋值为i,从StreamManager[k]中读取对应的音频数据,并将读取的音频数据传送至音频解码模块进行解码后播放,其中,0<=i<n;
清除装置,用于清除每个数据管理模块StreamManager[n-1]中过时的音频数据;
切换装置,用于当用户进行音轨切换时,将当前播放的音轨索引值i修改为需要播放的音轨索引值j,并将记录当前音轨索引值的变量k赋值为j,之后,从StreamManager[k]中读取对应的音频数据,并将读取的音频数据传送至音频解码模块进行解码后播放,其中,0<=j<n。
7.根据权利要求6所述的音轨切换系统,其特征在于,所述模块创建装置创建的每个数据管理模块StreamManager[n-1]包括有以下用于对音频数据对应的数据帧进行存储管理的变量:
用于限定允许存储的最大数据帧个数nMaxFrameNum;
所存储的有效数据帧个数nValidFrameNum;
对应的用于存储数据帧信息的结构体数组pFrames[nMaxFrameNum-1],所述结构体数组pFrames[nMaxFrameNum-1]包含有以下用于描述数据帧信息的变量:
数据帧存储的地址指针pData,
数据帧的存储长度nLength,和
数据帧对应的显示时间戳nPts;
将要读取的数据帧在pFrames数组中的位置索引nReadPos,且0<=nReadPos<nMaxFrameNum;
将要写入的数据帧在pFrames数组中的位置索引nWritePos,且0<=nWritePos<nMaxFrameNum;
将要移除的数据帧在pFrames数组中的位置索引nFlushPos。
8.根据权利要求7所述的音轨切换系统,其特征在于,所述写入装置根据该音频数据对应的音轨索引值m,将该音频数据写入对应的StreamManager[m]中时,StreamManager[m]首先根据该音频数据对应数据帧的长度申请一段内存空间,再将音频数据存储至所申请的内存空间,同时,该内存空间的地址会被存储至对应pFrames[nWritePos]的pData中,该音频数据对应数据帧的长度和显示时间戳分别存储在pFrames[nWritePos]的nLength和nPts变量中,然后将nValidFrameNum加1,nWritePos加1,若nWritePos等于nMaxFrameNum,则将nWritePos置为0。
9.根据权利要求8所述的音轨切换系统,其特征在于,当所述读取播放装置和切换装置需要从StreamManager[k]中读取对应的音频数据时,具体包括:
从StreamManager[k]的pFrames[nReadPos]中得到对应音频数据的数据帧的内存空间地址、数据长度和数据的显示时间戳,同时将nValidFrameNum减1,nReadPos加1,若nReadPos等于nMaxFrameNum,则将nReadPos置为0。
10.根据权利要求8或9所述的音轨切换系统,其特征在于,当所述清除装置需要清除数据管理模块StreamManager[n-1]中过时的音频数据时,对于需要清除的音频数据,对应StreamManager释放为该音频数据申请的内存空间,即清除pFrames[nFlushPos]的pData对应的内存空间,同时将nFlushPos加1,若nFlushPos等于nMaxFrameNum,则将nFlushPos置为0。
11.一种播放器,其特征在于,所述播放器采用如权利要求10所述的音轨切换系统。
12.一种智能设备,其特征在于,所述智能设备安装有如权利要求11所述的播放器。
CN201410849953.5A 2014-12-29 2014-12-29 多媒体播放器的音轨切换方法、系统及对应播放器和设备 Active CN104505109B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410849953.5A CN104505109B (zh) 2014-12-29 2014-12-29 多媒体播放器的音轨切换方法、系统及对应播放器和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410849953.5A CN104505109B (zh) 2014-12-29 2014-12-29 多媒体播放器的音轨切换方法、系统及对应播放器和设备

Publications (2)

Publication Number Publication Date
CN104505109A CN104505109A (zh) 2015-04-08
CN104505109B true CN104505109B (zh) 2017-06-30

Family

ID=52946850

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410849953.5A Active CN104505109B (zh) 2014-12-29 2014-12-29 多媒体播放器的音轨切换方法、系统及对应播放器和设备

Country Status (1)

Country Link
CN (1) CN104505109B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104967901B (zh) * 2015-06-29 2018-05-04 腾讯科技(北京)有限公司 媒体播放中的音轨切换方法和媒体播放设备
CN106559705B (zh) * 2015-09-28 2019-07-12 青岛海信电器股份有限公司 一种音频数据的处理方法、装置和系统
CN106921885B (zh) * 2017-03-02 2020-03-03 深圳创维数字技术有限公司 一种多媒体数据流的切换播放方法及装置
CN107426600B (zh) * 2017-06-30 2019-11-08 北京威动科技有限公司 切换音轨和字幕轨的播放方法及装置
CN107342098B (zh) * 2017-07-20 2019-11-26 青岛海信电器股份有限公司 音频播放方法及装置
CN108550377B (zh) * 2018-03-15 2020-06-19 北京雷石天地电子技术有限公司 一种音轨快速切换的方法及系统
CN111339351B (zh) * 2018-12-19 2023-08-11 成都鼎桥通信技术有限公司 一种Android系统中的音频播放方法
CN112423104A (zh) * 2020-09-02 2021-02-26 上海幻电信息科技有限公司 直播场景下的多路音频的音频混合方法及系统
CN115643442A (zh) * 2022-10-25 2023-01-24 广州市保伦电子有限公司 一种音视频合流录制播放方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1414481A (zh) * 2002-05-23 2003-04-30 华为技术有限公司 一种基于多业务多通道的数据收发处理方法
CN1759447A (zh) * 2003-03-10 2006-04-12 皇家飞利浦电子股份有限公司 能够实现无缝重放的记录载体和设备
CN103428462A (zh) * 2013-08-29 2013-12-04 中安消技术有限公司 一种多通道音视频处理方法和装置
CN103686196A (zh) * 2013-12-31 2014-03-26 北京中科大洋科技发展股份有限公司 一种保证视音频正常播出的无缝切换系统及方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101720037B (zh) * 2009-12-17 2011-10-12 青岛海信宽带多媒体技术有限公司 一种dvb数据的动态缓存方法
CN101963896B (zh) * 2010-08-20 2012-11-14 中国科学院计算技术研究所 一种具有二次索引结构的存储设备及其操作方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1414481A (zh) * 2002-05-23 2003-04-30 华为技术有限公司 一种基于多业务多通道的数据收发处理方法
CN1759447A (zh) * 2003-03-10 2006-04-12 皇家飞利浦电子股份有限公司 能够实现无缝重放的记录载体和设备
CN103428462A (zh) * 2013-08-29 2013-12-04 中安消技术有限公司 一种多通道音视频处理方法和装置
CN103686196A (zh) * 2013-12-31 2014-03-26 北京中科大洋科技发展股份有限公司 一种保证视音频正常播出的无缝切换系统及方法

Also Published As

Publication number Publication date
CN104505109A (zh) 2015-04-08

Similar Documents

Publication Publication Date Title
CN104505109B (zh) 多媒体播放器的音轨切换方法、系统及对应播放器和设备
CN104902145B (zh) 一种直播流视频的播放方法及装置
MX2009002191A (es) Metodo y aparato para recibir, almacenar y presentar programacion multimedia sin indexar antes de almacenar.
TW200617911A (en) Meta data for moving picture
SG149820A1 (en) Storage medium having interactive graphic stream and apparatus for reproducing the same
CN102547435A (zh) 一种多媒体文件播放处理系统及方法
CN109062537A (zh) 一种音频延迟的降低方法、装置、介质及设备
CN106254867A (zh) 基于画面组对视频文件进行转码的方法及系统
CN107484011A (zh) 一种视频资源解码方法及装置
US20120035913A1 (en) Multi-language buffering during media playback
RU2009148525A (ru) Управление цифровыми данными с помощью пула совместно используемой памяти
CN103475927A (zh) 在线视频实时变速播放方法及系统
CN101702676A (zh) 数据缓冲处理的方法和装置
CN104093084B (zh) 一种播放视频的方法及装置
CN103391467A (zh) 网络机顶盒音视频解码与播放同步实现方法
CN102420010A (zh) 一种音频录制方法及系统
CN101164112B (zh) 格式转换装置、格式转换方法和动图像解码系统
CN1747034B (zh) 在混合式多媒体播放机内防止中断音频或视频的方法
CN103745682B (zh) 一种异步级联的方法
CN108174008A (zh) 一种用于通信语音传输系统的语音包存储方法
EP1968318A4 (en) DISTRIBUTION AND REPRODUCTIVE APPARATUS
CN106454393A (zh) 一种视频缓存方法及装置
CN106162311A (zh) 一种播放网络视频的方法和终端设备
CN106162231A (zh) 一种视频直播转点播的方法及装置
CN103428213A (zh) 一种多媒体文件生成的方法及多媒体设备

Legal Events

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