一种在线卡拉ok伴奏、人声与字幕的同步方法

文档序号:6739924阅读:766来源:国知局
专利名称:一种在线卡拉ok伴奏、人声与字幕的同步方法
技术领域
本发明涉及在线卡拉0K、多媒体技术领域,公开了一种互联网在线卡拉OK模式下,卡拉OK伴奏、人声、字幕的同步方法。
背景技术
卡拉OK是人们休闲娱乐最重要的一种方式,也是线下社交中的保留节目。计算机网络通信作为一种先进的通信方式,一直在改变着人们的生活。而建立在计算机网络通信基础上的在线卡拉0K,凭借其自身方便、低成本和互动性强等特点,日益受到人们的关注和认同。利用本发明,可以实现网络KTV,让天涯海角的朋友通过网络,可以聚在一起进行K歌,较好地增强了互动,节约交流所需的时间和成本。在线卡拉OK系统中,伴奏、人声、字幕的同步技术是一项极为产键的技术,它直接影响到用户体验的好坏。现在的在线卡拉OK伴奏、人声、字幕同步方法一般采用传输三路多媒体数据,在每路数据中增加演唱者端演唱的时间,通过流媒体发送到收听者端,收听者端启动多媒体播放器,按照演唱者端演唱的时间,分别播放。在互联网高速发展的今天,从演唱者端同时传输三路数据到收听者端,都能稳定、及时到达。随着移动终端,如智能手机、PDA等便携电子设备的出现,人们也期望该类设备也能随时随地参与在线卡拉OK带来的完美体验。一方面受运营商网络的影响,移动互联网的带宽远远不及传统互联网的带宽,在多路数据传输时,经常造成数据延迟,要么只听到伴奏,要么只听到人声,要么只看到字幕渐进。另一方面移动终端等小型设备的CPU性能无法与PC比拟,采用多路数据同时播放及相互同步,对CPU的计算能力要求高,会造成卡顿现象,用户体验效果非常差。

发明内容
本发明技术解决问题克服现有技术的不足,提供一种在线卡拉OK伴奏、人声与字幕的同步方法,减少网络带宽的实时传输,在接收者端多媒体播放线程启动前,从服务器上下载完字幕;同时降低CPU的计算消耗,在演唱者端将伴奏与人声进行混音、加上播放时间压缩编码形成多媒体数据块,接收者端进行解码播放,且按播放数据量的大小进行字幕同步。本发明技术解决方案一种在线卡拉OK伴奏、人声与字幕的同步方法,实现步骤如下;(I)在演唱者端,启动混音线程,定义两个缓冲区Mus icBuffer、SoundBuffer用于缓存伴奏和用户录音数据,当两个缓冲区中的数据到达指定的量MaxBuffer时,记录当前的播放时间PlayedTime,对录音数据先进行AGC处理然后再与伴奏进行混音处理,混音数据的时长为单位时间UnitlTime的整数倍,混音的数据长度ProcessTime为ProcessTime=Int(Min(MusicBuffer, SoundBuffer)/UnitlTime)^UnitlTime将混音后的数据进行MP3编码,把编码后的数据与已播放的时间戳TimeStamp —起通过AMF数据格式封装,当演唱者端一首歌曲演唱结束时,达到设定的TimeStamp的结束阈值(-1),TimeStamp是个整数值,单位是毫秒(ms),用于说明演唱者端当前演唱的时间,也就是伴奏已经播放了的时间,当收听者端接收到这个时间,就会以这个时间为准来同步进行播放声音;采用RTMP协议发送到流媒体服务器,由流媒媒体服务器广播给各个收听者端,分别将未混音完成的伴奏数据和录音数据重新加入MusicBuffer、SoundBuffer缓冲区,按步骤(I)进行循环处理;(2)在接收者端,定义一个播放缓冲区PlayingBuffer用于接收演唱者端发送过来的数据,启动数据接收线程、音频播放线程、字幕渐近线程;接收线程将接收到的数据解码成音频数据及时间戳TimeStamp ;播放线程开始准备播放,依据接收到的时间戳与缓冲数据量实时计算出当前播放器相对应的演唱者端的时间PlayTime,计算公式如下PlayTime=TimeStamp-播放缓冲区 PlayingBuffer 剩余的数据时长;字幕渐近线程依据计算出的播放时间进行字幕渐近,所述进行字幕渐近方法如下a.根据当前播放器相对应的演唱者端的时间PlayTime,定位到当前播放的字,并提取出当前字的开始时间Word, endtime和结束时间Word. EndTime ;b.进行字幕的渐变,处理的长度=(PlayTime-fford. StartTime) * (字的宽度像素)/ (Word. EndTime-Word. StartTime);c.每隔单位时间Unit2Time,循环执行步骤a、b ;d.当当前播放器相对应的演唱者端的时间PlayTime的值为设定的TimeStamp的结束阈值(-1)时,表明演唱已结束,并进行结果的展示。本发明与现有技术相比的优点在于( I)现有在线卡拉OK技术都是在采用flash客户端+流媒体服务的方式来实现,将伴奏、人声、字幕、同步时间戳通过各个通道进行广播,开发实现起来比较便捷,但也造成以下问题由于终端设备性能差别较大,flash客户端的时间戳因性能问题会自动调整,就会产生演唱者端实际播放的时间与录音数据量的偏差,因而造成在收听者端,伴奏、人声、字幕三者不同步的现象;由于网络的延迟,流媒体服务的各个通道上的数据到达的时间也难以保证一致,这样就会出现像伴奏先到,人声迟一点才到收听者端,也会造成在收听者端,伴奏、人声、字幕三者不同步的现象。(2)本发明采用在演唱者端就将伴奏、人声混音完成,在接收者端启动播放线程时先从流媒体服务器上下载完成歌词,当接收到一定量的数据后才开始播放,有效保证了在收听者端,伴奏、人声、字幕三者同步,增强了用户体验。


图I为本发明方法实现的系统的组成框图;图2为本发明中在演唱者端将伴奏、人声进行混音编码的实现流程图;图3为本发明中在接收者端进行音频解码播放、字幕同步的实现流程图。
具体实施例方式下面结合附图及实施例对本发明进一步详细说明。一、系统整体架构流程图如下在图I中可以看到,实现本发明在线卡拉OK伴奏、人声、字幕的同步方法的主要流程为I、在演唱者端进行人声、伴奏混音,加上播放的时间戳编码后发送到流媒体服务 器。2、在收听者端,在流媒体播放器线程启动后,就从服务器端加载歌词,然后接收流媒体数据,采用接收到的数据量大小来同步字幕的播放。二、本发明实现详细说明I、图2所示,考虑到在实际的录音过程中存在着网络状况不佳,容易导致录音数据与背景音之间存在不同步,需要在混音过程中消除。在实际的唱歌过程中人声会在每一句唱词结束时都会有一定的停顿,为了保证音乐的连续性,使用伴奏作为基准在每句结束处进行声音同步处理。详细的同步逻辑如下(I)定义2个缓冲区MusicBuffer、SoundBuffer用于缓存伴奏和用户录音数据,当混音线程开启后实时向缓冲区中添加数据。(2)当缓冲区中的数据到达指定的量MaxBufferTime时,记录当前的播放时间PlayTime,对录音数据先进行AGC处理然后再与背景音进行混音处理,处理数据的时长要为单位时间UnitTime的整数倍,故处理的数据时长为Int (Min (MusicBuffer, SoundBuffer)/UnitTime) ^UnitTime剩余的数据重新加入缓冲区,等待循环处理。(3)当到达一句结尾时,以伴奏数据为基准进行对齐,当录音数据比伴奏多时,将录音数据多的时候截取,少的时候补零,从而使数据对齐。(4)将混音处理好的数据进行MP3编码,把编码后的数据与已播放的时间戳TimeStamp 一起通过AMF数据格式封装,注时间戳TimeStamp精确到毫秒,当演唱者端一首歌曲演唱结束时,TimeStamp为-I。采用RTMP协议发送到流媒体服务器。2、如图3所示,收听者端收到流媒体数据后,启动多媒体播放线程和字幕渐近线程,多媒体播放线程进行解码播放,字幕渐近线程根据播放的数据量及时间戳,进行字幕同步。详细的同步逻辑如下(I)数据接收线程在获取到数据后将数据交由数据解码线程进行数据解析,得到音频数据及时间戳;(2)将音频数据块放入缓冲队列PlayingBuffer,当缓存的音频数据达到一定量时,播放线程开始进行播放;(3)在播放时,依据接收到的时间戳TimeStamp与缓冲数据量实时计算出当前播放器相对应的演唱者端的时间PlayTime,计算公式如下PlayTime=TimeStamp-播放缓冲区 PlayingBuffer 剩余的数据时长;(4)字幕渐近线程依据计算出的播放时间进行字幕渐近,字幕渐近方法如下a.根据当前播放器相对应的演唱者端的时间PlayTime,定位到当前播放的字,并提取出当前字的开始时间Word, endtime和结束时间Word. EndTime。b.进行字幕的渐变,处理的长度=(PlayTime-fford. StartTime) * (字的宽度像素)/ (Word. EndTime-fford. StartTime)c.每隔50晕秒,循环执行步骤a、b。d.当当前播放器相对应的演唱者端的时间PlayTime的值为-I时,表明演唱已结束,并进行结果的展示。本发明未详细阐述部分属于本领域公知技术;且以上所述,仅为本发明部分具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本领域的人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
权利要求
1.一种在线卡拉OK伴奏、人声与字幕的同步方法,其特征在于实现如下步骤; (1)在演唱者端,启动混音线程,定义两个缓冲区MusicBuffer、SoundBuffer用于缓存伴奏和用户录音数据,当两个缓冲区中的数据到达指定的量MaxBuffer时,记录当前的播放时间PlayedTime,对录音数据先进行AGC处理然后再与伴奏进行混音处理,混音数据的时长为单位时间UnitlTime的整数倍,混音的数据长度ProcessTime为ProcessTime=Int(Min(MusicBuffer, SoundBuffer)/UnitlTime)氺UnitlTime 将混音后的数据进行MP3编码,把编码后的数据与已播放的时间戳TimeStamp —起通过AMF数据格式封装,当演唱者端一首歌曲演唱结束时,达到设定的TimeStamp的结束阈值,采用RTMP协议发送到流媒体服务器,由流媒媒体服务器广播给各个收听者端,分别将未混音完成的伴奏数据和录音数据重新加入MusicBuffer、SoundBuffer缓冲区,按步骤(I)进行循环处理; (2)在接收者端,定义一个播放缓冲区PlayingBuffer用于接收演唱者端发送过来的数据,启动数据接收线程、音频播放线程、字幕渐近线程;接收线程将接收到的数据解码成音频数据及时间戳TimeStamp ;播放线程开始准备播放,依据接收到的时间戳与缓冲数据量实时计算出当前播放器相对应的演唱者端的时间PlayTime,计算公式如下 PlayTime=TimeStamp-播放缓冲区PlayingBuffer剩余的数据时长; 字幕渐近线程依据计算出的播放时间进行字幕渐近,所述进行字幕渐近方法如下 a.根据当前播放器相对应的演唱者端的时间PlayTime,定位到当前播放的字,并提取出当前字的开始时间Word, endtime和结束时间Word. EndTime ; b.进行字幕的渐变,处理的长度=(PlayTime-fford.StartTime) * (字的宽度像素)/(Word. EndTime-Word. StartTime); c.每隔单位时间Unit2Time,循环执行步骤a、b; d.当当前播放器相对应的演唱者端的时间PlayTime的值为设定的TimeStamp的结束阈值时,表明演唱已结束,并进行结果的展示。
全文摘要
一种在线卡拉OK伴奏、人声与字幕的同步方法,在演唱者端进行人声、伴奏混音,加上播放的时间戳编码后发送到流媒体服务器;在收听者端,流媒体播放器线程启动后,首先从服务器端加载歌词,然后接收流媒体数据,采用接收到媒体数据量的大小来同步字幕的播放,从而实现收听者端与演唱者端卡拉OK伴奏、人声与字幕的同步。本发明减少网络带宽的实时传输,在接收者端多媒体播放线程启动前,从服务器上下载完字幕;同时降低CPU的计算消耗,在演唱者端将伴奏与人声进行混音、加上播放时间压缩编码形成多媒体数据块,接收者端进行解码播放,且按播放数据量的大小进行字幕同步。
文档编号G11B27/10GK102982832SQ20121048413
公开日2013年3月20日 申请日期2012年11月24日 优先权日2012年11月24日
发明者操灿, 王松松, 张旭, 张磊, 聂小林 申请人:安徽科大讯飞信息科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1