具体实施方式
如图1所示,是本发明视频截图系统的应用环境示意图。该视频截图系统22运行于客户端2中,用于在服务器1中的多媒体流系统所提供的视频串流服务的视频中截取高质量的画面。所述服务器1包括串流编码器10。所述视频串流服务可以基于流媒体协议(如实时串流协议,Real Time Streaming Protocol,RTSP)来实现。所述客户端2还包括串流解码器20、存储器21及处理器23。所述服务器1通过网络3与客户端2通信,网络3可以是有线或无线计算机网络。
所谓的串流是指经由视频压缩编码的视频资料11在服务器1进行分段后,经过网络3传送给客户端2,以供实时观赏的一种技术。当用户在收看视频资料11所对应的视频时,客户端2会分段下载视频资料11,而不需要事先一次性地下载整个视频资料11。
所述串流编码器10根据视频压缩标准将现场影音数据(如摄影机采集的实时视频数据)或预存于服务器上1的视频文件(如MPEG-2文件)加以编码而产生所述视频资料11。在本实施例中,串流编码器10根据高效视频编码(High efficiency video coding,HEVC)标准产生所述视频资料11。服务器1提供的视频串流服务可根据视频资料11产生对应于客户端2的比特流(bitstream),并将该比特流传送给客户端2。不同客户端各有相应的比特流。所述串流编码器10根据所述视频资料11产生的比特流包含一个基础层(base layer)及N个增强层(enhancement layer),可支持例如可适性视频编码(Scalable Video Coding,SVC)的机制。
所述基础层包含视频资料11中基本的视频内容,具有较低的帧率、分辨率或画质。每个基础层中包括若干个帧。基础层会被优先传输,使得在网络环境不好的情况下,客户端2也能正常收到基础层,但基础层解码后所得到的视频的帧率、分辨率或画质都不高。
所述增强层是根据基础层而编码的,用于提供基础层中所没有的其它视频内容,用以提高视频的帧率、分辨率或画质。每个增强层中包括若干个帧。增强层的层数取决于视频资料11本身的帧率、分辨率、画质等参数,N个所述增强层中的N为服务器1中的多媒体流系统根据视频资料11产生的比特流(可能对应不同客户端)中能够包含的最大的增强层层数,该参数N记为最大层数,按照增强层与基础层及不同增强层间的相关性分别编号为第一增强层、第二增强层...及第N增强层。在可适性视频编码机制中,增强层间的相关性体现为不同增强层间的相依性,较高的增强层相依于较低的增强层。增强层的层数取决于视频资料11本身的帧率、分辨率、画质等参数。
每个增强层对应着客户端2上可选择的一个视频截图规格(如分辨率或画质)。增强层的层数越高,所对应的视频截图规格越高,从视频中所截的视频截图画面质量就越好。
客户端2所接收到的比特流中的最大增强层层数除了取决于视频资料11的参数之外,还与网络环境的状况(如带宽、拥塞程度)及客户端2的配置(如屏幕分辨率)有关,把客户端2接收到的比特流中的最大增强层层数记为第二层数,所述第二层数可能等于或小于最大层数N。当网络环境越好、客户端2的配置越高,则客户端2收到的第二层数相对地越高,从解码出的视频中所截的视频截图画面质量就越好。
服务器1产生的比特流通过网络3中建立的通道(channel)传输至客户端2。在本实施例中,所述通道包括第一通道及第二通道。所述第一通道可通过用户数据报协议(UserDatagram Protocol,UDP)来实现,所述UDP为一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,具有较高的传输速度。然而在网络不好的情况下,所述用户数据报协议可能使部分数据丢失而导致视频画面质量不佳。所述第二通道可通过较可靠的网络协议来实现,所述较可靠的网络协议包括传输控制协议(Transmission Control Protocol,TCP)。所述传输控制协议是一种面向连接的、可靠的、基于字节流的运输层(TransportLayer)通信协议。
所述串流解码器20根据视频压缩标准对比特流进行解码,产生视频原始数据(rawdata)并存入存储器21中供客户端2的显示设备据以显示视频。当显示设备显示该视频时,可提供用户抓取该视频的截图的功能,具体方法将在后续详述。在本实施例中,所述串流解码器20根据高效视频编码标准对比特流进行解码。
所述客户端2可以是电脑、电视机、手机、平板电脑等电子装置。所述存储器21包括内存、硬盘等计算机可读取的存储媒体。
在本实施例中,所述视频截图系统22可以被分割成一个或多个模块,所述一个或多个模块被存储在所述存储器21中并被配置成由一个或多个处理器(本实施例为一个处理器23)执行,以完成本发明。例如,参阅图2所示,所述视频截图系统22被分割成接收模块220、读取模块221、获取模块222、判断模块223、请求获取模块224及生成截图模块225。本发明所称的模块是完成一特定功能的程序段。
如图3所示,是本发明视频截图方法的较佳实施例的流程图。根据不同的需求,该流程图中步骤的顺序可以改变,某些步骤可以省略。
步骤S11,接收模块220接收服务器1通过网络3的第一通道传送的对应客户端2的比特流及该比特流的比特流参数,同时串流解码器20对所接收的比特流及比特流参数进行解码,并将经解码产生的数据保存至客户端2的存储器21上。该比特流参数的传送须先于该比特流,使接收模块220可根据该比特流参数对该比特流进行解码。在本实施例中,该比特流参数为高效率视频编码标准中的视频参数集(video parameter set)。该比特流参数通过用于传送比特流的第一通道进行带内(in-band)传送。在其它实施例中,比特流参数可通过其它通道进行带外(out-of-band)传送,例如利用以较可靠的网络协议实现的通道来传送。因此,所述比特流参数可通过所述第二通道从服务器1获取。
所述比特流及比特流参数是串流编码器10根据视频资料11编码而产生的。所述比特流参数包括增强层间的相依性、增强层的最大层数N(即为所述比特流的最大增强层层数)、视频画面的大小、最大编码单元LCU的大小等。所述比特流及比特流参数通过封包的形式传送,所述封包是利用通道所对应的通信协议把比特流及比特流参数进行转换得到的。所述封包可能包含一个或者多个增强层,在本实施例中,所述封包可包括例如网络抽象层(network abstraction layer,NAL)单元的IP封包。所述NAL单元还可以包括该封包中所包含的增强层的编号。增强层编号可储存于例如网络抽象层单元中预留的nuh_reserved_zero_6bits参数。
步骤S12,读取模块221从服务器1获取所述最大层数N,即服务器1中的多媒体流系统根据视频资料11产生的比特流(可能对应不同客户端)中可能包含的最大的增强层层数。在本实施例中,所述最大层数N通过所述第二通道从服务器1获取,例如从所述视频资料11的元数据(metadata)中取得。
步骤S13,获取模块222根据客户端2所接收的比特流参数获取第二层数。由于第二层数与网络环境状况及客户端2的配置有关,因此可能小于最大层数N。在本实施例中,所述第二层数可储存于例如所述比特流所对应的该比特流参数中预留的vps_reserved_zero_6bits参数。
步骤S14,判断模块223根据最大层数N与所述第二层数决定产生对应视频资料11的视频截图所需的增强层,并判断是否需要从服务器1获取生成该视频截图所需的增强层。
在本实施例中,可使客户端2的显示设备根据最大层数N显示可供抓取的视频截图的规格,并根据用户在客户端2上选择的截图规格及所述第二层数决定产生该视频截图所需的增强层,把所需的增强层层数记为第三层数。在本实施例中,显示的截图规格包括对应最大层数N的最高规格及其它对应不同增强层的较低的规格。所述截图规格包括分辨率或画质等。所述截图规格可以按实际参数值呈现,如分辨率,也可按照等级的形式呈现,即把截图的画面质量依次分为高、中、低等几种等级的形式。在其它实施例中,可以使产生该视频截图所需的增强层对应于该最大层数,即把第三层数设置为最大层数N。
在本实施例中,判断模块223可判断第二层数是否等于第三层数。当第二层数不等于第三层数时,即客户端2所接收到的比特流没有包含产生该视频截图所需的所有增强层,执行步骤S15;当第二层数等于第三层数时,即客户端2所接收到的比特流包含所有产生该视频截图所需的增强层,执行步骤S16。
在其它实施例中,判断模块223还可判断存在客户端2的存储器21中的生成该视频截图所需的增强层是否完整。由于先前已取得的增强层有可能已从存储器21中移除,或在传输过程中有损失,因此判断模块223可判断客户端2所需的增强层是否没有缺漏。当存储器21中生成该视频截图所需的增强层完整时,代表生成该视频截图所需的增强层全部都存在存储器21中,执行步骤S16;当在存储器21中生成该视频截图所需的增强层不完整时,即生成该视频截图所需的增强层并未全部都存在存储器21中,执行步骤S15。
步骤S15,请求获取模块224根据增强层之间的相关性通过网络3请求服务器1以获取生成该视频截图所需的增强层。
在本实施例中,以第三层数是三、第二层数是一,最大层数是四为例,即客户端2的存储器中保存有第一增强层,根据第三层数可知,生成该视频截图所需要的最高增强层为第三增强层。但在可适性视频编码机制中,第三增强层与第二增强层有相依性,需要参考第二增强层。因此,需要向服务器1请求获取第二增强层及第三增强层。
在其它实施例中,若存在客户端的存储器21中的生成该视频截图所需的增强层不完整时,请求获取模块224可请求服务器1以获取所需的增强层中的帧,或重新获取整个增强层。除了获取客户端2未接收过的增强层外,还补足不完整的增强层。
该视频截图所需的增强层可通过所述第一通道从服务器1获取,但在网络情况不是很好时,所述第一通道所利用的用户数据报协议并不一定能保证该视频截图的质量。因此,该视频截图所需的增强层可通过所述第二通道从服务器1获取。
在该步骤S15中,请求获取模块224将获取的增强层或者所需增强层中的帧保存至客户端的存储器21中。
步骤S16,生成截图模块225使用客户端2的存储器21中该视频截图所对应的基础层及增强层来生成该视频截图。
通过本发明,所述视频截图系统及方法能使用户根据需求选择视频截图参数,在较差的网络环境条件下也能取得较高画面质量的截图,而且在传输过程中比特流有丢失或者客户端2已取得的比特流从客户端2的存储器21中有部分丢失时,也可重新从服务器上获取所需的视频,保证了截图的质量。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。