CN117061765A - 一种用于实现8K 120fps实时编码优化的方法及系统 - Google Patents

一种用于实现8K 120fps实时编码优化的方法及系统 Download PDF

Info

Publication number
CN117061765A
CN117061765A CN202311043125.8A CN202311043125A CN117061765A CN 117061765 A CN117061765 A CN 117061765A CN 202311043125 A CN202311043125 A CN 202311043125A CN 117061765 A CN117061765 A CN 117061765A
Authority
CN
China
Prior art keywords
frame
gop
node
dts
encoded
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.)
Pending
Application number
CN202311043125.8A
Other languages
English (en)
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.)
SHANGHAI WONDERTEK SOFTWARE CO Ltd
Original Assignee
SHANGHAI WONDERTEK SOFTWARE 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 SHANGHAI WONDERTEK SOFTWARE CO Ltd filed Critical SHANGHAI WONDERTEK SOFTWARE CO Ltd
Priority to CN202311043125.8A priority Critical patent/CN117061765A/zh
Publication of CN117061765A publication Critical patent/CN117061765A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/114Adapting the group of pictures [GOP] structure, e.g. number of B-frames between two anchor frames
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/177Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a group of pictures [GOP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明涉及超高清视频编码技术领域,提供一种用于实现8K120fps实时编码优化的方法及系统,包括步骤S1,创建一个输入内存池用于存储帧地址,同时将用于接收并处理输入帧的编码器进行初始化;步骤S2,通过GOP节点接收输入帧的帧地址,并将帧地址放入GOP节点的帧列表中;步骤S3,创建X个并行实例子线程对所述GOP节点中的所述帧地址对应的所述输入帧进行编码,写入到输出缓冲区;步骤S4,通过子线程对于编码帧的DTS值进行矫正排序,同时主线程对输出缓冲区中的取出编码帧;步骤S5,对编码帧进行封装并输出。本发明通过GOP缓冲区和多线程机制,多个编码实例对不同GOP分片并行编码,并且利用NUMA和绑核机制更合理利用物理机的CPU和内存资源,实现8k 120fps实时编码输出。

Description

一种用于实现8K 120fps实时编码优化的方法及系统
技术领域
本发明涉及超高清视频编码技术领域,尤其涉及一种用于实现8K 120fps实时编码优化的方法及系统。
背景技术
近年来,视频技术已经呈现出瞩目的飞跃和进步,从初期的标清和高清,转变为4K,8K超高清,目前一些大型场合和专业行业越来越多支持采纳8K超高清视频输出,对8K超高清编码的需求也越来高。对于8K超高清编码技术来说,8K提供了四倍于4K的像素分辨率,带来了更为细致的画质,尤其是在这数字时代,观众和专业制作者对视觉体验的要求不断提高,在一些特定的应用中,如虚拟现实和大型活动的实时播放,对于传统的50fps、60fps的帧率已经渐渐不满足,高分辨率和高帧率已经成为了基本的要求,但是100fps、120fps的高帧率大大增加了视频实时编码的技术难度。
120fps的高帧率为观看这带来了细致且生动的视觉体验的同时,也为视频处理技术带来了挑战。120fps每帧有约8.33ms的处理时间,这让实时视频解码和输出变得有些困难。具体的说,对于8k的视频来说,但是内存拷贝的时间就有可能超过8.33ms,更不提及高质量编码的挑战了。现有的编码技术,尽管已经相对功效,但是难以满足这样的实时需求,而市面上大部分的硬件,例如常见的GPU和CPU,对于如此的需求,达到8K 120fps的实时处理是一个比较大的挑战。
发明内容
本发明的目的是针对上述技术问题,提出一种用于实现8K 120fps实时编码优化的方法及系统,通过内存池机制减少内存拷贝的耗时,通过缓冲区和多线程机制,多个编码实例对不同GOP分片并行编码,并且利用NUMA和绑核机制更合理利用物理机的CPU和内存资源,最终实现8K 120fps的实时编码,本发明的目的可通过下列技术方案来实现:
本发明提供了一种用于实现8K 120fps实时编码优化的方法,通过缓冲区和多线程机制,多个编码实例对不同GOP分片并行编码,包括以下步骤:
步骤S1,创建一个输入内存池用于存储帧地址,同时将用于接收并处理输入帧的编码器进行初始化;
步骤S2,编码器通过GOP内存缓冲池中GOP节点接收输入帧的帧地址,并将帧地址放入GOP节点的帧列表中,直到帧列表的长度达到预设的GOP长度;
步骤S3,GOP缓冲区根据配置的NUMA节点数量X,创建X个并行实例子线程,且每个实例子线程绑定一个NUMA节点,对GOP节点中的帧地址对应的输入帧进行编码,形成编码帧写入到输出缓冲区;
步骤S4,对于输出缓冲区的编码帧,通过子线程对于编码帧的DTS值进行矫正排序,同时主线程对输出缓冲区中的取出编码后的编码帧;
步骤S5,对取出的编码帧进行封装并输出。
优选地,在步骤S2中,编码器通过GOP内存缓冲池中GOP节点接收输入帧的帧地址,并将帧地址放入GOP节点的帧列表中,直到帧列表的长度达到预设的GOP长度,进一步包括,
步骤S201,从输入内存池中提取一个帧地址,将待编码的视频帧存储到与帧地址关联的内存位置并作为输入帧通过编码器进行编码;
步骤S202,从编码器中的GOP缓冲池提取一个空闲的GOP节点,将输入帧的帧地址直接放入GOP节点的帧列表中,直到达到GOP节点预定的长度,GOP节点进入GOP缓冲区进行编码处理,并从GOP缓冲池中提取空闲的GOP节点供下一个输入帧使用。
优选地,在步骤S3中,GOP缓冲区启动若干个并行实例子线程对GOP节点中的帧地址对应的输入帧进行编码,形成编码帧写入到输出缓冲区,进一步包括,
步骤S301,当GOP节点进入GOP缓冲区进行编码处理,GOP缓冲区唤醒实例子线程对GOP节点进行并行编码;
步骤S302,每个实例子线程从GOP缓冲区提取一个GOP节点,并开始进行编码;
步骤S303,当实例子线程编码完一个输入帧,将输入帧对于的帧地址放回输入内存池中,标记为空闲;
步骤S304,当实例子线程完成对整个GOP节点中所有帧地址对应的输入帧编码后,将编码帧写入输出缓冲区,并将GOP节点放回GOP缓冲池作为空闲的GOP节点继续使用。
优选地,在步骤S4中,对于输出缓冲区的编码帧,通过子线程对于编码帧的DTS值进行矫正排序,进一步包括,
步骤S411,子线程检测输出缓冲区中的编码帧,当输出缓冲区无数据则等待新的编码帧进入;
步骤S412,当输出缓冲区有新的编码帧的时候,对编码帧进行DTS矫正,并根据矫正后的DTS进行递增排序,确保在头部的编码帧的DTS最小;
步骤S413,继续检测输出缓冲区,重复步骤S411和步骤S413。
优选地,在步骤S4中,同时主线程对输出缓冲区中的取出编码后的编码帧,进一步包括,
步骤S421,根据处理的头部的编码帧的DTS作为初始的预期DTS;
步骤S422,检索头部的编码帧获取DTS;
步骤S423,将头部的编码帧的DTS与预期DTS进行对比:
当编码帧的DTS等于预期DTS,直接取出该帧,进行下一步;当编码帧的DTS大于预期DTS,则不取出帧,等待超过2个GOP长度仍然无匹配的视频帧的DTS,直接取出视频帧并更新预期DTS为这个编码帧的DTS;当编码帧的DTS小于预期DTS,则更新预期DTS为这个编码帧的DTS,且直接取出;
步骤S424,当视频帧被取出后,预期DTS=视频帧的DTS+1;并返回步骤S422继续操作。
基于相同的发明构思,本发明还一种用于实现8K 120fps实时编码优化的系统,执行上述用于实现8K 120fps实时编码优化的方法,包括,
帧接收管理模块,接收待编码的视频帧,从输入内存池中提取一个帧地址,将视频帧存储到与帧地址关联的内存位置并作为输入帧通过编码处理模块进行编码;
编码处理模块,通过GOP内存缓冲池接收输入帧的帧地址并其存入GOP节点的帧列表中,当帧列表的长度达到预设的GOP长度后,GOP缓冲区唤醒多个实例子线程进行并行编码形成编码帧,并将编码帧存入输出缓冲区,并通过子线程对其DTS进行矫正排序,最后由主线程从输出缓冲区取出编码帧。
封装输出模块,提取出的编码帧按照预设的格式和结构进行封装后输出视频流。
优选地,帧接收管理模块包括视频帧接收单元和帧地址分配单元;
视频帧接收单元用于接收待编码的视频帧;
帧地址分配单元用于从输入内存池中提取一个帧地址,将待编码的视频帧存储到与帧地址关联的内存位置并作为输入帧通过编码器进行编码。
优选地,编码处理模块包括输入帧缓冲分配单元、实例子线程启动单元、实例子线程编码单元和帧输出排序调整单元;
输入帧缓冲分配单元,从GOP缓冲池提取一个空闲的GOP节点,将输入帧的帧地址直接放入GOP节点的帧列表中。
实例子线程启动单元,当GOP节点的帧列表长度达到GOP节点预定的长度,GOP节点进入GOP缓冲区,GOP缓冲区唤醒实例子线程对GOP节点进行并行编码,并从GOP缓冲池中提取空闲的GOP节点供下一个输入帧使用
实例子线程编码单元,每个实例子线程从GOP缓冲区提取一个GOP节点,并开始进行编码;当实例子线程编码完一个输入帧,将输入帧对于的帧地址放回输入内存池中,标记为空闲;当实例子线程完成对整个GOP节点中所有帧地址对应的输入帧编码后,将编码帧写入输出缓冲区,并将GOP节点放回GOP缓冲池作为空闲的GOP节点继续使用;
帧输出排序调整单元,对于输出缓冲区的编码帧,通过子线程对于编码帧的DTS值进行矫正排序,同时主线程对输出缓冲区中的取出编码后的编码帧。
基于相同的发明构思,本发明还提供了一种用于实现8K 120fps实时编码优化的设备,包括:
存储器,存储器中存储有计算机可读指令;
处理器,计算机可读指令被处理器执行时,实现上述用于实现8K 120fps实时编码优化的方法。
基于相同的发明构思,本发明还提供了一种用于实现8K 120fps实时编码优化的可读存储介质,包括:可读存储介质上存储有处理程序,处理程序被处理器执行时,实现上述的用于实现8K 120fps实时编码优化的方法。
与现有技术相比,本发明存在以下至少一种技术效果:
本发明通过输入内存池机制减少内存拷贝的耗时,通过GOP缓冲区和多线程机制,多个编码实例对不同GOP分片并行编码,并且利用NUMA和绑核机制更合理利用物理机的CPU和内存资源,显著提升8K 120fps的编码性能,在合适的硬件环境下可以达到8k 120fps实时编码输出。
(1)提高了效率和性能优化,通过输入内存池机制,减少了频繁的内存分配和释放,从而提高了内存的使用效率,同时利用多个并行的实例子线程和NUMA绑核机制并行处理不同的GOP,实现了多个编码任务同时进行,大大加速了整体的编码效率;
(2)提高了稳定性和可靠性,使用缓冲区管理机制,确保了数据的稳定性和连续性,降低了数据丢失和错乱的风险;同时提供了DTS的矫正方案,防止了视频流中可能出现的时间戳不一致的问题,保障了视频流的连续性和同步性;
(3)可扩展性,由于采用了多线程、缓冲区管理和NUMA等技术,该方法的各个部分可以独立进行优化或扩展,为未来技术升级或扩展提供了方便。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍:
图1为本发明用于实现8K 120fps实时编码优化的方法的步骤流程图;
图2为本发明用于实现8K 120fps实时编码优化的方法的流程处理过程图;
图3为本发明用于实现8K 120fps实时编码优化的方法中DTS矫正步骤流程图;
图4为本发明用于实现8K 120fps实时编码优化的系统的系统结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施方式,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅用以解释本发明,并不用于限定本发明。
实施例1
本发明的目的是针对上述技术问题,提出一种用于实现8K 120fps实时编码优化的方法及系统,通过内存池机制减少内存拷贝的耗时,通过缓冲区和多线程机制,多个编码实例对不同GOP分片并行编码,并且利用NUMA和绑核机制更合理利用物理机的CPU和内存资源,最终实现8K 120fps的实时编码,本发明的目的可通过下列技术方案来实现:
本发明提供了一种用于实现8K 120fps实时编码优化的方法,通过缓冲区和多线程机制,多个编码实例对不同GOP分片并行编码,请参阅图1和图2,包括以下步骤:
步骤S1,创建一个输入内存池用于存储帧地址,用于解决对输入未压缩帧由于内存拷贝产生大量的耗时,输入内存池的大小一般设定为GOP(group of pictures,图像组)多实例并行的数量N*一个GOP的帧数*一帧YUV数据量*2,同时将用于接收并处理输入帧的编码器进行初始化;
步骤S2,编码器通过GOP内存缓冲池中GOP节点接收输入帧的帧地址,并将帧地址放入GOP节点的帧列表中,直到帧列表的长度达到预设的GOP长度;
优选地,在步骤S2中,编码器通过GOP内存缓冲池中GOP节点接收输入帧的帧地址,并将帧地址放入GOP节点的帧列表中,直到帧列表的长度达到预设的GOP长度,进一步包括,
步骤S201,从输入内存池中提取一个帧地址,将待编码的视频帧存储到与帧地址关联的内存位置并作为输入帧通过编码器进行编码;
步骤S202,从编码器中的GOP缓冲池提取一个空闲的GOP节点,将输入帧的帧地址直接放入GOP节点的帧列表中,直到达到GOP节点预定的长度,GOP节点进入GOP缓冲区进行编码处理,并从GOP缓冲池中提取空闲的GOP节点供下一个输入帧使用。
步骤S3,GOP缓冲区根据配置的NUMA节点数量X,创建X个并行实例子线程,且每个实例子线程绑定一个NUMA节点,对GOP节点中的帧地址对应的输入帧进行编码,形成编码帧写入到输出缓冲区;
优选地,在步骤S3中,GOP缓冲区启动若干个并行实例子线程对GOP节点中的帧地址对应的输入帧进行编码,形成编码帧写入到输出缓冲区,进一步包括,
步骤S301,当GOP节点进入GOP缓冲区进行编码处理,GOP缓冲区唤醒实例子线程对GOP节点进行并行编码;
步骤S302,每个实例子线程从GOP缓冲区提取一个GOP节点,并开始进行编码;
步骤S303,当实例子线程编码完一个输入帧,将输入帧对于的帧地址放回输入内存池中,标记为空闲;
步骤S304,当实例子线程完成对整个GOP节点中所有帧地址对应的输入帧编码后,将编码帧写入输出缓冲区,并将GOP节点放回GOP缓冲池作为空闲的GOP节点继续使用。
步骤S4,对于输出缓冲区的编码帧,通过子线程对于编码帧的DTS值进行矫正排序,同时主线程对输出缓冲区中的取出编码后的编码帧;该编码帧的PTS是根据输入帧的PTS返回的,不需要处理。DTS需要重计矫正,根据当前的PTS值、初始PTS值和初始DTS值对返回DTS重计后使用
优选地,请参阅图3,在步骤S4中,对于输出缓冲区的编码帧,通过子线程对于编码帧的DTS值进行矫正排序,进一步包括,
步骤S411,子线程检测输出缓冲区中的编码帧,当输出缓冲区无数据则等待新的编码帧进入;
步骤S412,当输出缓冲区有新的编码帧的时候,对编码帧进行DTS矫正,并根据矫正后的DTS进行递增排序,确保在头部的编码帧的DTS最小;
其中,由于编码可能存在B帧所以GOP节点编码后输出的PTS不一定递增,所以不能作为排序标准,DTS是递增的,以DTS为排序标准。又因为不同编码实例投入的相邻GOP节点的帧并不一定是相邻的,所以编码返回的DTS顺序不可直接作为排序标准,需要对GOP节点编码后的返回帧做DTS矫正。
矫正流程如下:记录首个返回的编码帧的时间戳PTS和DTS为初始PTS(start_PTS)和初始DTS(start_DTS)。记录当前GOP编码返回的首帧时间戳PTS为start_PTS_gop,当前GOP编码返回首帧DTS偏移值为DTS_delta=start_PTS_gop-start_PTS,当前GOP编码返回非首帧DTS_delta为上一帧DTS_delta+1,这样既可以保证不同GOP的DTS顺序,又可以保证同一GOP的DTS顺序。最终当前返回帧的DTS矫正后为:DTS=start_DTS+DTS_delta。
说明:PTS:Presentation Timestamp,显示时间戳。DTS:Decoding Timestamp,解码时间戳。
步骤S413,继续检测输出缓冲区,重复步骤S411和步骤S413。
优选地,在步骤S4中,同时主线程对输出缓冲区中的取出编码后的编码帧,进一步包括,
步骤S421,根据处理的头部的编码帧的DTS作为初始的预期DTS;
步骤S422,检索头部的编码帧获取DTS;
步骤S423,将头部的编码帧的DTS与预期DTS进行对比:
当编码帧的DTS等于预期DTS,直接取出该帧,进行下一步;当编码帧的DTS大于预期DTS,则不取出帧,等待超过2个GOP长度仍然无匹配的视频帧的DTS,直接取出视频帧并更新预期DTS为这个编码帧的DTS;当编码帧的DTS小于预期DTS,则更新预期DTS为这个编码帧的DTS,且直接取出;
步骤S424,当视频帧被取出后,预期DTS=视频帧的DTS+1;并返回步骤S422继续操作。
步骤S5,对取出的编码帧进行封装并输出。
实施例2
本发明还一种用于实现8K 120fps实时编码优化的系统,执行上述用于实现8K120fps实时编码优化的方法,请参阅图4,包括,
帧接收管理模块,接收待编码的视频帧,从输入内存池中提取一个帧地址,将视频帧存储到与帧地址关联的内存位置并作为输入帧通过编码处理模块进行编码;
编码处理模块,通过GOP内存缓冲池接收输入帧的帧地址并其存入GOP节点的帧列表中,当帧列表的长度达到预设的GOP长度后,GOP缓冲区唤醒多个实例子线程进行并行编码形成编码帧,并将编码帧存入输出缓冲区,并通过子线程对其DTS进行矫正排序,最后由主线程从输出缓冲区取出编码帧。
其中,GOP长度是指一个Group of Pictures(图像组)中所包含的帧数。在视频编码中,GOP是由一个I帧(关键帧)开始,并跟随一系列P帧(预测编码帧)和B帧(双向预测编码帧)组成的帧序列。GOP的长度通常定义为从一个I帧到下一个I帧之前的帧数。
所以“是否达到GOP长度”,是指当前已经加入到GOP节点的帧列表中的帧数是否达到了预定的GOP长度。如果已经达到或超过这个长度,那么这个GOP可以被视为完整,进行下一步处理。如果还没有达到这个长度,那么需要继续等待更多的帧加入到GOP中。
封装输出模块,提取出的编码帧按照预设的格式和结构进行封装后输出视频流。
优选地,帧接收管理模块包括视频帧接收单元和帧地址分配单元;
视频帧接收单元用于接收待编码的视频帧;
帧地址分配单元用于从输入内存池中提取一个帧地址,将待编码的视频帧存储到与帧地址关联的内存位置并作为输入帧通过编码器进行编码。
优选地,编码处理模块包括输入帧缓冲分配单元、实例子线程启动单元、实例子线程编码单元和帧输出排序调整单元;
输入帧缓冲分配单元,从GOP缓冲池提取一个空闲的GOP节点,将输入帧的帧地址直接放入GOP节点的帧列表中。
实例子线程启动单元,当GOP节点的帧列表长度达到GOP节点预定的长度,GOP节点进入GOP缓冲区,GOP缓冲区唤醒实例子线程对GOP节点进行并行编码,并从GOP缓冲池中提取空闲的GOP节点供下一个输入帧使用
实例子线程编码单元,每个实例子线程从GOP缓冲区提取一个GOP节点,并开始进行编码;当实例子线程编码完一个输入帧,将输入帧对于的帧地址放回输入内存池中,标记为空闲;当实例子线程完成对整个GOP节点中所有帧地址对应的输入帧编码后,将编码帧写入输出缓冲区,并将GOP节点放回GOP缓冲池作为空闲的GOP节点继续使用;
帧输出排序调整单元,对于输出缓冲区的编码帧,通过子线程对于编码帧的DTS值进行矫正排序,同时主线程对输出缓冲区中的取出编码后的编码帧。
基于相同的发明构思,本发明还提供了一种用于实现8K 120fps实时编码优化的设备,包括:
存储器,存储器中存储有计算机可读指令;
处理器,计算机可读指令被处理器执行时,实现上述用于实现8K 120fps实时编码优化的方法。
基于相同的发明构思,本发明还提供了一种用于实现8K 120fps实时编码优化的可读存储介质,包括:可读存储介质上存储有处理程序,处理程序被处理器执行时,实现上述的用于实现8K 120fps实时编码优化的方法。
本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。

Claims (10)

1.一种用于实现8K 120fps实时编码优化的方法,通过缓冲区和多线程机制,多个编码实例对不同GOP分片并行编码,其特征在于,包括以下步骤:
步骤S1,创建一个输入内存池用于存储帧地址,同时将用于接收并处理输入帧的编码器进行初始化;
步骤S2,所述编码器通过GOP内存缓冲池中GOP节点接收所述输入帧的所述帧地址,并将所述帧地址放入所述GOP节点的帧列表中,直到所述帧列表的长度达到预设的GOP长度;
步骤S3,所述GOP缓冲区根据配置的NUMA节点数量X,创建X个并行实例子线程,且每个所述实例子线程绑定一个NUMA节点,对所述GOP节点中的所述帧地址对应的所述输入帧进行编码,形成编码帧写入到所述输出缓冲区;
步骤S4,对于所述输出缓冲区的所述编码帧,通过子线程对于所述编码帧的DTS值进行矫正排序,同时主线程对所述输出缓冲区中的取出编码后的所述编码帧;
步骤S5,对取出的所述编码帧进行封装并输出。
2.根据权利要求1所述的用于实现8K 120fps实时编码优化的方法,其特征在于,在步骤S2中,所述编码器通过GOP内存缓冲池中GOP节点接收所述输入帧的所述帧地址,并将所述帧地址放入所述GOP节点的帧列表中,直到所述帧列表的长度达到预设的GOP长度,进一步包括,
步骤S201,从所述输入内存池中提取一个所述帧地址,将待编码的所述视频帧存储到与所述帧地址关联的内存位置并作为所述输入帧通过所述编码器进行编码;
步骤S202,从所述编码器中的所述GOP缓冲池提取一个空闲的所述GOP节点,将所述输入帧的帧地址直接放入所述GOP节点的所述帧列表中,直到达到所述GOP节点预定的长度,所述GOP节点进入所述GOP缓冲区进行编码处理,并从所述GOP缓冲池中提取空闲的所述GOP节点供下一个所述输入帧使用。
3.根据权利要求书2所述的用于实现8K 120fps实时编码优化的方法,其特征在于,在步骤S3中,所述GOP缓冲区根据配置的NUMA节点数量X,创建X个并行实例子线程,且每个所述实例子线程绑定一个NUMA节点,对所述GOP节点中的所述帧地址对应的所述输入帧进行编码,形成编码帧写入到所述输出缓冲区,进一步包括,
步骤S301,当所述GOP节点进入所述GOP缓冲区进行编码处理,所述GOP缓冲区唤醒所述实例子线程对所述GOP节点进行并行编码;
步骤S302,每个所述实例子线程从所述GOP缓冲区提取一个所述GOP节点,并开始进行编码;
步骤S303,当所述实例子线程编码完一个所述输入帧,将所述输入帧对于的帧地址放回所述输入内存池中,标记为空闲;
步骤S304,当所述实例子线程完成对整个所述GOP节点中所有所述帧地址对应的所述输入帧编码后,将所述编码帧写入所述输出缓冲区,并将所述GOP节点放回所述GOP缓冲池作为空闲的所述GOP节点继续使用。
4.根据权利要求书3所述的用于实现8K 120fps实时编码优化的方法,其特征在于,在步骤S4中,对于所述输出缓冲区的所述编码帧,通过子线程对于所述编码帧的DTS值进行矫正排序,进一步包括,
步骤S411,所述子线程检测所述输出缓冲区中的所述编码帧,当所述输出缓冲区无数据则等待新的所述编码帧进入;
步骤S412,当所述输出缓冲区有新的所述编码帧的时候,对所述编码帧进行DTS矫正,并根据矫正后的所述DTS进行递增排序,确保在头部的所述编码帧的所述DTS最小;
步骤S413,继续检测所述输出缓冲区,重复步骤S411和步骤S413。
5.根据权利要求书4所述的用于实现8K 120fps实时编码优化的方法,其特征在于,在步骤S4中,所述同时主线程对所述输出缓冲区中的取出编码后的所述编码帧,进一步包括,
步骤S421,根据处理的所述头部的所述编码帧的所述DTS作为初始的预期DTS;
步骤S422,检索头部的所述编码帧获取所述DTS;
步骤S423,将头部的所述编码帧的所述DTS与所述预期DTS进行对比:
当所述编码帧的所述DTS等于所述预期DTS,直接取出该帧,进行下一步;当所述编码帧的所述DTS大于所述预期DTS,则不取出帧,等待超过2个所述GOP长度仍然无匹配的所述视频帧的所述DTS,直接取出所述视频帧并更新所述预期DTS为这个所述编码帧的所述DTS;当所述编码帧的所述DTS小于所述预期DTS,则更新所述预期DTS为这个所述编码帧的所述DTS,且直接取出;
步骤S424,当所述视频帧被取出后,所述预期DTS=所述视频帧的所述DTS+1;并返回所述步骤S422继续操作。
6.一种用于实现8K 120fps实时编码优化的系统,执行如权利要求1至5中任意一项所述的用于实现8K 120fps实时编码优化的方法,其特征在于,包括,
帧接收管理模块,接收待编码的视频帧,从输入内存池中提取一个帧地址,将所述视频帧存储到与所述帧地址关联的内存位置并作为所述输入帧通过编码处理模块进行编码;
编码处理模块,通过GOP内存缓冲池接收所述输入帧的所述帧地址并其存入GOP节点的帧列表中,当所述帧列表的长度达到预设的GOP长度后,GOP缓冲区唤醒多个实例子线程进行并行编码形成编码帧,并将所述编码帧存入输出缓冲区,并通过子线程对其DTS进行矫正排序,最后由主线程从所述输出缓冲区取出所述编码帧;
封装输出模块,提取出的所述编码帧按照预设的格式和结构进行封装后输出视频流。
7.根据权利要求6所述的用于实现8K 120fps实时编码优化的系统,其特征在于,
所述帧接收管理模块包括视频帧接收单元和帧地址分配单元;
所述视频帧接收单元用于接收待编码的所述视频帧;
所述帧地址分配单元用于从所述输入内存池中提取一个所述帧地址,将待编码的所述视频帧存储到与所述帧地址关联的内存位置并作为所述输入帧通过所述编码器进行编码。
8.根据权利要求7所述的用于实现8K 120fps实时编码优化的系统,其特征在于,所述编码处理模块包括输入帧缓冲分配单元、实例子线程启动单元、实例子线程编码单元和帧输出排序调整单元;
所述输入帧缓冲分配单元,从所述GOP缓冲池提取一个空闲的所述GOP节点,将所述输入帧的帧地址直接放入所述GOP节点的所述帧列表中;
所述实例子线程启动单元,当所述GOP节点的帧列表长度达到所述GOP节点预定的长度,所述GOP节点进入所述GOP缓冲区,所述GOP缓冲区唤醒实例子线程对所述GOP节点进行并行编码,并从所述GOP缓冲池中提取空闲的所述GOP节点供下一个所述输入帧使用
所述实例子线程编码单元,每个所述实例子线程从所述GOP缓冲区提取一个所述GOP节点,并开始进行编码;当所述实例子线程编码完一个所述输入帧,将所述输入帧对于的帧地址放回所述输入内存池中,标记为空闲;当所述实例子线程完成对整个所述GOP节点中所有所述帧地址对应的所述输入帧编码后,将所述编码帧写入所述输出缓冲区,并将所述GOP节点放回所述GOP缓冲池作为空闲的所述GOP节点继续使用;
所述帧输出排序调整单元,对于所述输出缓冲区的所述编码帧,通过子线程对于所述编码帧的DTS值进行矫正排序,同时主线程对所述输出缓冲区中的取出编码后的所述编码帧。
9.一种用于实现8K 120fps实时编码优化的设备,其特征在于,包括:
存储器,所述存储器中存储有计算机可读指令;
处理器,所述计算机可读指令被所述处理器执行时,实现如权利要求1至5中任意一项所述的用于实现8K 120fps实时编码优化的方法。
10.一种用于实现8K 120fps实时编码优化的可读存储介质,其特征在于,包括:所述可读存储介质上存储有处理程序,所述处理程序被处理器执行时,实现如权利要求1至5中任意一项所述的用于实现8K 120fps实时编码优化的方法。
CN202311043125.8A 2023-08-18 2023-08-18 一种用于实现8K 120fps实时编码优化的方法及系统 Pending CN117061765A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311043125.8A CN117061765A (zh) 2023-08-18 2023-08-18 一种用于实现8K 120fps实时编码优化的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311043125.8A CN117061765A (zh) 2023-08-18 2023-08-18 一种用于实现8K 120fps实时编码优化的方法及系统

Publications (1)

Publication Number Publication Date
CN117061765A true CN117061765A (zh) 2023-11-14

Family

ID=88662273

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311043125.8A Pending CN117061765A (zh) 2023-08-18 2023-08-18 一种用于实现8K 120fps实时编码优化的方法及系统

Country Status (1)

Country Link
CN (1) CN117061765A (zh)

Similar Documents

Publication Publication Date Title
US20190075307A1 (en) Method of generating media file and storage medium storing media file generation program
US8699581B2 (en) Image processing device, image processing method, information processing device, and information processing method
RU2014144282A (ru) Буферизация видео с низкой задержкой при кодировании видео
JPH11243542A (ja) マルチメディア情報編集装置
GB2336267A (en) Image processor controlling B-picture memory
US11245937B2 (en) Method and system for zero overhead parallel entropy decoding
US20170105010A1 (en) Receiver-side modifications for reduced video latency
US11146799B2 (en) Method and apparatus for decoding video bitstream, method and apparatus for generating video bitstream, storage medium, and electronic device
TW201143443A (en) Method and system for 3D video decoding using a tier system framework
CN110049347B (zh) 在直播界面配置图像的方法、系统、终端和装置
JP2001204032A (ja) Mpeg復号装置
US20170019675A1 (en) Parallel decoder with inter-prediction of video pictures
CN112422985B (zh) 适用于jpeg的多核并行硬件编码方法和装置
WO2016161678A1 (zh) 一种视频编码和解码的方法、装置和处理系统
CN105379281B (zh) 用于使用图形处理器的视频解码的图片参考控制
TWI316812B (zh)
CN117061765A (zh) 一种用于实现8K 120fps实时编码优化的方法及系统
US11025934B2 (en) Methods and apparatus for decoding video using re-ordered motion vector buffer
US8428444B2 (en) Video server and seamless playback method
TW202101995A (zh) 圖像編碼裝置、圖像解碼裝置、圖像編碼方法、圖像解碼方法
JP2016103808A (ja) 画像処理装置、画像処理方法及びプログラム
US7386651B2 (en) System, method, and apparatus for efficiently storing macroblocks
US20240048734A1 (en) Image processing method and image processing device for enhancing image processing efficiency
US20240048740A1 (en) Image processing method and image processing device for enhancing image processing efficiency
CN115209079B (zh) 一种适用于高速摄像机长时间存储数据的方法和设备

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