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

技术编号:19638806 阅读:46 留言:0更新日期:2018-12-01 19:01
本发明专利技术公开了一种基于音视频分流存储的录像生成方法,包括如下步骤:步骤1、在接收到音频流A和视频流A以及音频流B和视频流B,做缓存处理;步骤2、选择需要合成的时间去合成录像;步骤3、选择音视频流A作为音视频合成参考基础,音频流A和音频流B作混音,提取视频流A的分辨率对视频流B缩放成视频流A的参数;在音频流A处于声音状态时,使用视频A画面,在音频流B处于声音状态时,使用视频B画面,检测到静音或者音频流A和音频流B都处于声音状态则使用参考基础视频A画面,接着进行同步处理,计算并调整时间戳,保证音视频同步,最终合入到录像文件。本发明专利技术技术方案的录像呈现效果比较新颖,显示有声音的画面,类似于语音跟随。

【技术实现步骤摘要】
一种基于音视频分流存储的录像生成方法
本专利技术涉及计算机信息数据处理
,具体涉及一种基于音视频分流存储的录像生成方法。
技术介绍
现有双方通话录像生成方式:如图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.相比较直接生成录像文件方式,本专利技术本文档来自技高网...

【技术保护点】
1.一种基于音视频分流存储的录像生成方法,其特征在于,包括如下步骤:步骤(1)、将音视频进行缓冲存储处理在接收到音频流A和视频流A以及音频流B和视频流B,做缓存处理,将它们都存储到存储块(1);步骤(2)、选择需要合成的时间去合成录像计算并选择闲置CPU(2),开始录像文件的合成;步骤(3)、音视频编解码处理(3)选择音视频流A作为音视频合成参考基础,音频流A和音频流B作混音,提取视频流A的分辨率对视频流B缩放成视频流A的参数,即相同的分辨率、码率、帧率;在音频流A处于声音状态时,使用视频A画面,在音频流B处于声音状态时,使用视频B画面,检测到静音或者音频流A和音频流B都处于声音状态则使用参考基础视频A画面,接着进行同步处理(4),计算并调整时间戳,保证音视频同步,最终合入到录像文件(5)。

【技术特征摘要】
1.一种基于音视频分流存储的录像生成方法,其特征在于,包括如下步骤:步骤(1)、将音视频进行缓冲存储处理在接收到音频流A和视频流A以及音频流B和视频流B,做缓存处理,将它们都存储到存储块(1);步骤(2)、选择需要合成的时间去合成录像计算并选择闲置CPU(2),开始录像文件的合成;步骤(3)、音视频编解码处理(3)选择音视频流A作为音视频合成参考基础,音频流A和音频流B作混音,提取视频流A的分辨率对视频流B缩放成视频流A的参数,即相同的分辨率、码率、帧率;在音频流A处于声音状态时,使用视频A画面,在音频流B处于声音状态时,使用视频B画面,检测到静音或者音频流A和音频流B都处于声音状态则使用参考基础视频A画面,接着进行同步处理(4),计算并调整时间戳,保证音视频同步,最终合入到录像文件(5)。2.根据权利要求1中所述的一种基于音视频分流存储的录像生成方法,其特征在于,步骤(1)中音视频按照如下具体流程进行缓冲存储处理:(1.1)、存储块(1)预先创建,定义每个存储块大小256M,根据实际需求决定创建个数,每个存储块有各自的编号;(1.2)、划分存储块(1)用途,并重复利用存储块(1);(1.3)、把音视频封装数据放入到存储块(1)中,音视频数据根据不同的标识符号区分;(1.3.1)、优先视频帧数据先存入存储块(1),同时视频的SPS,PPS和I帧最先存储,然后将有音频数据接着存储进去,防止合成的录像出现有声音没视频的情况;(1.3.2)、音频流提取每个RTP包的时间戳,并将每个音频RTP包按照“4字节包长+4字节时间戳描述+包体”的封包格式放入存储块(1)中;其中,包体指的完整的RTP包;(1.3.3)、视频流需拆分RTP包,组装完整的帧数据,记录每一帧的时间戳,将美帧数据按照“4字节包长+4字节时间戳描述+包体”的封包格式放入到存储块(1)中;其中:包体是从RTP包提取纯H264数据放入。3.根据权利要求1中所述的一种基于音视频分流存储的录像生成方法,其特征在于,步骤(2)中CPU性能计算,具体按照如下流程:(2.1)、CPU性能一般包含3点:运行队列、CPU使用率和上下文切换;(2.2)、对于每一个CPU来说运行队列最好不要超过3,如果是双核CPU就不要超过6;如果队列长期保持在3以上,说明任何一个进程运行时都不能马上得到cpu的响应,...

【专利技术属性】
技术研发人员:吴宣辉胡松涛卢锡芹
申请(专利权)人:杭州叙简科技股份有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1