一种对手机采集的实时视频和音频进行同步的方法及系统\n技术领域\n[0001] 本发明涉及一种对手机采集的实时视频和音频进行同步的方法及系统。\n背景技术\n[0002] 手机直播的解决方案主要是利用智能手机现场采集音、视频信息,并通过3G/4G网络或wifi网络实时回传至平台,既可以录制成文件,也可以转发到播放客户端直播观看,在开发过程中,提供了视频软硬编码的两套方法,但是由于硬编码和手机硬件关系密切,不同硬件的手机的硬件编码方式不同,目前程序结构传输音视频数据大致分为以下两类:一、音视频均匀间隔传输数据(如三星s5830),硬编码一个周期(1秒)得到音视频数据;二、视频不均匀间隔传输数据(如中兴n880等),硬编码一个周期(1秒)得到音视频数据,相对于均匀间隔传输数据硬编码一个周期得到的音视频数据而言,不均匀间隔传输数据硬编码一个周期得到的音视频数据之间的间隔差距很大,实时流时间戳是在音视频传输前取得的当前系统时间,这样视频数据根据目前的代码传输框架,产生视频数据后,会立即传输,若根据中兴手机测试的结果,会导致1秒周期内如果产生15帧的视频数据,14帧数据会在几毫秒内打上时间戳,立即送出,而最后1帧数据会间隔将近1秒后才会送出,这样就会导致视频播放时出现严重卡顿现象,影响用户体验。\n发明内容\n[0003] 本发明要解决的技术问题之一,在于提供一种对手机采集的实时视频和音频进行同步的方法,实现视频和音频同步播放,减少卡顿问题,同时采用硬编码方式提高了手机利用率,降低了手机电量的损耗,不占用手机cpu,让手机运行得更加流畅。\n[0004] 本发明要解决的技术问题之一是这样实现的:一种对手机采集的实时视频和音频进行同步的方法,手机通过硬编码方式与流媒体服务器连接,将采集到的实时视频和音频数据发送给流媒体服务器,所述方法需提供视频接收线程、视频发送线程和音频收发线程;\n所述视频发送线程根据发送延时时间t1进行发送,所述发送延时时间t1的初始值为0;\n[0005] 所述方法包括如下步骤:\n[0006] 步骤1、当视频接收线程收集一视频数据帧,将该帧数据放入缓存,记录当前视频数据帧的接收时间并累计接收的视频数据帧数renum;\n[0007] 步骤2、获得当前接收到的视频数据帧与上一次接收到的视频数据帧之间的接收间隔时间△t,判断△t是否大于一限定值max,若是,累计△t大于所述限定值max的次数n,进入步骤3;否则跳转至步骤4;\n[0008] 步骤3、当n为偶数时,恢复对视频数据帧和音频数据帧的发送,根据视频数据帧数renum计算出新的视频数据帧的发送延时时间t2,更新发送延时时间t1=t2,将renum的数值清零,视频发送线程获取发送延时时间t1,按发送延时时间t1并按存入缓存的顺序取出一帧视频数据进行发送,返回步骤1;否则,当n为奇数时,停止视频发送线程对视频数据帧的发送,并停止音频收发线程对音频数据帧的发送,返回步骤1;\n[0009] 步骤4、当n为偶数时,视频发送线程获取发送延时时间t1,按发送延时时间t1并按存入缓存的顺序取出一帧视频数据进行发送,返回步骤1;否则,当n为奇数时,返回步骤1。\n[0010] 进一步的,所述音频收发线程对采集到的音频数据帧按序存入缓存,发送音频数据帧时按存入缓存的顺序逐一取出音频数据帧直接进行发送。\n[0011] 进一步的,所述步骤2具体为:\n[0012] 步骤21、对当前视频数据帧为首次接收的视频数据帧,则直接从缓存中取出该帧数据进行发送,返回步骤1,否则,进入步骤22;\n[0013] 步骤22、获得当前接收到的视频数据帧与上一次接收到的视频数据帧之间的接收间隔时间△t,判断△t是否大于一限定值max,若是,累计△t大于所述限定值max的次数n,进入步骤3;否则跳转至步骤4。\n[0014] 进一步的,所述限定值max取500ms。\n[0015] 进一步的,所述步骤3中新的视频数据帧的发送延时时间t2的计算方式为:若renum>11,则t2=1000/renum,否则t2=1000/11。\n[0016] 本发明要解决的技术问题之二,在于提供一种对手机采集的实时视频和音频进行同步的系统,实现视频和音频同步播放,减少卡顿问题,同时采用硬编码方式提高了手机利用率,降低了手机电量的损耗,不占用手机cpu,让手机运行得更加流畅。\n[0017] 本发明要解决的技术问题之二是这样实现的:一种对手机采集的实时视频和音频进行同步的系统,手机通过硬编码方式与流媒体服务器连接,将采集到的实时视频和音频数据发送给流媒体服务器,所述系统需提供视频接收线程、视频发送线程和音频收发线程;\n所述视频发送线程根据发送延时时间t1进行发送,所述发送延时时间t1的初始值为0;\n[0018] 所述系统包括:\n[0019] 视频数据记录模块,用于当视频接收线程收集一视频数据帧,将该帧数据放入缓存,记录当前视频数据帧的接收时间并累计接收的视频数据帧数renum;\n[0020] 间隔判断模块,用于获得当前接收到的视频数据帧与上一次接收到的视频数据帧之间的接收间隔时间△t,判断△t是否大于一限定值max,若是,累计△t大于所述限定值max的次数n,执行延时计算模块;否则执行发送处理模块;\n[0021] 延时计算模块,用于当n为偶数时,恢复对视频数据帧和音频数据帧的发送,根据视频数据帧数renum计算出新的视频数据帧的发送延时时间t2,更新发送延时时间t1=t2,将renum的数值清零,视频发送线程获取发送延时时间t1,按发送延时时间t1并按存入缓存的顺序取出一帧视频数据进行发送,执行视频数据记录模块;否则,当n为奇数时,停止视频发送线程对视频数据帧的发送,并停止音频收发线程对音频数据帧的发送,执行视频数据记录模块;以及\n[0022] 发送处理模块,用于当n为偶数时,视频发送线程获取发送延时时间t1,按发送延时时间t1并按存入缓存的顺序取出一帧视频数据进行发送,执行视频数据记录模块;否则,当n为奇数时,执行视频数据记录模块。\n[0023] 进一步的,所述音频收发线程对采集到的音频数据帧按序存入缓存,发送音频数据帧时按存入缓存的顺序逐一取出音频数据帧直接进行发送。\n[0024] 进一步的,所述间隔判断模块进一步包括:\n[0025] 首次视频数据帧判断模块,用于对当前视频数据帧为首次接收的视频数据帧,则直接从缓存中取出该帧数据进行发送,执行视频数据记录模块,否则,执行视频接收间隔判断模块;以及\n[0026] 视频接收间隔判断模块,用于获得当前接收到的视频数据帧与上一次接收到的视频数据帧之间的接收间隔时间△t,判断△t是否大于一限定值max,若是,累计△t大于所述限定值max的次数n,执行延时计算模块;否则执行发送处理模块。\n[0027] 进一步的,所述限定值max取500ms。\n[0028] 进一步的,所述延时计算模块中新的视频数据帧的发送延时时间t2的计算方式为:若renum>11,则t2=1000/renum,否则t2=1000/11。\n[0029] 本发明具有如下优点:通过根据视频数据帧的接收间隔时间特征来调整视频数据帧的延时发送时间,从而实现视频和音频同步播放,有效减少卡顿问题,同时本发明采用硬编码方式提高了手机利用率,降低了手机电量的损耗,不占用手机cpu,让手机运行得更加流畅。\n附图说明\n[0030] 下面参照附图结合实施例对本发明作进一步的说明。\n[0031] 图1为本发明一种对手机采集的实时视频和音频进行同步的方法执行流程图。\n[0032] 图2为本发明一种对手机采集的实时视频和音频进行同步的系统框架图。\n具体实施方式\n[0033] 如图1所示,本发明一种对手机采集的实时视频和音频进行同步的方法,手机通过硬编码方式与流媒体服务器连接,将采集到的实时视频和音频数据发送给流媒体服务器,所述方法需提供视频接收线程、视频发送线程和音频收发线程;所述视频发送线程根据发送延时时间t1进行发送,所述发送延时时间t1的初始值为0,所述音频收发线程对采集到的音频数据帧按序存入缓存,发送音频数据帧时按存入缓存的顺序逐一取出音频数据帧直接进行发送;\n[0034] 所述方法包括如下步骤:\n[0035] 步骤1、当视频接收线程收集一视频数据帧,将该帧数据放入缓存,记录当前视频数据帧的接收时间并累计接收的视频数据帧数renum;\n[0036] 步骤2、获得当前接收到的视频数据帧与上一次接收到的视频数据帧之间的接收间隔时间△t,判断△t是否大于限定值max=500ms,若是,累计△t大于限定值max=500ms的次数n,进入步骤3;否则跳转至步骤4;所述步骤2具体包括步骤21和步骤22;\n[0037] 步骤21、对当前视频数据帧为首次接收的视频数据帧,则直接从缓存中取出该帧数据进行发送,返回步骤1,否则,进入步骤22;\n[0038] 步骤22、获得当前接收到的视频数据帧与上一次接收到的视频数据帧之间的接收间隔时间△t,判断△t是否大于限定值max=500ms,若是,累计△t大于限定值max=500ms的次数n,进入步骤3;否则跳转至步骤4;\n[0039] 步骤3、当n为偶数时,恢复对视频数据帧和音频数据帧的发送,根据视频数据帧数renum计算出新的视频数据帧的发送延时时间t2,新的视频数据帧的发送延时时间t2的计算方式为:若renum>11,则t2=1000/renum,否则t2=1000/11,更新发送延时时间t1=t2,将renum的数值清零,视频发送线程获取发送延时时间t1,按发送延时时间t1并按存入缓存的顺序取出一帧视频数据进行发送,返回步骤1;否则,当n为奇数时,停止视频发送线程对视频数据帧的发送,并停止音频收发线程对音频数据帧的发送,返回步骤1;\n[0040] 步骤4、当n为偶数时,视频发送线程获取发送延时时间t1,按发送延时时间t1并按存入缓存的顺序取出一帧视频数据进行发送,返回步骤1;否则,当n为奇数时,返回步骤1。\n[0041] 通过上述步骤进行处理后,能够使得视频数据帧和音频数据帧的发送基本同步,大大减少卡顿问题,只有当不再接收视频数据和音频数据,且缓存中不存在视频数据帧和音频数据的情况下,才终止对音视频数据的同步发送。\n[0042] 如图2所示,本发明一种对手机采集的实时视频和音频进行同步的系统,手机通过硬编码方式与流媒体服务器连接,将采集到的实时视频和音频数据发送给流媒体服务器,所述系统需提供视频接收线程、视频发送线程和音频收发线程;所述视频发送线程根据发送延时时间t1进行发送,所述发送延时时间t1的初始值为0,所述音频收发线程对采集到的音频数据帧按序存入缓存,发送音频数据帧时按存入缓存的顺序逐一取出音频数据帧直接进行发送;\n[0043] 所述系统包括:\n[0044] 视频数据记录模块,用于当视频接收线程收集一视频数据帧,将该帧数据放入缓存,记录当前视频数据帧的接收时间并累计接收的视频数据帧数renum;\n[0045] 间隔判断模块,用于获得当前接收到的视频数据帧与上一次接收到的视频数据帧之间的接收间隔时间△t,判断△t是否大于一限定值max=500ms,若是,累计△t大于所述限定值max=500ms的次数n,执行延时计算模块;否则执行发送处理模块;所述间隔判断模块进一步包括首次视频数据帧判断模块和视频接收间隔判断模块;\n[0046] 首次视频数据帧判断模块,用于对当前视频数据帧为首次接收的视频数据帧,则直接从缓存中取出该帧数据进行发送,执行视频数据记录模块,否则,执行视频接收间隔判断模块;\n[0047] 视频接收间隔判断模块,用于获得当前接收到的视频数据帧与上一次接收到的视频数据帧之间的接收间隔时间△t,判断△t是否大于一限定值max=500ms,若是,累计△t大于所述限定值max=500ms的次数n,执行延时计算模块;否则执行发送处理模块;\n[0048] 延时计算模块,用于当n为偶数时,恢复对视频数据帧和音频数据帧的发送,根据视频数据帧数renum计算出新的视频数据帧的发送延时时间t2,所述新的视频数据帧的发送延时时间t2的计算方式为:若renum>11,则t2=1000/renum,否则t2=1000/11,更新发送延时时间t1=t2,将renum的数值清零,视频发送线程获取发送延时时间t1,按发送延时时间t1并按存入缓存的顺序取出一帧视频数据进行发送,执行视频数据记录模块;否则,当n为奇数时,停止视频发送线程对视频数据帧的发送,并停止音频收发线程对音频数据帧的发送,执行视频数据记录模块;以及\n[0049] 发送处理模块,用于当n为偶数时,视频发送线程获取发送延时时间t1,按发送延时时间t1并按存入缓存的顺序取出一帧视频数据进行发送,执行视频数据记录模块;否则,当n为奇数时,执行视频数据记录模块。\n[0050] 通过上述模块对视频数据和音频数据进行处理后,能够使得视频数据帧和音频数据帧的发送基本同步,大大减少卡顿问题,只有当不再接收视频数据和音频数据,且缓存中不存在视频数据帧和音频数据的情况下,才终止对音视频数据的同步发送。\n[0051] 虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
法律信息
- 2018-06-05
专利权人的姓名或者名称、地址的变更
专利权人由福建富士通信息软件有限公司变更为中电福富信息科技有限公司
地址由350000 福建省福州市鼓楼区五凤街道软件大道89号12号楼变更为350000 福建省福州市鼓楼区五凤街道软件大道89号12号楼
- 2018-03-23
- 2016-01-20
实质审查的生效
IPC(主分类): H04N 5/04
专利申请号: 201510552210.6
申请日: 2015.09.01
- 2015-12-23
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2011-09-21
|
2010-03-17
| | |
2
| |
2008-03-12
|
2005-03-18
| | |
3
| | 暂无 |
2002-04-01
| | |
4
| |
2005-03-23
|
2004-09-15
| | |
5
| |
2007-10-17
|
2005-11-17
| | |
6
| |
2007-10-03
|
2006-03-27
| | |
7
| |
2010-08-04
|
2009-02-03
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |