媒体播放方法、设备及音乐教学系统的制作方法_3

文档序号:9670797阅读:来源:国知局
stamp 为 10 点 00 分 00 秒 010 毫秒,缓冲长度 inbufferlength*1000/AUD10_PERSECOND_REAL为10毫秒,那么curastamp值为10点00分00秒000毫秒。
[0061]如上所述,音频播放单元230可以计算出当前播放的音频样点的采集时间。采集时间可用于视频帧与音频帧的同步播放。具体而言,视频播放单元250可以获取到音频播放单元230所计算的当前播放的音频样点的采集时间。在每次音频播放单元230更新当前所播放的音频样点的采集时间时,视频播放单元250可以检测来自视频解码单元240的视频帧中,是否具有第二时间戳小于或等于该采集时间的视频帧。这样,视频播放单元250可以通过播放所检测到的视频帧,实现视频帧与音频帧的同步播放。需要说明的是,根据本发明的媒体终端所采集的音频帧的生成频率通常高于视频帧的。根据本发明的媒体播放设备在对音频帧和视频帧进行播放时,通过将视频帧跟随当前播放音频样点的方式,可以极大提高音视频数据播放的同步性,从而极大提高用户体验度。
[0062]图3示出了根据本发明一些实施例的媒体播放方法300的流程图。方法300适于在根据本发明的媒体播放设备中执行。
[0063]如图3所示,方法300始于步骤S310。在步骤S310中,接收来自媒体服务器的音频数据。这里,媒体服务器通常以数据包的方式将音频数据传输到媒体播放设备。音频数据包格式例如为:
[0064]TCP_info+AV_Info+Aud1Data
[0065]方法300可以执行步骤S320,对所接收的音频数据执行解码操作以获取一个或多个音频帧。通常,所获取的音频帧可以被依次存放到播放缓冲区中,以便例如声卡等对播放缓冲区中音频帧进行依次播放。这里,每个音频帧为根据本发明的媒体终端所采集的例如乐器演奏等内容。为了保持声音的高保真采集,媒体终端没有对音频数据进行静音检测处理(即没有进行静音抑制操作)。这样,根据本发明的媒体播放设备可以对音频数据进行高品质的播放。
[0066]但是,由于网络抖动等原因,对于音频帧的播放可能会造成延时累积。为了在播放过程中消减播放延时,方法300还包括步骤S330,对这个音频帧执行静音检测操作,以判断该音频帧是否为静音数据。这里,静音数据是指声音信号能量低于预定门限的数据。静音检测的算法例如为短时能量检测算法,或者短时过零率检测算法。但不限于此,任何已知的静音检测算法都可以应用在本发明的实施方式中。
[0067]如果所检测的音频帧为静音数据,方法300可以执行步骤S340。在步骤S340中,舍弃该音频帧。如果检测的音频帧非静音数据,方法300可以执行步骤S350,将这个音频帧存放到播放缓冲区中。这里,根据本发明的媒体播放方法300【具体实施方式】已在对图2中媒体播放设备的描述中公开,这里不再赘述。
[0068]图4示出了根据本发明一些实施例的媒体播放方法400的流程图。方法400适于在根据本发明的媒体播放设备中执行。
[0069]如图4所示,方法400始于步骤S410。在步骤S410中,接收来自媒体服务器的音频数据。这里,媒体服务器通常以数据包的方式将音频数据传输到媒体播放设备。音频数据包格式例如为:
[0070]TCP_info+AV_Info+Aud1Data
[0071]方法400可以执行步骤S420,对所接收的音频数据执行解码操作以获取一个或多个音频帧。通常,所获取的音频帧可以被依次存放到播放缓冲区中,以便例如声卡等对播放缓冲区中音频帧进行依次播放。这里,每个音频帧为根据本发明的媒体终端所采集的例如乐器演奏等内容。为了保持声音的高保真采集,媒体终端没有对音频数据进行静音检测处理(即没有进行静音抑制操作)。这样,根据本发明的媒体播放设备可以对音频数据进行高品质的播放。
[0072]但是,由于网络抖动等原因,对于音频帧的播放可能会造成延时累积。可选地,在将一帧音频帧存放到播放缓冲区之前,方法还包括步骤S430。在步骤S430中,判断当前所述播放缓冲区的缓冲长度是否超过阈值。缓冲长度为当前播放缓冲区中音频帧所需要的播放时长。阈值例如为500毫秒。如果缓冲长度未超过阈值,则可以不对这个音频帧执行静音检测操作,而是直接存放到播放缓冲区中。如果缓冲长度超过阈值,则方法400可以执行步骤S440,对这个音频帧执行静音检测操作,以判断该音频帧是否为静音数据。这里,静音数据是指声音信号能量低于预定门限的数据。静音检测的算法例如为短时能量检测算法,或者短时过零率检测算法。但不限于此,任何已知的静音检测算法都可以应用在本发明的实施方式中。需要说明的是,步骤S430并不是必需的,例如在网络持续不稳定的情况下,方法400可以直接执行步骤S440,而不用在步骤S440之前执行步骤S430。
[0073]如果所检测的音频帧为静音数据,方法400可以执行步骤S450。在步骤S450中,舍弃该音频帧。如果检测的音频帧非静音数据,方法400可以执行步骤S460,将这个音频帧存放到播放缓冲区中。
[0074]另外,根据本发明一个实施例,在播放缓冲区的缓冲长度达到该缓冲区的缓存上限时,方法400可以执行步骤S470。在步骤S470中,删除播放缓冲区中一个或者多个音频帧。根据本发明一个实施例,播放缓冲区为环形缓冲。环形缓冲例如可以最多存放16帧音频帧。在缓冲长度达到16帧时,在步骤S470中可以删除当前环形缓冲区中最早的一个音频帧。这样,方法400可以通过删除音频帧的方式以便继续缓存最新的音频帧,而对播放音频的质量影响很小。
[0075]另外,根据本发明一个实施例,在播放缓冲区为空时,方法400还可以执行步骤S480。在步骤S480中,生成空白帧并推送到播放缓冲区中。这样根据本发明的方法400可以进行连续的声音输出,而不会出现卡断现象,从而极大提高用户的体验度。
[0076]另外,根据本发明一个实施例,在步骤S420中所生成的每个音频帧包括第一时间戳。第一时间戳为其对应的音频帧的采集时间。例如,第一时间戳为音频帧的多个音频样点中第一个的采集时间,但不限于此。在步骤S440中确定所检测的音频帧非静音数据,并且在执行步骤S460之前,方法400还可以执行步骤S490。在步骤S490中,根据该音频帧的第一时间戳和当前播放缓冲区的缓冲长度,计算当前所播放的音频样点的采集时间。方法400还包括步骤S4100。在步骤S4100中,接收来自媒体服务器的视频数据。例如,所接收的一个视频数据包消息格式为:
[0077]TCP_info+AV_Info+VideoData
[0078]随后,在步骤S4110中,对视频数据执行视频解码操作,以获取一个或多个视频帧。其中每个视频帧包括第二时间戳。第二时间戳为该视频帧的采集时间。
[0079]随后,方法400根据步骤S490中所得到的当前所播放音频样点的采集时间,执行步骤S4120。在步骤S4120中,检测是否具有第二时间戳小于或等于所述当前所播放音频样点的采集时间的视频帧,并播放所检测到的视频帧。这样,根据本发明的方法400可以通过视频帧跟随音频样点的方法,实现音视频的同步播放。这里,根据本发明的媒体播放方法400【具体实施方式】与图2中媒体播放设备的工作方式一致,这里不再赘述。
[0080]A9、如A8所述的方法,还包括:接收来自媒体服务器的视频数据;对视频数据执行视频解码操作,以获取一个或多个视频帧,其中每个视频帧包括第二时间戳,第二时间戳为该视频帧的采集时间;以及检测是否具有第二时间戳小于或等于所述当前所播放音频样点的采集时间的视频帧,并播放所检测到的视频帧。
[0081]B11、如B10所述的媒体播放设备,在对所获取的每个音频帧执行静音检测操作之前,所述音频播放单元还适于:判断当前所述播放缓冲区的缓冲长度是否超过阈值,如果该缓冲长度未超过阈值,则不执行所述静音检测操作,并直接将这个音频帧存放到所述播放缓冲区中。B12、如B10或B11所述的媒体播放设备,所述音频播放单元还适于:在播放缓冲区的缓冲长度达到该缓冲区的缓存上限时,删除播放缓冲区中一个或者多个音频帧。B13、如B10-B12中任一项所述的媒体播放设备,所述音频播放单
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1