发明内容
本发明的主要目的在于提供一种视频的图像编码方法、终端设备以及存储介质,旨在解决编码器现补帧方式,在两帧之间需要补帧较多时,需要短时间内持续执行渲染操作,而在插帧操作未完成前有新的图像帧上报时,则有可能出现丢帧的现象的技术问题。
为实现上述目的,本发明提供一种视频的图像编码方法,所述视频的图像编码方法应用于第一终端,所述视频的图像编码方法包括以下步骤:
获取当前时间点,所述当前时间点为编码器时钟当前的时间点;
所述当前时间点与上一次渲染的图像的时间戳对应的时间点之间的时间间隔到达预设时间间隔时,判断是否接收到摄像头上传的图像;
若否,对预设图像进行渲染,以将所述预设图像发送至第二终端。
可选地,所述对预设图像进行渲染的步骤之后,还包括:
根据所述上一次渲染的图像的时间戳以及所述预设时间间隔更新所述预设图像的时间戳。
可选地,所述当前时间点与上一次渲染的图像的时间戳对应的时间点之间的时间间隔到达预设时间间隔时,判断是否接收到摄像头上传的图像的步骤之后,还包括:
若是,对接收到的所述图像进行渲染,以将所述图像发送至第二终端。
可选地,所述对接收到的所述图像进行渲染的步骤之后,还包括:
采用接收到的所述图像的时间戳更新所述预设图像的时间戳。
可选地,所述对所述图像进行渲染的步骤之后,还包括:
采用接收到的所述图像更新所述预设图像。
可选地,所述对接收到的所述图像进行渲染的步骤之后,还包括:
将渲染后的所述预设图像和所述图像按照时间顺序编码形成视频;
将所述视频发送至第二终端以在所述第二终端播放。
可选地,所述视频的图像编码方法还包括:
获取相机采集图像的帧频;
根据所述帧频确定所述预设时间间隔。
本发明还提供一种终端设备,所述终端设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的图像编码程序,所述图像编码程序被所述处理器执行时实现如上所述的视频的图像编码方法的各个步骤。
此外,本发明还提供一种存储介质,所述存储介质上存储有图像编码程序,所述图像编码程序被处理器执行时实现如上所述的视频的图像编码方法的各个步骤。
本发明实施例提出的一种视频的图像编码方法、终端设备和存储介质,通过在当前时间点与上一次渲染的图像的时间戳对应的时间点之间的时间间隔达到预设时间间隔时,若还未接收到摄像头上传的图像时,对预设图像进行渲染,以向编码器提前插帧,基于所述预设时间间隔是固定的时间间隔,且与相机采集图像的时间间隔相同,使得所述编码器的输入一直保持比较均匀,不会出现瞬间插帧过多负载过高而导致丢帧的现象,使得编码后的帧率稳定。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要解决方案是:获取当前时间点,所述当前时间点为编码器时钟当前的时间点;所述当前时间点与上一次渲染的图像的时间戳对应的时间点之间的时间间隔到达预设时间间隔时,判断是否接收到摄像头上传的图像,若否,对预设图像进行渲染,以将所述预设图像发送至第二终端。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的终端结构示意图。
本发明实施例终端可以是移动终端,如手机、平板电脑,或者所述终端还可以是其它具有拍摄视频功能的设备,如相机、摄影机等。
如图1所示,该终端可以包括:处理器1001,例如CPU,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括语音拾取模块,如麦克风阵列等,可选所述用户接口1003还可以是显示屏(Display)、输入单元比如键盘(Keyboard)等。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
可以理解的是,所述终端还可以包括网络接口1004,网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。可选地,终端还可以包括RF(RadioFrequency,射频)电路,传感器、音频电路、WiFi模块等等。
本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
进一步地,图像编码程序可以存储在存储器1005中,也可以存储在一种存储介质中,因此本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有所述图像编码程序,所述图像编码程序被处理器1001执行时实现如本发明所述的视频的图像编码方法的各个实施例。
作为一种计算机存储介质的存储器中可以包括操作系统、网络通信模块、用户接口模块以及图像编码程序。
在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用计算机可读存储介质中的存储器1005中存储的图像编码程序,并执行以下操作:
获取当前时间点,所述当前时间点为编码器时钟当前的时间点;
所述当前时间点与上一次渲染的图像的时间戳对应的时间点之间的时间间隔到达预设时间间隔时,判断是否接收到摄像头上传的图像;
若否,对预设图像进行渲染,以将所述预设图像发送至第二终端。
进一步地,处理器1001可以调用存储器1005中存储的图像编码程序,还执行以下操作:
根据所述上一次渲染的图像的时间戳以及所述预设时间间隔更新所述预设图像的时间戳。
进一步地,处理器1001可以调用存储器1005中存储的图像编码程序,还执行以下操作:
若是,对接收到的所述图像进行渲染,以将所述图像发送至第二终端。
进一步地,处理器1001可以调用存储器1005中存储的图像编码程序,还执行以下操作:
采用接收到的所述图像的时间戳更新所述预设图像的时间戳。
进一步地,处理器1001可以调节存储器1005中存储的图像编码器程序,还执行以下操作:
采用接收到的所述图像更新所述预设图像。
进一步地,处理器1001可以调节存储器1005中存储的图像编码器程序,还执行以下操作:
将渲染后的所述预设图像和所述图像按时间顺序编码形成视频;
将所述视频发送至第二终端以在所述第二终端播放。
进一步地,处理器1001可以调用存储器1005中存储的图像编码程序,还执行以下操作:
获取相机采集图像的帧频;
根据所述帧频确定所述预设时间间隔。
请参照图2,本发明提供一种视频的图像编码方法的一实施例,所述视频图像的图像编码方法应用于第一终端,所述第一终端为手机、平板、电脑、相机、摄像机等,具体包括以下步骤:
步骤S10,获取当前时间点,所述当前时间点为编码器时钟当前的时间点;
步骤S20,所述当前时间点与上一次渲染的图像的时间戳对应的时间点之间的时间间隔达到预设时间间隔时,判断是否接收到摄像头上传的图像;
步骤S30,若否,对预设图像进行渲染。
步骤S40,若是,对接收到的所述图像进行渲染,以将所述预设图像发送至第二终端。
本实施例中可以在第一终端直播过程中对视频的图像进行编码处理,也可以在第一终端拍摄视频过程中对视频的图像进行编码处理,本实施例以直播视频过程中的图像编码过程进行说明。直播过程中,视频帧的图像可以通过终端设备自带的摄像头获取,如手机上的摄像头,也可以通过与所述终端设备连接的摄像头获取,如网络摄像头等,摄像头采集的图像通过数据线传输到终端设备,所述终端设备的编码器对图像进行编码,形成视频,然后推送到第二终端,以在第二终端中播放。可以理解的是,这里说的第二终端指的是视频接收端,并不限于一个终端,可以接收并显示视频的终端都是所述第二终端。
在直播视频过程中,由于摄像头上传图像的帧频不稳定,需要进行补帧操作。确定两帧之间的时间差后再进行补帧的操作,容易在补帧过程中丢掉摄像头上传的图像,出现丢帧现象。基于此,本实施例设置编码器根据摄像头正常上传的帧频确定对应的时间步长,编码器的等待时长到达所述时间步长时,若未接收到摄像头上传的图像,则进行插帧操作,故本实施例是在编码过程中执行提前插帧,确定整个编码器的输入一直保持比较均匀,不会出现瞬间插帧过多负载过高而导致丢帧的现象。
其中,本实施例中的所述预设时间间隔即为所述时间步长,具体所述时间步长根据以下方式获得:获取相机采集图像的帧频;根据所述帧频确定所述预设时间间隔。由于不同视频的帧频可能不同,或者用户可以设置视频的帧频,因此每次直播视频之前,可以先根据当前直播视频的设置参数等确定帧频,然后根据帧频计算所述预设时间间隔。以帧频为30fps为例,所述预设时间间隔(时间步长)为1000/30fps,也即所述预设时间间隔为33.33ms。
为了满足编码过程中的输入一直保持比较均匀稳定,本实施例中编码器渲染完一张图像后,实时或定时获取时钟当前的时间点,进而判断当前时间点与上一次渲染的图像的时间戳对应的时间点之间的时间间隔是否达到预设时间间隔(也即预设的时间步长),若所述时间间隔到达所述预设时间间隔,且还未接收到摄像头上传的新图像,编码器进行插帧操作,实现在编码过程中缺一帧补一帧,避免累积过负载插帧的情况出现。具体地,若此时还未接收到摄像头上传新的图像,则对预设图像进行渲染,也即采用预设图像插帧,渲染后将所述预设图像推送给第二终端,确保推流和录制视频的帧频稳定。若接收到摄像头上传新的图像,则对新的所述图像进行渲染,将渲染后的所述预设图像推送给第二终端。
其中,所述时钟为编码器的时钟,编码器时钟与网络时钟的时间对应,所述预设图像可以是上一次渲染的图像;也可以是预设图源中的图像,或者是存储在固定位置的图像。为了防止视频中出现跳画面的情况,更优实施例中,设置所述预设图像为上一次渲染的图像。
进一步地,由于摄像头上传图像的帧率不稳定,故所述时间间隔是否到达预设时间间隔,通过当前时间点是否达到预设时间点来确定,具体需要通过上一次渲染的图像的时间戳对应的时间点与预设时间间隔来计算。例如上一次渲染的图像的时间戳加上所述预设时间间隔得到所述时间间隔,所述时间间隔等于所述预设时间间隔,说明当前时间点达到预设时间点。可以理解的是,上一次渲染的图像可以是预设图像,也可以是摄像头上传的新的图像。
基于上述可见,本实施例通过在当前时间点与上一次渲染的图像的时间戳对应的时间点之间的时间间隔达到预设时间间隔时,若还未接收到摄像头上传的图像时,对预设图像进行渲染,以向编码器提前插帧,基于所述预设时间间隔是固定的时间间隔,且与相机采集图像的时间间隔相同,使得所述编码器的输入一直保持比较均匀,不会出现瞬间插帧过多负载过高而导致丢帧的现象,使得编码后的帧率稳定。
请参照图3,基于上述实施例,本发明提供视频的图像编码方法的另一实施例,具体地,若未接收到摄像头上传的图像时,对预设图像进行渲染的步骤之后,还包括:
步骤S50,根据所述上一次渲染的图像的时间戳以及所述预设时间间隔更新所述预设图像的时间戳。
本实施例中,当前时间点未接收到摄像头上传的图像时,对预设图像进行渲染,以对编码器进行补帧。由于下一次渲染的时间点是通过上一次渲染的图像的时间戳以及预设时间间隔确定,因此当前帧插补后,为了便于确定下一帧的插帧时间,更新所述预设图像的时间戳,当前预设图像渲染结束后,基于所述预设图像的时间戳已更新,编码器时钟的时间点与更新后的预设图像的时间戳对应的时间点的时间间隔从零到预设时间间隔递增,直到增大到所述预设时间间隔时,继续渲染图像(通过预设图像进行插帧,或者渲染新的图像),实现编码器持续稳定的渲染编码。
具体地,通过所述上一次渲染的图像的时间戳以及所述预设时间间隔确定当前时间戳,然后采用所述当前时间戳更新所述预设图像的时间戳,如所述当前时间戳Ts=Ts1+Ps,所述Ts为当前时间戳,所述Ts1为前一次渲染的图像的时间戳,所述Ps为所述预设时间间隔,进而采用当前时间戳更新所述预设图像的时间戳,使得终端设备根据当前时间戳以及预设时间间隔来确定下一帧的接收时间,进而更新所述接收时间点,如此,终端设置继续直播视频的过程中,当前时间点到达所述接收时间点时,则执行步骤S30或S40的步骤,编码器则持续均匀对图像进行渲染编码。
可以理解的是,所述预设图像为上一次渲染的图像时,更新所述预设图像的时间戳,则为更新上一次渲染的图像的时间戳,也即采用当前时间戳更新上一次渲染的图像的时间戳。
本实施例基于当前渲染的图像为预设图像时,通过更新所述预设图像的时间戳,使得编码器每次都能够按照固定步长进行插帧,确保编码器的输入稳定,且不出现丢帧的情况。
在当前时间点与上一次渲染的图像的时间戳对应的时间点之间的时间间隔到达预设时间间隔,且接收到摄像头上传的图像时,对接收到的图像进行渲染,基于本次接收到的所述图像对应的时间戳为相机采集图像时的时间戳,编码器再确定下一帧的插帧时间时,可以通过接收到的所述图像的时间戳确定,例如,所述图像渲染结束后,继续获取编码器的当前时间点,所述当前时间前与所述图像(此时,所述图像为上次一渲染的图像)的时间戳对应的时间点之间的时间间隔为预设时间间隔时,判断是否接收相机新上传的图像,以确定采用新上传的图像渲染,或者采用预设图像进行渲染。
所述图像的时间戳为摄像头拍摄图像时记录在所述图像上的时间参数,由于所述摄像头拍摄图像的频率是固定的,与所述预设时间间隔相同,所述摄像头上传图像的过程中,帧频是不稳定的,因此图像可能存在延时发送,本实施例中以所述图像的时间戳为基准,加上预设时间间隔计算下一帧的时间戳,进而确定下一帧的插帧时间,使得下一帧的插帧时间与所述摄像头的拍摄时间对应,确保帧频稳定的情况下,能够稳定的将图像输入到编码器上。
基于此,请参照图4,本发明提供视频的图像编码方法的又一实施例,具体地,所述对接收到的所述图像进行渲染的步骤之后,还包括:
步骤S60,采用接收到的所述图像的时间戳更新所述预设图像的时间戳。
由于插帧时间点是通过上一次渲染的图像的时间戳与预设时间间隔确定的,也即下一次插帧的时间点是通过当前渲染的图像的时间戳与预设时间间隔确定的,因此若预设图像不是上一次渲染的图像时(如所述预设图像为固定的图像时),需要保证预设图像始终与当前渲染的图像的时间戳一致,避免下次对所述预设图像进行渲染后,采用预设图像的时间戳以及预设时间间隔确定的插帧时间不准确,导致编码出错。
本实施例中,可以避免所述预设图像的时间戳为初始时间戳,以初始时间戳以及预设时间间隔计算的接收时间点不准确,无法进行下一次补帧操作,因此,每次对摄像头上传的图像进行渲染后,都采用所述图像的时间戳更新所述预设图像的时间戳。
再进一步实施例中,所述对所述图像进行渲染的步骤之后,还可以包括:
采用接收到的所述图像更新所述预设图像。
为了使得采用预设图像插帧过程中,视频的画面显示差异较小,在对所述图像进行渲染后,采用所述图像更新所述预设图像,如此,若时间点到达所述接收时间点,且未接收到摄像头上传的图像时,对采用所述图像更新后的所述预设图像进行渲染,使得画面显示差异小,防止画面跳动。
可以理解的是,本发明还提供视频的图像编码方法的再一实施例,本实施例基于上述所有实施例,在直播视频开始前,初始化所述图像编码程序,也即在所述获取当前时间点的步骤之后,所述视频的图像编码方法还包括:
获取到摄像头上传的第一帧图像时,采用所述第一帧图像作为所述预设图像;
对所述第一帧图像进行编码;
基于所述第一帧图像的时间戳以及预设时间间隔计算所述接收时间点。
本实施例的图像编码过程中,基于所述第一帧图像作为预设图像进行插帧编码,使得插帧过程中,画面显示差异较小。
需要说明的是,在第一终端拍摄视频过程中对视频的图像进行编码处理的实施例中,或者在直播结束后,对视频的图像进行编码处理的实施例中,基于上述实施例,对所述图像进行渲染的步骤之后,还包括:
将渲染后的所述预设图像和所述图像按时间顺序编码形成视频;
将所述视频发送至第二终端以在所述第二终端播放。
编码器在当前时间点满足与上一次渲染的图像的时间戳对应的时间点之间的时间间隔达到预设时间间隔时,对预设图像或摄像头上传的所述图像进行渲染后,将渲染后的所述预设图像和所述图像按照时间顺序编码形成视频,以将所述视频发送至第二终端,如此,第二终端可播放所述视频。
本发明还提供一种终端设备,所述终端设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的图像编码程序,所述图像编码程序被所述处理器执行时实现如上所述的视频的图像编码方法的各个步骤。
此外,本发明还提供一种存储介质,所述存储介质上存储有图像编码程序,所述图像编码程序被处理器执行时实现如上所述的视频的图像编码方法的各个步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。