视频转码系统、视频转码方法、电子设备和存储介质与流程

文档序号:24785118发布日期:2021-04-23 10:00阅读:119来源:国知局
视频转码系统、视频转码方法、电子设备和存储介质与流程

1.本发明实施例涉及视频处理技术领域,尤其涉及一种视频转码系统、视频转码方法、电子设备和存储介质。


背景技术:

2.数字视频转码技术是指将视频数据从一种视频格式转换为另一种视频格式的技术,使得转码后的视频数据适应不同的网络带宽、不同的终端处理能力和不同的用户需求。
3.如图1,视频转码主要包括解封装、解码、图像前处理、编码和封装。转码后视频的封装格式(例如mp4、mov)、裸流的编码格式(例如h264、hevc、aac)、视频的码率、分辨率、帧率,音频的声道数、采样率等参数都会发生改变。为了适应不同的带宽和终端机型,视频转码可能会转为多路视频,此外,根据不同的业务需求,转码过程中可能还包括对视频内容的理解、视频质量的评估和视频画面的美化等一系列复杂的前处理操作。
4.软件转码相对于硬件转码具有更高的编码效率,在同等视频质量下码流的体积更小,能够节省分发环节的带宽成本以及提高用户观看体验,因此软件编码得到广泛应用。随着业务需求的复杂化,视频前处理算法也越来越多,如前处理大部分都是基于深度学习的算法,非常依赖于gpu做并行计算,依赖gpu存在以下问题:
5.(1)数据流频繁地在内存和显存之间传输,造成整个转码系统效率低;
6.(2)前处理耦合在转码环节内,对自适应编码参数预测算法造成影响;
7.(3)前处理依赖gpu机器资源成本高且数量有限,转码业务规模庞大,整个转码过程需要全部部署在gpu机器资源成本高的机器上。


技术实现要素:

8.本发明实施例提供一种视频转码系统、视频转码方法、电子设备和存储介质,以解决软件视频解码效率低、视频前处理影响编码参数预测以及成本高的问题。
9.第一方面,本发明实施例提供了一种视频转码系统,包括前处理集群、管理服务器和转码集群;
10.所述前处理集群用于获取原始视频数据以及对所述原始视频数据进行前处理得到前处理后的视频数据;
11.所述管理服务器用于控制所述前处理集群将所述前处理后的视频数据发送到所述转码集群;
12.所述转码集群用于接收所述前处理后的视频数据,并对所述前处理后的视频数据进行转码得到目标视频数据,以及将所述目标视频数据通过内容分发网络发送到客户端。
13.第二方面,本发明实施例提供了一种视频转码方法,应用于包括前处理集群、管理服务器和转码集群的视频转码系统,所述视频转码方法包括:
14.所述前处理集群获取原始视频数据以及对所述原始视频数据进行前处理得到前处理后的视频数据;
15.所述管理服务器控制所述前处理集群将所述前处理后的视频数据发送到所述转码集群;
16.所述转码集群对所述前处理后的视频数据进行转码得到目标视频数据,并将所述目标视频数据通过内容分发网络发送到客户端。
17.第三方面,本发明实施例提供了一种电子设备,所述电子设备包括:
18.一个或多个处理器;
19.存储装置,用于存储一个或多个程序,
20.当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明所述的视频转码方法。
21.第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明所述的视频转码方法。
22.本发明实施例的视频转码系统包括前处理集群、管理服务器和转码集群,前处理集群用于获取原始视频数据以及对原始视频数据进行前处理得到前处理后的视频数据,管理服务器用于控制前处理集群将前处理后的视频数据发送到转码集群,转码集群用于对前处理后的视频数据进行转码得到目标视频数据,并将目标视频数据通过内容分发网络发送到客户端。本发明实施例通过前处理集群对原始视频数据进行处理,以及通过转码集群来对前处理后的视频数据进行转码,实现了前处理和转码解耦,一方面,前处理集群可以采用gpu平台,前处理时数据流在显存传输,前处理集群和转码集群传输前处理后的视频数据,传输效率高,转码效率高,另一方面,前处理可以在gpu平台上实现,转码可以在cpu平台实现,无需整个转码过程依赖部署有gpu的平台上,系统硬件成本低,再一方面,解决了前处理需要大量资源影响编码参数预测的问题,转码过程在转码集群运行,不受前处理影响,保证了编码参数预测的准确性和速度。
附图说明
23.图1是现有技术中视频转码的流程图;
24.图2是本发明实施例一提供的一种视频转码系统的结构框图;
25.图3是本发明实施例二提供的一种视频转码系统的结构框图;
26.图4是本发明实施例中前处理集群处理视频数据的流程图;
27.图5是本发明实施例中转码集群转码的流程图;
28.图6是本发明实施例三提供的一种视频转码系统的步骤流程图;
29.图7是本发明实施例四提供的一种电子设备的结构示意图。
具体实施方式
30.下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互结合。
31.实施例一
32.图2为本发明实施例一提供的一种视频转码系统的结构框图,如图2所示,本发明
实施例的视频转码系统包括前处理集群10、转码集群20以及管理服务器30,管理服务器30分别与前处理集群10和转码集群20通信连接。
33.其中,前处理集群10用于获取原始视频数据以及对原始视频数据进行前处理得到前处理后的视频数据,管理服务器30用于控制前处理集群10将前处理后的视频数据发送到转码集群20,转码集群20用于接收前处理后的视频数据并对前处理后的视频数据进行转码得到目标视频数据,以及将目标视频数据通过内容分发网络发送到客户端。
34.其中,前处理集群10可以是部署有gpu平台的多台计算设备,转码集群20可以是部署有cpu平台的多台计算设备,前处理集群10可以从存储服务器获取用户上传的、待转码的原始视频数据,并对原始视频数据进行前处理,示例性地,前处理可以是对原始视频数据进行去噪、调整分辨率、增加水印、去除水印等图像美化处理,前处理还可以是视频内容理解、视频质量评估等操作。管理服务器30可以对整个视频转码系统的任务、资源、负载均衡等进行综合管理,管理服务器30在前处理集群10对原始视频数据前处理完成后,控制前处理集群10将前处理后的视频数据发送到转码集群20,例如控制前处理集群10将前处理后的视频数据发送到转码集群20中指定的计算设备上。转码集群20在接收到前处理的视频数据后,将该前处理后的视频数据转码为适用于不同网络带宽、不同终端、不同格式的多路目标视频数据,并将目标视频数据通过内容分发网络分发到客户端。
35.本发明实施例通过前处理集群对原始视频数据进行处理,以及通过转码集群来对前处理后的视频数据进行转码,实现了前处理和转码解耦,一方面,前处理集群可以采用gpu平台,前处理时数据流在显存传输,前处理集群和转码集群仅传输前处理后的视频数据,传输效率高,转码效率高,另一方面,前处理可以在gpu平台上实现,而转码可以在cpu平台实现,无需整个转码过程依赖部署有gpu的平台上,系统硬件成本低,再一方面,解决了前处理需要大量资源影响编码参数预测的问题,转码过程在转码集群运行,不受前处理影响,保证了编码参数预测的准确性和速度。
36.实施例二
37.图3为本发明实施例二的一种视频转码系统的结构框图,如图3所示,在实施例一的基础上,前处理集群10包括原始视频数据获取模块101、解码模块102、前处理模块103、编码模块104以及发送模块105。
38.其中,原始视频数据获取模块101用于从存储服务器获取客户端上传的原始视频数据,该原始视频数据可以是mp3、mp4、rm、rmvb、avi、wmv等格式的视频数据,在一个示例中,客户端响应用户对视频数据的转码操作,将原始视频数据以及转码需求发送到存储服务器,原始视频数据获取模块101可以从存储服务器获取原始视频数据以及用户的转码需求,转码需求可以是分辨率、码率、转码格式等。
39.解码模块102用于对原始视频数据进行解码得到解码后的第一视频数据,原始视频数据获取模块101获取到的原始视频数据为封装好的各种格式的视频数据,解码模块102可以对原始视频数据进行解码得到yuv/rgb数据流的解码后的第一视频数据,使得前处理模块103可以对yuv/rgb数据流的解码后的第一视频数据进行前处理。
40.前处理模块103用于对解码后的第一视频数据进行前处理得到前处理后的视频数据,其中,前处理可以包括去噪、调整分辨率、增加水印、去除水印、调整颜色等图像处理,当然还可以包括其他前处理,本发明实施例对前处理不加以限制。
41.编码模块104用于对前处理后的视频数据进行编码得到前处理后的编码视频数据,由于前处理是在解码后的yuv/rgb数据层上操作的,yuv/rgb数据量非常巨大,为了便于将前处理后的视频数据发送到转码集群20,可以对前处理后的视频数据进行编码,得到前处理后的编码视频数据,使得视频数据得到压缩,降低传输到转码集群20的数据量,节省了网络带宽和缩短传输时间,可以提高转码效率。
42.在本发明的一个示例中,前处理模块103可以包括前处理任务获取子模块、前处理子模块以及前处理进度判断子模块。
43.其中,前处理任务获取子模块用于获取至少一个前处理任务,前处理子模块用于按照前处理任务依次对解码后的第一视频数据进行前处理,前处理进度判断子模块用于判断是否对解码后的第一视频数据执行完所有的前处理任务,若是,执行编码模块对前处理后的视频数据进行编码,若否,返回前处理子模块继续执行下一个前处理任务,前处理流程具体如图4所示,具体流程为:
44.s1、原始视频数据获取模块获取原始视频数据;
45.s2、解码模块对原始视频数据解码获得解码后的视频数据;
46.s3、前处理任务获取子模块获取n个前处理任务;
47.s4、前处理子模块按照前处理任务i依次对解码后的第一视频数据进行前处理;
48.s5、前处理进度判断子模块判断i是否小于n,若是,执行s6,若否,执行s7;
49.s6、i=i+1;
50.s7、对前处理后的视频数据编码得到前处理后的编码视频数据。
51.在实际应用中,对一个原始视频数据的前处理任务可以预先设置在前处理集群10中,前处理集群10获取到原始视频数据后经解码得到解码后的yuv/rgb数据流的视频数据,前处理模块103依次一个个地执行前处理任务对视频数据进行前处理,直到执行完所有前处理任务后得到前处理后的视频数据,编码模块104对前处理后的视频数据进行编码得到前处理后的编码视频数据。
52.当前处理集群10对原始视频数据前处理完成并且编码后,发送模块105可以向管理服务器30发送前处理完成消息,管理服务器30接收到该前处理完成消息后可以控制前处理集群10将前处理后的视频数据发送到转码集群20。
53.在一个可选实施例中,管理服务器30可以包括消息接收模块和消息发送模块,其中,消息接收模块用于接收前处理集群10发送的前处理完成消息,消息发送模块用于生成视频数据发送消息并发送到前处理集群10,前处理集群10还包括接收模块,该接收模块用于接收管理服务器30发送的视频数据发送消息,前处理集群10的发送模块105还用于在接收到视频数据发送消息时,将前处理后的视频数据发送到转码集群。
54.示例性地,管理服务器30在接收到前处理集群10发送的前处理完成消息后,可以获取转码集群20中各个计算设备的负载状态,选择负载较低的计算设备作为转码设备,或者,管理服务器30根据转码需求(转码格式)从转码集群20中选择相应的计算设备作为转码设备,具体地,管理服务器30可以生成视频数据发送消息发送到前处理集群10,该视频数据发送消息中包含了转码集群20中至少一个计算设备的地址,使得前处理集群10的发送模块105可以将前处理后的视频数据发送到转码集群20中的指定的计算设备上进行视频转码。
55.当然,在实际应用中,前处理集群10也可以将前处理后的视频数据发送到管理服
务器30,由管理服务器30根据转码集群20的负载、资源状况将前处理后的视频数据发送到转码集群20中指定的计算设备上。
56.本发明实施例视频数据的前处理在前处理集群执行,该前处理集群可以是gpu前处理集群,前处理的数据流在显存传输,提高了前处理的效率,再者,前处理后的视频数据经编码后通过网络发送到转码集群,减少了前处理集群和转码集群之间的数据传输量,节省了带宽和传输时间。
57.如图3所示,在本发明的可选实施例中,转码集群20包括视频数据接收模块201、转码模块202以及视频数据发送模块203。
58.其中,视频数据接收模块201用于从前处理集群10接收前处理后的视频数据,转码模块202用于对前处理后的视频数据进行转码得到转码后的目标视频数据,视频数据发送模块203用于将转码后的目标视频数据发送到内容分发网络,内容分发网络将转码后的目标视频数据发送到客户端。
59.在本发明的可选实施例中,转码集群20的转码模块202可以包括解码子模块、编码子模块和封装子模块。
60.其中,解码子模块用于对前处理后的视频数据进行解码得到解码后的第二视频数据,编码子模块用于按照预设的至少一个编码格式对解码后的第二视频数据进行编码得到至少一路编码后的视频数据,封装子模块用于按照编码格式对相应的编码后的视频数据进行封装得到转码后的目标视频数据。
61.在一个示例中,转码集群20接收到前处理集群10发送的前处理后的编码视频数据,为了转码需要,先通过解码子模块对前处理后的编码视频数据进行解码得到解码后的第二视频数据,然后对解码后的第二视频数据进行编码,最后通过封装子模块封装为各种格式的视频数据作为目标视频数据。
62.在一个示例中,编码子模块可以包括第一路编码单元、编码参数预测单用以及第n路编码单元,其中,第一路编码单元用于对解码后的第二视频数据进行编码得到第一路编码视频数据、第一编码参数以及质量参数,编码参数预测单元用于将第一编码参数和质量参数输入预先训练好的编码参数预测模型中得到n路编码参数,第n路编码单元用于基于第n路编码参数对解码后的第二视频数据进行编码得到第n路编码视频数据。
63.如图5所示为转码集群20转码的示意,在图5中,转码集群20中转码模块202的解码子模块先对视频数据接收模块201所接收到的前处理后的视频数据进行解码,转码子模块在转码时,第一路编码单元先对解码后的视频数据进行编码得到第一路编码视频数据、第一编码参数以及质量参数,第一编码参数可以是码率、比特率、压缩率等编码参数,质量参数可以是分辨率、清晰度等质量参数,然后将第一编码参数和质量参数输入预先训练好的编码参数预测模型中预测第二路、第三路
……
第n路的编码参数,第n路编码单元可以根据预测的编码参数来对解码后的视频数据进行编码得到第n路的编码后的视频数据,封装子单元可以根据第n路的封装格式对编码后的视频数据进行封装得到多路目标视频数据。
64.本发明实施例通过前处理集群对原始视频数据进行处理,以及通过转码集群来对前处理后的视频数据进行转码,实现了前处理和转码解耦,一方面,前处理集群可以采用gpu平台,前处理时数据流在显存传输,前处理集群和转码集群传输前处理后的视频数据,传输效率高,转码效率高,另一方面,前处理可以在gpu平台上实现,转码可以在cpu平台实
现,无需整个转码过程依赖部署有gpu的平台上,系统硬件成本低,再一方面,解决了前处理需要大量资源影响编码参数预测的问题,转码过程在转码集群运行,不受前处理影响,保证了编码参数预测的准确性和速度。
65.进一步地,前处理后的视频数据经编码后通过网络发送到转码集群,减少了前处理集群和转码集群之间的数据传输量,节省了带宽和传输时间。
66.实施例三
67.图6为本发明实施例三提供的一种视频转码方法的步骤流程图,本发明实施例适用于对视频数据进行转码的情况,该方法可以由本发明实施例的视频转码系统来执行,该视频转码系统包括前处理集群、管理服务器和转码集群,该视频转码系统可以由硬件或软件来实现,并集成在本发明实施例所提供的电子设备中,具体地,如图6所示,本发明实施例的视频转码法可以包括如下步骤:
68.s601、所述前处理集群获取原始视频数据以及对所述原始视频数据进行前处理得到前处理后的视频数据。
69.在本发明的可选实施例中,前处理集群可以是部署有gpu平台的多台计算设备,前处理集群可以从存储服务器获取客户端上传的原始视频数据,并对原始视频数据进行解码得到解码后的第一视频数据,进一步对解码后的第一视频数据进行前处理得到前处理后的视频数据,在对前处理后的视频数据进行编码得到前处理后的编码视频数据后,将前处理后的编码视频数据发送到转码集群。
70.其中,原始视频数据可以是mp3、mp4、rm、rmvb、avi、wmv等格式的视频数据,在一个示例中,客户端响应用户对视频数据的转码操作,将原始视频数据以及转码需求发送到存储服务器,前处理集群可以从存储服务器获取原始视频数据以及用户的转码需求,转码需求可以是分辨率、码率、转码格式等。
71.由于前处理集群需要基于yuv/rgb数据层对视频数据进行进行去噪、调整分辨率、增加水印、去除水印等图像美化处理,或者对原始视频数据视频内容理解、视频质量评估等操作,在前处理前,前处理集群对原始视频数据解码得到得到yuv/rgb数据流的解码后的视频数据,并且在前处理完成后发送到转码集群之间,对前处理后的视频数据进行无损编码(如x264,crf 18,ultrafast preset编码)得到前处理后的编码视频数据,将该前处理后的编码视频数据发送到转码集群,由于对前处理后的视频数据进行编码后再发送到转码集群,使得视频数据得到压缩,降低传输到转码集群的数据量,节省了网络带宽和缩短传输时间,可以提高转码效率。
72.s602、所述管理服务器控制所述前处理集群将所述前处理后的视频数据发送到所述转码集群。
73.本发明实施例中,管理服务器可以对整个视频转码系统的任务、资源、负载均衡等进行综合管理,当前处理集群对原始视频数据前处理完成后,管理服务器可以控制前处理集群将前处理后的视频数据发送到转码集群。
74.在一个示例中,当前处理集群对原始视频数据前处理完成并且编码后,前处理集群可以向管理服务器发送前处理完成消息,管理服务器接收到该前处理完成消息后生成视频数据发送消息并发送到前处理集群,前处理集群接收到管理服务器发送的视频数据发送消息时将前处理后的视频数据发送到转码集群。
75.可选地,管理服务器在接收到前处理集群发送的前处理完成消息后,可以获取转码集群中各个计算设备的负载状态,选择负载较低的计算设备作为转码设备,或者,管理服务器根据转码需求(转码格式)从转码集群中选择相应的计算设备作为转码设备,具体地,管理服务器可以生成视频数据发送消息发送到前处理集群,该视频数据发送消息中包含了转码集群中至少一个计算设备的地址,使得前处理集群可以将前处理后的视频数据发送到转码集群中的指定的计算设备上进行视频转码。
76.当然,在实际应用中,前处理集群也可以将前处理后的视频数据发送到管理服务器,由管理服务器根据转码集群的负载、资源状况将前处理后的视频数据发送到转码集群中指定的计算设备上。
77.s603、所述转码集群对所述前处理后的视频数据进行转码得到目标视频数据,并将所述目标视频数据通过内容分发网络发送到客户端。
78.在本发明的可选实施例中,转码集群从前处理集群接收前处理后的视频数据后,对前处理后的视频数据进行转码得到转码后的视频数据,将转码后的视频数据发送到内容分发网络,内容分发网络将转码后的视频数据发送到客户端。
79.可选地,在转码过程中,先对前处理后的视频数据进行解码,然后对解码后的视频数据进行第一路编码得到第一路编码视频数据、第一编码参数以及质量参数,第一编码参数可以是码率、比特率、压缩率等编码参数,质量参数可以是分辨率、清晰度等质量参数,然后将第一编码参数和质量参数输入预先训练好的编码参数预测模型中预测第二路、第三路
……
第n路的编码参数,然后可以根据预测的第n路编码参数来对解码后的视频数据进行编码得到n路编码后的视频数据,并根据第n路的封装格式对编码后的视频数据进行封装得到多路目标视频数据。
80.本发明实施例的视频转码方法,通过前处理集群对原始视频数据进行处理,以及通过转码集群来对前处理后的视频数据进行转码,实现了前处理和转码解耦,一方面,前处理集群可以采用gpu平台,前处理时数据流在显存传输,前处理集群和转码集群传输前处理后的视频数据,传输效率高,转码效率高,另一方面,前处理可以在gpu平台上实现,转码可以在cpu平台实现,无需整个转码过程依赖部署有gpu的平台上,系统硬件成本低,再一方面,解决了前处理需要大量资源影响编码参数预测的问题,转码过程在转码集群运行,不受前处理影响,保证了编码参数预测的准确性和速度。
81.实施例四
82.参照图7,示出了本发明一个示例中的一种电子设备的结构示意图。如图7所示,该电子设备具体可以包括:处理器701、存储装置702、具有触摸功能的显示屏703、输入装置704、输出装置705以及通信装置706。该电子设备中处理器701的数量可以是一个或者多个,图7中以一个处理器701为例。该电子设备的处理器701、存储装置702、显示屏703、输入装置704、输出装置705以及通信装置706可以通过总线或者其他方式连接,图7中以通过总线连接为例。所述电子设备用于执行如本发明任一实施例提供的视频转码方法。
83.本发明实施例还提供一种计算机可读存储介质,所述存储介质中的指令由设备的处理器执行时,使得设备能够执行如上述方法实施例所述的视频转码方法。
84.需要说明的是,对于方法、电子设备、存储介质实施例而言,由于其与系统实施例基本相似,所以描述的比较简单,相关之处参见系统实施例的部分说明即可。
85.在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
86.注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变换、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1