CN111343503A - 视频的转码方法、装置、电子设备及存储介质 - Google Patents

视频的转码方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN111343503A
CN111343503A CN202010246865.1A CN202010246865A CN111343503A CN 111343503 A CN111343503 A CN 111343503A CN 202010246865 A CN202010246865 A CN 202010246865A CN 111343503 A CN111343503 A CN 111343503A
Authority
CN
China
Prior art keywords
data frame
filtering
video data
frame
original video
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010246865.1A
Other languages
English (en)
Other versions
CN111343503B (zh
Inventor
姚孟来
陈金
张占文
蔡媛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Kingsoft Cloud Network Technology Co Ltd
Original Assignee
Beijing Kingsoft Cloud Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Kingsoft Cloud Network Technology Co Ltd filed Critical Beijing Kingsoft Cloud Network Technology Co Ltd
Priority to CN202010246865.1A priority Critical patent/CN111343503B/zh
Publication of CN111343503A publication Critical patent/CN111343503A/zh
Application granted granted Critical
Publication of CN111343503B publication Critical patent/CN111343503B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2187Live feed
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440218Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本公开的实施例公开了一种视频的转码方法、装置、电子设备及计算机可读存储介质。该方法包括:获取待转码的第一视频流中的目标视频帧;对所述目标视频帧进行解码,获得所述目标视频帧对应的原始视频数据帧;将所述原始视频数据帧送入滤波队列,以通过多个滤波线程中的任一所述滤波线程对所述原始视频数据帧进行滤波处理,得到滤波数据帧;在对所述目标视频帧对应的所述原始视频数据帧进行编码的情况下,若存在所述滤波数据帧,则对所述滤波数据帧进行编码。

Description

视频的转码方法、装置、电子设备及存储介质
技术领域
本公开实施例涉及人工智能技术领域,尤其涉及一种视频的转码方法、装置、电子设备及计算机可读存储介质。
背景技术
随着直播流行以及全民直播时代来临,斗鱼,快手,头条等直播公司的竞争也越来越激烈,低码率高画质,即窄带高清成为运营平台的迫切需求。
很多公司将深度学习算法集成到FFmpeg(FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序,它提供了录制、转换以及流化音视频的完整解决方案)滤波中,在解码后编码之前进行深度学习滤波处理,然后送入编码器。从而达到窄带高清。
大部分深度学习算法比较复杂耗时,处理一帧视频的时间比较长。例如如图1所示,FFmpeg处理一帧视频(例如1080p)的整体时间包括解码时间t1、滤波处理时间t2和编码时间t3,总时间相加有31ms。而通常直播视频流传输的视频帧间隔通常是30ms,因此深度学习的加入导致FFmpeg处理一帧的时间大于视频帧间隔,从而导致现有基于深度学习算法的FFmpeg滤波难以实现对高清直播项目中的视频流实时处理,造成视频播放出现卡顿、不流畅的情况,具有较差的用户体验。
发明内容
本公开实施例的目的在于提供一种视频的转码方法、装置、电子设备及计算机可读存储介质,以节省视频转码时间,实现视频的快速转码处理。
根据本公开实施例的第一方面,提供了一种视频的转码方法,包括:
获取待转码的第一视频流中的目标视频帧;
对所述目标视频帧进行解码,获得所述目标视频帧对应的原始视频数据帧;
将所述原始视频数据帧送入滤波队列,以通过多个滤波线程中的任一所述滤波线程对所述原始视频数据帧进行滤波处理,得到滤波数据帧;
在对所述目标视频帧对应的所述原始视频数据帧进行编码的情况下,若存在所述滤波数据帧,则对所述滤波数据帧进行编码。
可选的,在将所述原始视频数据帧送入滤波队列的步骤之后,所述方法还包括:
在对所述目标视频帧对应的所述原始视频数据帧进行编码的情况下,若未存在所述滤波数据帧,则对所述原始视频数据帧进行编码。
可选的,在对所述滤波数据帧进行编码的步骤之后,所述方法还包括:
将编码获得的第二视频流发送至目标客户端。
可选的,在对所述滤波数据帧进行编码的步骤之前,所述方法还包括:
确定所述滤波队列中的原始视频数据帧的第一数量;
在所述第一数量大于目标数量的情况下,开始执行编码操作。
可选的,在将所述原始视频数据帧送入滤波队列,以通过多个滤波线程中的任一所述滤波线程对所述原始视频数据帧进行滤波处理,得到滤波数据帧的步骤之后,所述方法还包括:
对所述原始视频数据帧进行标记处理,其中,所述标记处理用于标记所述原始视频数据帧已进行所述滤波处理。
可选的,在对所述滤波数据帧进行编码的步骤之前,所述方法还包括:
判断所述滤波队列中的所述原始视频数据帧是否经过所述标记处理;
在所述滤波队列中的所述原始视频数据帧经过所述标记处理的情况下,确定存在所述原始视频数据帧对应的所述滤波数据帧。
根据本公开实施例的第二方面,提供了一种视频的转码装置,包括:
获取模块,用于获取待转码的第一视频流中的目标视频帧;
解码模块,用于对所述目标视频帧进行解码,获得所述目标视频帧对应的原始视频数据帧;
滤波模块,用于将所述原始视频数据帧送入滤波队列,以通过多个滤波线程中的任一所述滤波线程对所述原始视频数据帧进行滤波处理,得到滤波数据帧;
编码模块,用于在对所述目标视频帧对应的所述原始视频数据帧进行编码的情况下,若存在所述滤波数据帧,则对所述滤波数据帧进行编码。
可选的,所述编码模块还用于:
在所述滤波模块将所述原始视频数据帧送入滤波队列之后,在对所述目标视频帧对应的所述原始视频数据帧进行编码的情况下,若未存在所述滤波数据帧,则对所述原始视频数据帧进行编码。
根据本公开实施例的第三方面,提供了一种电子设备,此电子设备包括:
根据本公开实施例第二方面所述的视频的转码装置;或者,
处理器和存储器,存储器用于存储可执行的指令,所述指令用于控制处理器执行根据本公开实施例第一方面所述的视频的转码方法。
根据本公开实施例的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器执行时实现根据本公开实施例第一方面所述的视频的转码方法。
根据本公开实施例,通过编/解码和滤波处理并行,可显著降低单帧处理的整体时间。如此,可以实现对高清直播视频流的实时处理,给用户提供流畅的直播视频,具有更好的观看体验。
此外,在输入滤波队列中的原始视频数据帧的数量首次达到目标数量后,再开始进行编码和网络输出,可以防止直播视频源播放时出现抖动。
并且,本公开的实施例通过在对目标视频帧对应的原始视频数据帧进行编码的情况下,若未存在滤波数据帧,则对原始视频数据帧进行编码,这样可以在开始编码后存在网络抖动导致的视频数据堆积时,通过直接对原始视频数据帧进行编码,可以避免视频播放卡顿现象出现。
通过以下参照附图对本公开实施例的示例性实施例的详细描述,本公开实施例的其它特征及其优点将会变得清楚。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本公开的实施例,并且连同其说明一起用于解释本公开实施例的原理。
图1为可用于实现本公开实施例的电子设备的硬件配置结构方框图。
图2为现有深度学习FFmpeg滤波处理的帧时间示意图。
图3为本公开实施例的视频的转码处理方法步骤流程图。
图4为本公开实施例的视频的转码处理的帧时间示意图。
图5为本公开实施例的视频的转码方法的示例流程图。
图6本公开实施例的视频的转码装置的结构方框图。
图7为本公开实施例的电子设备的结构方框图。
具体实施方式
现在将参照附图来详细描述本公开实施例的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开实施例的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开实施例及其应用或使用的任何限制。
对于相关领域普通技术人物已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
图2是示出可以实现本公开的实施例的电子设备1000的硬件配置的结构方框图。
电子设备1000可以是服务器设备,便携式电脑、台式计算机、平板电脑等。
服务器设备可以是整体式服务器或是跨多计算机或计算机数据中心的分散式服务器。服务器可以是各种类型的,例如但不限于,内容分发网络的节点设备、分布式存储系统的存储服务器、云数据库服务器、云计算服务器、云管理服务器、网络服务器、新闻服务器、邮件服务器、消息服务器、广告服务器、文件服务器、应用服务器、交互服务器、存储服务器、数据库服务器或代理服务器等。在一些实施例中,每个服务器可以包括硬件,软件,或用于执行服务器所支持或实现的合适功能的内嵌逻辑组件或两个或多个此类组件的组合。例如,服务器例如刀片服务器、云端服务器等,或者可以是由多台服务器组成的服务器群组,可以包括上述类型的服务器中的一种或多种等等。
如图2所示,电子设备1000可以包括处理器1100、存储器1200、接口装置1300、通信装置1400,或者还可以包括显示装置1500、输入装置1600、扬声器1700、麦克风1800等等。其中,处理器1100可以是中央处理器CPU、微处理器MCU等,用于执行计算机程序。该计算机程序可以采用比如x86、Arm、RISC、MIPS、SSE等架构的指令集编写。存储器1200例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1300例如包括USB接口、耳机接口等。通信装置1400例如能够利用光纤或电缆进行有线通信,或者进行无线通信,,具体地可以包括WiFi通信、蓝牙通信、2G/3G/4G/5G通信等。显示装置1500例如是液晶显示屏、触摸显示屏等。输入装置1600例如可以包括触摸屏、键盘、体感输入等。用户可以通过扬声器1700和麦克风1800输入/输出语音信息。
图2所示的电子设备仅仅是说明性的并且决不意味着对本公开实施例、其应用或使用的任何限制。应用于本公开的实施例中,电子设备1000的所述存储器1200用于存储指令,所述指令用于控制所述处理器1100进行操作以执行本公开实施例提供的任意一项视频的转码方法。本领域技术人员应当理解,尽管在图2中对电子设备1000示出了多个装置,但是,本公开实施例可以仅涉及其中的部分装置,例如电子设备1000可以只涉及处理器1100和存储装置1200。技术人员可以根据本公开实施例所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。
现在参考图3,图3为本公开实施例的视频的转码方法步骤流程图。在该实施例中,描述了利用本公开实施例视频的转码方法对直播视频流各个视频帧进行滤波处理,例如深度学习的滤波处理。本公开实施例的视频的转码方法可以是由电子设备实施,该电子设备例如可以是如图1所示的电子设备1000。
如图3所示,本公开实施例的视频的转码方法包括以下步骤:
步骤102,获取待转码的第一视频流中的目标视频帧;
步骤104,对所述目标视频帧进行解码,获得所述目标视频帧对应的原始视频数据帧;
步骤106,将所述原始视频数据帧送入滤波队列,以通过多个滤波线程中的任一所述滤波线程对所述原始视频数据帧进行滤波处理,得到滤波数据帧;
步骤108,在对所述目标视频帧对应的所述原始视频数据帧进行编码的情况下,若存在所述滤波数据帧,则对所述滤波数据帧进行编码,以得到转码后的视频帧,该视频帧用于发送给客户端。
在步骤102中,首先获取待转码的目标视频帧,这里第一视频流可以是高清直播源的视频流(视频像素分辨率例如为1080p)。
在步骤104中,根据获取的目标视频帧的时间顺序,依次对各个目标视频帧进行解码,得到对应的原始视频数据帧,例如YUV帧,YUV为一种颜色编码格式。解码视频帧是依时间顺序边接收边解码,在一个示例中,可以依次对解码得到的每个原始视频数据帧进行1,2,3…编号,编号依次递增,编号后得到第1个、第2个、…第i个、…原始视频数据帧等等。
在步骤106中,将编号后的每个原始视频数据帧可以依次送入到待滤波处理的滤波队列,例如待深度学习滤波处理的队列里。通过多个滤波线程中的任一个滤波线程,对上述原始视频数据帧进行滤波处理。
根据获取的输入源,即高清直播源,可以启动N个并行线程,以对解码视频帧得到原始视频数据帧执行N线程并行滤波处理。并行的线程数量N至少为2个,具体地,N的数量可以根据获取的视频帧分辨率来确定。不同分辨率的视频帧,对应每个滤波线程占用执行深度学习滤波处理(例如,深度学习FFmpeg滤波处理)的图形处理器(Graphics ProcessingUnit,GPU)的资源是不同的,根据每个滤波线程在执行处理时占用的GPU处理器的资源比例,可以确定GPU处理器能够承受的对该分辨率的视频帧并行处理的能力。视频帧分辨率大的,可以启动的并行滤波线程数量N则少;反之,视频帧分辨率小的,可以启动的并行滤波线程数量N则多。
例如,对于分辨率为1980p的高清视频帧,一个滤波线程执行深度学习滤波处理所占用的GPU处理器的资源比例为大概20%,则GPU对视频帧进行处理是可以并行的滤波线程数量可以是4个,占用GPU处理器全部资源的大概80%。
在一个实施例中,在将所述原始视频数据帧送入滤波队列,以通过多个滤波线程中的任一所述滤波线程对所述原始视频数据帧进行滤波处理,得到滤波数据帧的步骤之后,所述方法还包括:对所述原始视频数据帧进行标记处理,其中,所述标记处理用于标记所述原始视频数据帧已进行所述滤波处理。
N个滤波线程在执行深度学习滤波处理时,从滤波队列里随机取到原始视频数据帧并进行处理。处理完成后,将已处理的原始视频数据帧进行标记处理,即标记该原始视频数据帧已进行了滤波处理,标记为已处理后,再随机送回到队列里。
在一个实施例中,在对所述滤波数据帧进行编码的步骤之前,所述方法还包括:判断所述滤波队列中的所述原始视频数据帧是否经过所述标记处理;在所述滤波队列中的所述原始视频数据帧经过所述标记处理的情况下,确定存在所述原始视频数据帧对应的所述滤波数据帧。
通过并行滤波处理,得到每个原始视频数据帧对应的滤波数据帧。如上文所述,可以依次对解码得到的每个原始视频数据帧进行1,2,3…编号,则通过滤波每个原始视频数据帧对应得到滤波数据帧也具有相应的时间顺序编号。也就是说,队列里的已完成滤波处理的滤波数据帧也相应地具有时间顺序编号。
在一个示例中,在将所述原始视频数据帧送入滤波队列的步骤之后,所述方法还包括:在对所述目标视频帧对应的所述原始视频数据帧进行编码的情况下,若未存在所述滤波数据帧,则对所述原始视频数据帧进行编码。
在步骤108中,按照时间顺序对获取的视频流的原始视频数据帧进行编码,在编码过程中,如果该原始视频数据帧已进行过滤波处理,则取该原始视频数据帧对应的滤波数据帧进行编码。
如果当前需编码的原始视频数据帧不存在对应的过滤数据帧,则直接对原始视频数据帧进行编码。
每个原始视频数据帧和滤波数据帧的编码依时间顺序进行。即,根据每个原始视频数据帧和滤波数据帧的时间顺序编号,按时间顺序从队列里送出对应的数据帧,并进行相应的编码处理。这样编码处理后的数据帧是按照直播视频流的播放顺序输出的。
在一个实施例中,在对所述滤波数据帧进行编码的步骤之前,所述方法还包括:确定所述滤波队列中的原始视频数据帧的第一数量;在所述第一数量大于目标数量的情况下,开始执行编码操作。
由于深度学习滤波处理需要一定的时间,因此为防止转码后视频不会出现卡顿,这里设置一定数量的缓存数据帧,即第一数量。
该实施例是针对在刚开始对原始视频数据帧进行编码的时候,将原始视频数据帧送入滤波队列之后执行滤波处理,会依次得到对应滤波数据帧。但是若滤波队列里的原始视频数据帧的数量(若原始视频数据帧已进行滤波处理,则对应已经滤波处理的滤波数据帧的数量)未达到预定的第一数量,则即使已经经过滤波处理,也暂时不会对这些数据帧进行编码。直至滤波队列里的数据帧数量首次达到该第一数量。
在一个实施例中,在对所述滤波数据帧进行编码的步骤之后,所述方法还包括:将编码获得的第二视频流发送至目标客户端。
如此,通过网络进一步发送编码获得的高清视频流到请求直播的客户端进行播放。
通过多线程处理,可以同时对多个解码后的原始视频数据帧进行深度学习滤波处理,如此多帧并行处理可以降低视频帧的平均处理时间。
如图4所示,图4为本公开实施例的视频的转码处理的帧时间示意图。
在图4的示例中,同样对于像素为1080p的高清视频源,解码时间t1为1ms)、编码时间t2为10ms、深度学习滤波处理时间t3为20ms。通过本公开实施例的方法,可以让编解码和深度学习滤波处理并行,FFmpeg处理单帧的整体处理时间就平均为编解码时间之和(11ms)与深度学习滤波时间(20ms)之间取最大值,从而可显著降低单帧处理的整体时间。这样,可以实现对高清直播视频流的实时处理,给用户提供流畅的直播视频,具有更好的观看体验。
下面参考第5图,图5为本公开实施例的视频的转码方法的示例步骤流程图。在该实施例中,描述了在利用本公开实施例视频的转码方法对直播视频流各个视频帧进行滤波处理时,存在网络抖动时的处理方式。本公开实施例的视频的转码方法可以是由电子设备实施,该电子设备例如可以是如图1所示的电子设备1000。
如图5所示,本公开实施例的视频的转码方法包括以下步骤:
步骤202,首先根据作为输入源的视频流的分辨率启动N个线程,后面进行并行滤波;
步骤204,获取目标视频帧并进行解码,这里解码与图3实施例的解码相同,此处不再赘述;
步骤206,对解码得到的原始视频数据帧按接收的视频帧时间顺序进行编号;
步骤208,将编号的原始视频数据帧送入待深度学习滤波处理的滤波队列;
步骤210,判断滤波队列里是否有待处理原始视频数据帧;
步骤212,在判断存在时,每个线程随机获取队列里的原始视频数据帧k;
步骤214,然后各个线程对应执行滤波处理;
步骤216,并且对滤波处理完成的原始视频数据帧做出标记,设置原始视频数据帧k已经完成处理,再次循环到步骤210,直至队列里没有待处理的原始视频数据帧。
步骤218,在步骤214之后,得到经过滤波处理得到的滤波数据帧。
在一个示例中,由于某些滤波处理,例如深度学习滤波处理需要一定的时间,因此为防止转码后视频不会出现卡顿,设置一定数量的缓存数据帧。即,在最开始接收输入源的视频帧时,将接收的前几个预定数量的原始视频数据帧作为缓存,即使对它们的滤波处理完成也暂时不会直接送出去进行编码。
步骤220,判断接收的原始视频数据帧是否首次达到预定缓存数量,例如数量值为H,H为大于0的整数。
步骤222,在判断当前接收的用于滤波处理的原始视频数据帧没有达到预定缓存数量的数量值H时,则处于等待状态,即使该原始视频数据帧已完成滤波处理,也不对其进行解码处理和通过网络输出给用户。这时,客户端用户不会马上和直播视频源同步,会延迟一定的时间。从而,在后续开始正常编码时,可以防止直播视频源播放时出现抖动。
预定缓存数量的数量值H可以根据并行线程的数量N和结合考虑延迟时间确定,例如H=k×N,k为权重系数。在一个示例中,k位于1.5~3之间。k值越大延迟越短,反之则延迟越长。
关于步骤224到步骤234,下面以k值设置为2,数量值N设置为2,即预定缓存数量的数量值H为4个的示例下进行展开说明。
步骤224,在判断接收的原始视频数据帧首次达到预定缓存数量4个之后,开始对滤波队列送出的滤波数据进行解码,也就是在当前滤波队列接收到第5个原始视频数据帧时,开始对第1个滤波数据帧进行编码。
这里需要说明的是,输出用于进行编码的第1个数据帧可能是滤波数据帧,也可能是原始视频数据帧,下面会展开进行说明。
步骤226,在收到第i个原始视频数据帧进行滤波处理时,判断第(i-H)个原始视频数据帧是否已完成滤波处理。i为原始视频数据帧的编号。
步骤228,若第(i-H)个原始视频数据帧已完成滤波处理,则对第(i-H)个滤波数据帧进行编码。
步骤230,将编码后的滤波数据帧通过网络发送到观看直播的用户。
步骤232,若未达到,则对第(i-H)个原始视频数据帧进行编码,然后在进入步骤230进行网络发送。
对于步骤224至步骤230,下面以N=2,i=5为例,接收到第5个原始视频数据帧,在开始对第个帧原始视频数据帧进行深度学习滤波处理时,先判断第1个原始视频数据帧是否已完成滤波处理,如果完成,则对滤波后的第1个滤波数据帧进行编码;如果未完成,则对第1个原始数据帧进行编码。即,此时直接编码原始帧而不再等待滤波处理后的数据帧,以保证在接收到第5个原始视频数据帧时,第1个数据帧(原始视频数据帧或者滤波数据帧)必须送出进行编码,并通过网络发送给用户。
上述处理是在出现网络抖动时的处理方式,例如某个时间点发生网络抖动导致前120ms没有读取到任何直播视频流的视频帧,而没有数据可以处理。如果随后马上100ms所有抖动的数据全部传输过来,导致数据堆积,存在滤波处理不过来的情况。为了防止抖动导致的视频播放卡顿现象,对于按时间顺序当前需要播放的视频帧,对其对应的原始视频数据帧进行编码和网络发送。从而,可以给用户提供流畅的视频画面,提升观看体验。
根据本公开实施例,通过编/解码和滤波处理并行,可显著降低单帧处理的整体时间。如此,可以实现对高清直播视频流的实时处理,给用户提供流畅的直播视频,具有更好的观看体验。
此外,在输入滤波队列中的原始视频数据帧的数量首次达到目标数量后,再开始进行编码和网络输出,可以防止直播视频源播放时出现抖动。
并且,本公开的实施例通过在对目标视频帧对应的原始视频数据帧进行编码的情况下,若未存在滤波数据帧,则对原始视频数据帧进行编码,这样可以在开始编码后存在网络抖动导致的视频数据堆积时,通过直接对原始视频数据帧进行编码,可以避免视频播放卡顿现象出现。
在本公开另一个实施例中,还提供了一种视频的转码装置2000,如图6所示,图6本公开实施例的视频的转码装置的结构方框图。
如图6所示,在一个示例中,视频的转码装置2000包括获取模块2200、解码模块2400、滤波模块2600以及编码模块2800。
获取模块2200,用于获取待转码的第一视频流中的目标视频帧;解码模块2400,用于对所述目标视频帧进行解码,获得所述目标视频帧对应的原始视频数据帧;滤波模块2600,用于将所述原始视频数据帧送入滤波队列,以通过多个滤波线程中的任一所述滤波线程对所述原始视频数据帧进行滤波处理,得到滤波数据帧;编码模块2800,用于在对所述目标视频帧对应的所述原始视频数据帧进行编码的情况下,若存在所述滤波数据帧,则对所述滤波数据帧进行编码。
在一个示例中,所述编码模块2800还用于:在将所述原始视频数据帧送入滤波队列之后,在对所述目标视频帧对应的所述原始视频数据帧进行编码的情况下,若未存在所述滤波数据帧,则对所述原始视频数据帧进行编码。
在一个示例中,所述装置2000还包括发送模块(图中未示出),用于:在对所述滤波数据帧进行编码之后,将编码获得的第二视频流发送至目标客户端。
在一个示例中,所述编码模块2800还用于:在对所述滤波数据帧进行编码之前,确定所述滤波队列中的原始视频数据帧的第一数量;在所述第一数量大于目标数量的情况下,开始执行编码操作。
在一个示例中,所述装置2000还包括标记模块(图中未示出),用于:在将所述原始视频数据帧送入滤波队列,以通过多个滤波线程中的任一所述滤波线程对所述原始视频数据帧进行滤波处理,得到滤波数据帧之后,对所述原始视频数据帧进行标记处理,其中,所述标记处理用于标记所述原始视频数据帧已进行所述滤波处理。
在一个示例中,所述装置2000还包括确定模块(图中未示出),用于在对所述滤波数据帧进行编码之前,判断所述滤波队列中的所述原始视频数据帧是否经过所述标记处理;在所述滤波队列中的所述原始视频数据帧经过所述标记处理的情况下,确定存在所述原始视频数据帧对应的所述滤波数据帧。
根据本公开的再一个实施例,还提供了一种电子设备,该电子设备3000可以是图1所示的电子设备1000。图7为本公开实施例的电子设备的结构方框图。
一方面,该电子设备3000可以包括前述的视频的转码装置,用于实施本公开任意实施例的视频的转码方法。
另一方面,如图7所示,电子设备3000可以包括存储器3200和处理器3400,存储器3200用于存储可执行的指令;该指令用于控制处理器3400执行前述的视频的转码方法。
在本实施例中,电子设备5000可以平板电脑、掌上电脑、台式机、笔记本电脑、工作站、游戏机等任意具有存储器3200以及处理器3400的电子产品。
最后,根据本公开的又一个实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序在被处理器执行时实现根据本公开任意实施例所述的视频的转码方法。
本公开实施例可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开实施例的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开实施例操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开实施例的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开实施例的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开实施例的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人物来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人物来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人物能理解本文披露的各实施例。本公开实施例的范围由所附权利要求来限定。

Claims (10)

1.一种视频的转码方法,其特征在于,包括:
获取待转码的第一视频流中的目标视频帧;
对所述目标视频帧进行解码,获得所述目标视频帧对应的原始视频数据帧;
将所述原始视频数据帧送入滤波队列,以通过多个滤波线程中的任一所述滤波线程对所述原始视频数据帧进行滤波处理,得到滤波数据帧;
在对所述目标视频帧对应的所述原始视频数据帧进行编码的情况下,若存在所述滤波数据帧,则对所述滤波数据帧进行编码。
2.根据权利要求1所述的方法,其特征在于,在将所述原始视频数据帧送入滤波队列的步骤之后,所述方法还包括:
在对所述目标视频帧对应的所述原始视频数据帧进行编码的情况下,若未存在所述滤波数据帧,则对所述原始视频数据帧进行编码。
3.根据权利要求1所述的方法,其特征在于,在对所述滤波数据帧进行编码的步骤之后,所述方法还包括:
将编码获得的第二视频流发送至目标客户端。
4.根据权利要求1所述的方法,其特征在于,在对所述滤波数据帧进行编码的步骤之前,所述方法还包括:
确定所述滤波队列中的原始视频数据帧的第一数量;
在所述第一数量大于目标数量的情况下,开始执行编码操作。
5.根据权利要求1所述的方法,其特征在于,在将所述原始视频数据帧送入滤波队列,以通过多个滤波线程中的任一所述滤波线程对所述原始视频数据帧进行滤波处理,得到滤波数据帧的步骤之后,所述方法还包括:
对所述原始视频数据帧进行标记处理,其中,所述标记处理用于标记所述原始视频数据帧已进行所述滤波处理。
6.根据权利要求5所述的方法,其特征在于,在对所述滤波数据帧进行编码的步骤之前,所述方法还包括:
判断所述滤波队列中的所述原始视频数据帧是否经过所述标记处理;
在所述滤波队列中的所述原始视频数据帧经过所述标记处理的情况下,确定存在所述原始视频数据帧对应的所述滤波数据帧。
7.一种视频的转码装置,其特征在于,包括:
获取模块,用于获取待转码的第一视频流中的目标视频帧;
解码模块,用于对所述目标视频帧进行解码,获得所述目标视频帧对应的原始视频数据帧;
滤波模块,用于将所述原始视频数据帧送入滤波队列,以通过多个滤波线程中的任一所述滤波线程对所述原始视频数据帧进行滤波处理,得到滤波数据帧;
编码模块,用于在对所述目标视频帧对应的所述原始视频数据帧进行编码的情况下,若存在所述滤波数据帧,则对所述滤波数据帧进行编码。
8.根据权利要求7所述的装置,其特征在于,所述编码模块还用于:
在所述滤波模块将所述原始视频数据帧送入滤波队列之后,在对所述目标视频帧对应的所述原始视频数据帧进行编码的情况下,若未存在所述滤波数据帧,则对所述原始视频数据帧进行编码。
9.一种电子设备,其特征在于,包括:
根据权利要求7或8所述的转码装置;或者,
处理器和存储器,所述存储器用于存储可执行的指令,所述指令用于控制所述处理器执行根据权利要求1至6中任一项所述的转码方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1至6中任一项所述的转码方法。
CN202010246865.1A 2020-03-31 2020-03-31 视频的转码方法、装置、电子设备及存储介质 Active CN111343503B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010246865.1A CN111343503B (zh) 2020-03-31 2020-03-31 视频的转码方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010246865.1A CN111343503B (zh) 2020-03-31 2020-03-31 视频的转码方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN111343503A true CN111343503A (zh) 2020-06-26
CN111343503B CN111343503B (zh) 2022-03-04

Family

ID=71186371

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010246865.1A Active CN111343503B (zh) 2020-03-31 2020-03-31 视频的转码方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN111343503B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112995532A (zh) * 2021-02-03 2021-06-18 上海哔哩哔哩科技有限公司 视频处理方法及装置
CN114449295A (zh) * 2022-01-30 2022-05-06 京东方科技集团股份有限公司 视频处理方法、装置、电子设备及存储介质
CN115589488A (zh) * 2022-09-30 2023-01-10 摩尔线程智能科技(北京)有限责任公司 视频转码系统、方法、gpu以及电子设备和存储介质

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1906945A (zh) * 2003-12-01 2007-01-31 三星电子株式会社 用于可缩放视频编码和解码的方法和装置
CN1910924A (zh) * 2004-01-30 2007-02-07 三星电子株式会社 视频编码设备和用于自适应插入关键帧的方法
CN101098483A (zh) * 2007-07-19 2008-01-02 上海交通大学 以图像组结构为并行处理单元的视频集群转码系统
CN104601993A (zh) * 2014-12-31 2015-05-06 乐视网信息技术(北京)股份有限公司 一种视频编码方法及装置
CN104952037A (zh) * 2014-03-27 2015-09-30 联科集团(中国)有限公司 图像文件缩放方法与系统
CN204761566U (zh) * 2015-06-30 2015-11-11 无锡市同威软件有限公司 一种基于fpga的图像处理加速系统
CN105551512A (zh) * 2015-12-17 2016-05-04 天翼爱音乐文化科技有限公司 音频格式转换方法和装置
CN107155107A (zh) * 2017-03-21 2017-09-12 腾讯科技(深圳)有限公司 视频编码方法和装置、视频解码方法和装置
CN107231566A (zh) * 2016-03-25 2017-10-03 阿里巴巴集团控股有限公司 一种视频转码方法、装置和系统
CN108848384A (zh) * 2018-06-19 2018-11-20 复旦大学 一种面向多核平台的高效并行转码方法
CN109429070A (zh) * 2017-08-23 2019-03-05 杭州海康威视系统技术有限公司 一种移动终端视频编码方法、装置及移动终端
CN110213598A (zh) * 2018-05-31 2019-09-06 腾讯科技(深圳)有限公司 一种视频转码系统、方法及相关产品
CN110505522A (zh) * 2019-09-16 2019-11-26 腾讯科技(深圳)有限公司 视频数据的处理方法、装置、及电子设备
CN110741647A (zh) * 2018-09-29 2020-01-31 深圳市大疆创新科技有限公司 一种图像处理方法、装置、可移动平台及存储介质

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1906945A (zh) * 2003-12-01 2007-01-31 三星电子株式会社 用于可缩放视频编码和解码的方法和装置
CN1910924A (zh) * 2004-01-30 2007-02-07 三星电子株式会社 视频编码设备和用于自适应插入关键帧的方法
CN101098483A (zh) * 2007-07-19 2008-01-02 上海交通大学 以图像组结构为并行处理单元的视频集群转码系统
US20170140502A1 (en) * 2014-03-27 2017-05-18 Ctaccel Limited Method and system for rescaling image files
CN104952037A (zh) * 2014-03-27 2015-09-30 联科集团(中国)有限公司 图像文件缩放方法与系统
CN104601993A (zh) * 2014-12-31 2015-05-06 乐视网信息技术(北京)股份有限公司 一种视频编码方法及装置
CN204761566U (zh) * 2015-06-30 2015-11-11 无锡市同威软件有限公司 一种基于fpga的图像处理加速系统
CN105551512A (zh) * 2015-12-17 2016-05-04 天翼爱音乐文化科技有限公司 音频格式转换方法和装置
CN107231566A (zh) * 2016-03-25 2017-10-03 阿里巴巴集团控股有限公司 一种视频转码方法、装置和系统
CN107155107A (zh) * 2017-03-21 2017-09-12 腾讯科技(深圳)有限公司 视频编码方法和装置、视频解码方法和装置
CN109429070A (zh) * 2017-08-23 2019-03-05 杭州海康威视系统技术有限公司 一种移动终端视频编码方法、装置及移动终端
CN110213598A (zh) * 2018-05-31 2019-09-06 腾讯科技(深圳)有限公司 一种视频转码系统、方法及相关产品
CN108848384A (zh) * 2018-06-19 2018-11-20 复旦大学 一种面向多核平台的高效并行转码方法
CN110741647A (zh) * 2018-09-29 2020-01-31 深圳市大疆创新科技有限公司 一种图像处理方法、装置、可移动平台及存储介质
CN110505522A (zh) * 2019-09-16 2019-11-26 腾讯科技(深圳)有限公司 视频数据的处理方法、装置、及电子设备

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112995532A (zh) * 2021-02-03 2021-06-18 上海哔哩哔哩科技有限公司 视频处理方法及装置
CN112995532B (zh) * 2021-02-03 2023-06-13 上海哔哩哔哩科技有限公司 视频处理方法及装置
CN114449295A (zh) * 2022-01-30 2022-05-06 京东方科技集团股份有限公司 视频处理方法、装置、电子设备及存储介质
CN115589488A (zh) * 2022-09-30 2023-01-10 摩尔线程智能科技(北京)有限责任公司 视频转码系统、方法、gpu以及电子设备和存储介质
CN115589488B (zh) * 2022-09-30 2023-09-08 摩尔线程智能科技(北京)有限责任公司 视频转码系统、方法、gpu以及电子设备和存储介质

Also Published As

Publication number Publication date
CN111343503B (zh) 2022-03-04

Similar Documents

Publication Publication Date Title
US10027927B2 (en) High quality multimedia transmission from a mobile device for live and on-demand viewing
CN111343503B (zh) 视频的转码方法、装置、电子设备及存储介质
EP3357253B1 (en) Gapless video looping
EP2517470B1 (en) Systems and methods for video-aware screen capture and compression
US20170311006A1 (en) Method, system and server for live streaming audio-video file
EP3410302B1 (en) Graphic instruction data processing method, apparatus
EP3080980B1 (en) Handling video frames compromised by camera motion
JP7151004B2 (ja) 中断可能な映像トランスコーディング
CN113473126A (zh) 视频流的处理方法、装置、电子设备及计算机可读介质
US20150117515A1 (en) Layered Encoding Using Spatial and Temporal Analysis
CN113965751A (zh) 屏幕内容编码方法、装置、设备及存储介质
CN113973224B (zh) 媒体信息的传输方法、计算设备及存储介质
CN114125498A (zh) 视频数据处理方法、装置、设备以及存储介质
CN108989905B (zh) 媒体流控制方法、装置、计算设备及存储介质
CN115225615B (zh) 虚幻引擎像素流送方法及装置
US9083990B2 (en) Electronic device and method for managing video snapshot
CN107872683B (zh) 一种视频数据处理方法、装置、设备及存储介质
CN107004018B (zh) 数据处理方法及装置
US11647153B1 (en) Computer-implemented method, device, and computer program product
CN116916071A (zh) 视频画面显示方法、系统、装置、电子设备以及存储介质
JP7515546B2 (ja) 中断可能な映像トランスコーディング
CN110798700B (zh) 视频处理方法、视频处理装置、存储介质与电子设备
CN112887758B (zh) 视频处理方法和装置
CN111935549B (zh) 播放序列的更新方法、装置
US20240137619A1 (en) Bullet-screen comment display

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant