一种基于音视频分流存储的录像生成方法与流程

文档序号:16130820发布日期:2018-12-01 00:18阅读:241来源:国知局

本发明涉及计算机信息数据处理技术领域,具体涉及一种基于音视频分流存储的录像生成方法。

背景技术

现有双方通话录像生成方式:如图1所示,生成两个录像文件,声音做了混音处理,视频未作混合,即生成的是混音单画面的录像文件。所以,目前的录像效果是,可以听到双方声音,只能看到单侧的图像(本侧的图像和声音实现同步),会有一路声音无视频画面对应。为了解决这个问题,需要升级方案,支持视频画面的混合,达到最优的录像体验效果,即所有的声音和画面可以同步匹配。



技术实现要素:

本发明目的是提供一种基于音视频分流存储的录像生成方法,临时存储块保存数据,计算闲置cpu,保证不影响服务器总体性能,基于一路选路参考,一路视频编解码,减小性能开销,高效合成录像文件的技术;以解决上述背景技术中提出的问题。

为实现上述目的,本发明提供如下技术方案:

一种基于音视频分流存储的录像生成方法,包括如下步骤:

步骤(1)、将音视频进行缓冲存储处理

在接收到音频流a和视频流a以及音频流b和视频流b,做缓存处理,将它们都存储到存储块,这样可以避免在cpu资源少的情况继续申请cpu资源调度而造成cpu负荷过大,引发后续的录像合成问题。

步骤(2)、选择需要合成的时间去合成录像

计算并选择闲置cpu,开始录像文件的合成;

步骤(3)、音视频编解码处理

选择音视频流a作为音视频合成参考基础,音频流a和音频流b作混音,提取视频流a的分辨率对视频流b缩放成视频流a的参数,即相同的分辨率、码率、帧率;在音频流a处于声音状态时,使用视频a画面,在音频流b处于声音状态时,使用视频b画面,检测到静音或者音频流a和音频流b都处于声音状态则使用参考基础视频a画面,接着进行同步处理,计算并调整时间戳,保证音视频同步,最终合入到录像文件。

作为优选,上述步骤(1)中音视频按照如下具体流程进行缓冲存储处理:

(1.1)、存储块预先创建,定义每个存储块大小256m,根据实际需求决定创建个数,每个存储块有各自的编号;

(1.2)、划分存储块用途,例如音视频a的存储块从编号1a~100a,音视频b的存储块从1b~100b,重复利用存储块;

(1.3)、把音视频封装数据放入到存储块中,音视频数据根据不同的标识符号区分,如音频标识符$a,视频标识符$v;

(1.3.1)、优先视频帧数据先存入存储块,同时视频的sps,pps和i帧最先存储,然后将有音频数据接着存储进去,防止合成的录像出现有声音没视频的情况;

(1.3.2)、音频流提取每个rtp包的时间戳,并将每个音频rtp包按照“4字节包长+4字节时间戳描述+包体”的封包格式放入存储块中;其中,包体指的完整的rtp包;4字节包长+4字节时间戳描述+包体,这个是私有定制的封包格式;

(1.3.3)、视频流需拆分rtp包,组装完整的帧数据,记录每一帧的时间戳,将美帧数据按照“4字节包长+4字节时间戳描述+包体”的封包格式放入到存储块中;其中:包体是从rtp包提取纯h264数据放入;

即视频的包体是从rtp包提取纯h264数据放入,音频的包体是完整的rtp包。

作为优选,上述步骤(2)中cpu性能计算,具体按照如下流程:

(2.1)、cpu性能一般包含3点:运行队列、cpu使用率和上下文切换;

(2.2)、对于每一个cpu来说运行队列最好不要超过3,例如,如果是双核cpu就不要超过6;如果队列长期保持在3以上,说明任何一个进程运行时都不能马上得到cpu的响应,这时可能需要考虑升级cpu。另外满负荷运行cpu的使用率最好是user空间保持在65%~70%,system空间保持在30%,空闲保持在0%~5%;

(2.3)、通过top命令查看总体的系统运行状态和cpu使用率,sar查看进程队列长度和平均负载状态以及进程创建的平均值和上下文切换的次数;

(2.4)、监控cpu占用率不超过50%的时候(即此时处于最佳的状态),启动录像文件的合成。

作为优选,上述步骤(3)中音视频参考基础选择策略具体如下:

(3.1)、计算音频流a和音频流b的能量值,选取能量总量更高的作为参考基础;如选择音频流a;

(3.2)、统计音频流a和音频流b的每一段声音的时间点和持续时长;

(3.3)、解码音频流a和音频流b,作加法,进行混音;如音频编码为g.711的alaw和ulaw,解码为pcm,进行加法混音;

(3.4)、以视频流a做参考,分析分辨率,对视频流b重新解码通过处理yuv做缩放后重新编码,最终和视频流a保持一致的分辨率;

(3.5)、音视频合成,按照时间轴,计算到音频流a处于声音状态,选取相应时间点视频流a的i帧和后续帧组合入录像文件,若计算到音频流b处于声音状态,选取相应时间点视频流b的i帧和后续帧组合入录像文件,若计算到静音状态或音频流a和音频流b都处于声音状态,选取相应时间点参考基础视频流a的i帧和后续帧组合入录像文件。

作为优选,上述步骤(3)中同步处理的具体方法如下:

(4.1)、令基础时间戳=第一帧的时间戳;

(4.2)、对于音频时间戳的计算处理,音频的相对时间戳ta=(每一帧的时间戳-基础时间戳)÷(8000÷1000);

(4.3)、对于视频时间戳的计算处理,视频的相对时间戳tv=(每一帧的时间戳-基础时间戳)÷(90000÷1000);

(4.4)、考虑发包不稳定(即音视频设备发包过慢)的情况,计算音视频前后帧的时间戳偏差公式:(后一帧时间戳-前一帧的时间戳)÷(8000÷1000),这个时间戳的偏差如果大于1000(1秒),意味着发包过慢,则需要对基础时间戳调整,公式为调整基础时间戳=基础时间戳+后一帧时间戳-前一帧的时间戳,进而调整到音视频的相对时间戳ta和tv,控制音视频同步;

(4.5)、收到rtp的相邻音视频的相对时间戳(ta、tv)差值控制在在1000(1秒)以内,音视频即达到同步。

名称解释

混音:将多路音频流混成一路音频;

分辨率:单位英寸中所包含的像素点数;

cpu:中央处理器,是一块超大规模的集成电路,是一台计算机的运算核心(core)和控制核心(controlunit);

yuv:被欧洲电视系统所采用的一种颜色编码方法(属于pal),是pal和secam模拟彩色电视制式采用的颜色空间;

sps:sequenceparamaterset,又称作序列参数集,保存了一组编码视频序列(codedvideosequence)的全局参数;

pps:pictureparamaterset,图像参数集,在封装格式中,pps通常与sps一起,保存在视频文件的文件头中;

i帧(iframe):又称为内部画面(intrapicture),i帧通常是每个gop(mpeg所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图像;

rtp(real-timetransportprotocol):实时传输协议,是一个网络传输协议,它是由ietf的多媒体传输工作小组1996年在rfc1889中公布的,后在rfc3550中进行更新;

rtp包:定义rtp传输的封包格式;

时间戳:一个能表示一份数据在某个特定时间之前已经存在的、完整的、可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间。

与现有技术相比,本发明的有益效果是:

1.相比较直接生成录像文件方式,本发明技术方案,增加存储块的使用,临时保存音视频数据,利于在需要的时刻生成录像。

2.存储块的使用,可以选择在cpu空闲的时候,开始录像文件的生成的工作,这样合理分配cpu的使用,不影响需要cpu资源的其他任务。

3.相比较视频混屏方式,本发明技术方案,基于能量值高的音频数据做基础参考路,能量值高的意味着声音占用的时间更长,解码和编码另一路对应的有声音时间的视频数据会更少,所以使用的cpu资源会少并且合成录像更快。

4.本发明技术方案的录像呈现效果比较新颖,显示有声音的画面,类似于语音跟随。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为现有双方通话录像生成方式的结构示意图;

图2为本发明中一种基于音视频分流存储的录像生成方法的结构示意图;

图中数字标注:存储块(1),闲置cpu(2),音视频编解码处理(3),同步处理(4),录像文件(5)。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图2所示:本发明提供一种基于音视频分流存储的录像生成方法的具体实施例,包括如下步骤:

步骤(1)、将音视频进行缓冲存储处理

在接收到音频流a和视频流a以及音频流b和视频流b,做缓存处理,将它们都存储到存储块(1),这样可以避免在cpu资源少的情况继续申请cpu资源调度而造成cpu负荷过大,引发后续的录像合成问题。

步骤(2)、选择需要合成的时间去合成录像

计算并选择闲置cpu(2),开始录像文件的合成;

步骤(3)、音视频编解码处理(3)

选择音视频流a作为音视频合成参考基础,音频流a和音频流b作混音,提取视频流a的分辨率对视频流b缩放成视频流a的参数,即相同的分辨率、码率、帧率;在音频流a处于声音状态时,使用视频a画面,在音频流b处于声音状态时,使用视频b画面,检测到静音或者音频流a和音频流b都处于声音状态则使用参考基础视频a画面,接着进行同步处理(4),计算并调整时间戳,保证音视频同步,最终合入到录像文件(5)。

上述步骤(1)中音视频按照如下具体流程进行缓冲存储处理:

(1.1)、存储块(1)预先创建,定义每个存储块大小256m,根据实际需求决定创建个数,每个存储块有各自的编号;

(1.2)、划分存储块(1)用途,例如音视频a的存储块从编号1a~100a,音视频b的存储块从1b~100b,重复利用存储块(1);

(1.3)、把音视频封装数据放入到存储块(1)中,音视频数据根据不同的标识符号区分,如音频标识符$a,视频标识符$v;

(1.3.1)、优先视频帧数据先存入存储块(1),同时视频的sps,pps和i帧最先存储,然后将有音频数据接着存储进去,防止合成的录像出现有声音没视频的情况;

(1.3.2)、音频流提取每个rtp包的时间戳,并将每个音频rtp包按照“4字节包长+4字节时间戳描述+包体”的封包格式放入存储块(1)中;其中,包体指的完整的rtp包;4字节包长+4字节时间戳描述+包体,这个是私有定制的封包格式;

(1.3.3)、视频流需拆分rtp包,组装完整的帧数据,记录每一帧的时间戳,将美帧数据按照“4字节包长+4字节时间戳描述+包体”的封包格式放入到存储块(1)中;其中:包体是从rtp包提取纯h264数据放入;

即视频的包体是从rtp包提取纯h264数据放入,音频的包体是完整的rtp包。

上述步骤(2)中cpu性能计算,具体按照如下流程:

(2.1)、cpu性能一般包含3点:运行队列、cpu使用率和上下文切换;

(2.2)、对于每一个cpu来说运行队列最好不要超过3,例如,如果是双核cpu就不要超过6;如果队列长期保持在3以上,说明任何一个进程运行时都不能马上得到cpu的响应,这时可能需要考虑升级cpu。另外满负荷运行cpu的使用率最好是user空间保持在65%~70%,system空间保持在30%,空闲保持在0%~5%;

(2.3)、通过top命令查看总体的系统运行状态和cpu使用率,sar查看进程队列长度和平均负载状态以及进程创建的平均值和上下文切换的次数;

(2.4)、监控cpu占用率不超过50%的时候(即此时处于最佳的状态),启动录像文件的合成。

上述步骤(3)中音视频参考基础选择策略具体如下:

(3.1)、计算音频流a和音频流b的能量值,选取能量总量更高的作为参考基础;如选择音频流a;

(3.2)、统计音频流a和音频流b的每一段声音的时间点和持续时长;

(3.3)、解码音频流a和音频流b,作加法,进行混音;如音频编码为g.711的alaw和ulaw,解码为pcm,进行加法混音;

(3.4)、以视频流a做参考,分析分辨率,对视频流b重新解码通过处理yuv做缩放后重新编码,最终和视频流a保持一致的分辨率;

(3.5)、音视频合成,按照时间轴,计算到音频流a处于声音状态,选取相应时间点视频流a的i帧和后续帧组合入录像文件,若计算到音频流b处于声音状态,选取相应时间点视频流b的i帧和后续帧组合入录像文件,若计算到静音状态或音频流a和音频流b都处于声音状态,选取相应时间点参考基础视频流a的i帧和后续帧组合入录像文件。

上述步骤(3)中同步处理(4)的具体方法如下:

(4.1)、令基础时间戳=第一帧的时间戳;

(4.2)、对于音频时间戳的计算处理,音频的相对时间戳ta=(每一帧的时间戳-基础时间戳)÷(8000÷1000);

(4.3)、对于视频时间戳的计算处理,视频的相对时间戳tv=(每一帧的时间戳-基础时间戳)÷(90000÷1000);

(4.4)、考虑发包不稳定(即音视频设备发包过慢)的情况,计算音视频前后帧的时间戳偏差公式:(后一帧时间戳-前一帧的时间戳)÷(8000÷1000),这个时间戳的偏差如果大于1000(1秒),意味着发包过慢,则需要对基础时间戳调整,公式为调整基础时间戳=基础时间戳+后一帧时间戳-前一帧的时间戳,进而调整到音视频的相对时间戳ta和tv,控制音视频同步;

(4.5)、收到rtp的相邻音视频的相对时间戳(ta、tv)差值控制在在1000(1秒)以内,音视频即达到同步。

本发明的有益效果是:

1.相比较直接生成录像文件方式,本发明技术方案,增加存储块的使用,临时保存音视频数据,利于在需要的时刻生成录像。

2.存储块的使用,可以选择在cpu空闲的时候,开始录像文件的生成的工作,这样合理分配cpu的使用,不影响需要cpu资源的其他任务。

3.相比较视频混屏方式,本发明技术方案,基于能量值高的音频数据做基础参考路,能量值高的意味着声音占用的时间更长,解码和编码另一路对应的有声音时间的视频数据会更少,所以使用的cpu资源会少并且合成录像更快。

4.本发明技术方案的录像呈现效果比较新颖,显示有声音的画面,类似于语音跟随。

还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1