CN117857802A - 视频流编码控制及传输方法、装置、终端设备和存储介质 - Google Patents
视频流编码控制及传输方法、装置、终端设备和存储介质 Download PDFInfo
- Publication number
- CN117857802A CN117857802A CN202211213671.7A CN202211213671A CN117857802A CN 117857802 A CN117857802 A CN 117857802A CN 202211213671 A CN202211213671 A CN 202211213671A CN 117857802 A CN117857802 A CN 117857802A
- Authority
- CN
- China
- Prior art keywords
- encoder
- encoders
- coding
- frame
- encoding
- 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
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 83
- 238000000034 method Methods 0.000 title claims abstract description 56
- 238000004590 computer program Methods 0.000 claims description 25
- 230000001360 synchronised effect Effects 0.000 claims description 11
- 238000012545 processing Methods 0.000 abstract description 8
- 230000000903 blocking effect Effects 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000007423 decrease Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Abstract
本申请涉及视频处理技术领域,提出一种视频流编码控制及传输方法、装置、终端设备和存储介质。该方法包括:确定多路视频流传输使用的多个编码器;向该多个编码器中的每个编码器分别下发各自的I帧编码时间段,以控制每个编码器在各自的I帧编码时间段内执行I帧的编码操作,并在编码完成后将数据包传输至网络;其中,各个编码器的I帧编码时间段不完全相同。采用该方法能够在一定程度上错开各个编码器对I帧进行编码的时间,从而减少同一时间点可能在网络上传输的I帧的数量,控制网络数据传输的峰值带宽。另外,这种操作方式没有控制单路视频流的峰值带宽,因此也不会出现I帧传输变慢,视频画面延迟和卡顿等实时性问题。
Description
技术领域
本申请涉及视频处理技术领域,尤其涉及一种视频流编码控制及传输方法、装置、终端设备和存储介质。
背景技术
通常来说,视频流的一个画面组可以被划分为I帧、P帧和B帧,其中I帧的数据量要远大于P帧和B帧。目前,当多路视频流在同一个网络上编码传输时,很容易出现多个视频流的I帧同时在网络上传输的情况,这会导致网络的数据传输量瞬间增大,产生码流的突刺,进而出现丢包等问题。
针对上述问题,现有技术一般是在数据传输前使用码流平滑器,从而将数据包平滑地发送到网络上。然而,采用这种方式会控制单路视频流的峰值带宽,进而导致I帧的传输变慢,可能出现视频画面延迟和卡顿等实时性问题。
发明内容
有鉴于此,本申请实施例提供了一种视频流编码控制及传输方法、装置、终端设备和存储介质,能够在不影响实时性的情况下,控制网络数据传输的峰值带宽。
本申请实施例的第一方面提供了一种视频流编码控制及传输方法,包括:
确定多路视频流传输使用的多个编码器;
向所述多个编码器中的每个编码器分别下发各自的I帧编码时间段,以控制每个所述编码器在各自的I帧编码时间段内执行I帧的编码操作,并在编码完成后将数据包传输至网络;其中,各个所述编码器的I帧编码时间段不完全相同。
在本申请实施例中,首先确定多路视频流传输使用的多个编码器,然后分别向每个编码器下发各自的I帧编码时间段,以控制每个编码器在各自的I帧编码时间段内执行I帧的编码操作,且在编码完成后将数据包传输至网络。在上述过程中,由于各个编码器的I帧编码时间段不完全相同,故能够在一定程度上错开各个编码器对I帧进行编码的时间,从而减少同一时间点可能在网络上传输的I帧的数量,控制网络数据传输的峰值带宽。另外,这种操作方式没有控制单路视频流的峰值带宽,因此也不会出现I帧传输变慢,视频画面延迟和卡顿等实时性问题。
在本申请实施例的一种实现方式中,在确定多路视频流传输使用的多个编码器之后,还可以包括:
将所述多个编码器划分为至少一个编码器组;其中,每个所述编码器组中的各个编码器的I帧编码时间段各不相同。
具体的,所述将所述多个编码器划分为至少一个编码器组,可以包括:
接收所述多个编码器中的每个编码器分别上报的设备属性信息;
根据所述设备属性信息,将所述多个编码器划分为至少一个编码器组。
进一步的,所述设备属性信息包括编码器的网络信息、编码帧率以及编码码率;所述根据所述设备属性信息,将所述多个编码器划分为至少一个编码器组,可以包括:
根据所述多个编码器中的每个编码器的网络信息和编码帧率,将所述多个编码器划分为至少一个初始分组;
针对每个所述初始分组,根据所述初始分组中每个编码器的编码帧率和编码码率,将所述初始分组划分为至少一个编码器组。
更进一步的,所述网络信息包括IP地址、子网掩码和网关地址;所述根据所述多个编码器中的每个编码器的网络信息和编码帧率,将所述多个编码器划分为至少一个初始分组,可以包括:
根据所述多个编码器中的每个编码器的IP地址和子网掩码,确定每个所述编码器的所处子网;
将所述多个编码器中所处子网、网关地址以及编码帧率都一致的编码器划分入相同的初始分组。
更进一步的,所述根据所述初始分组中每个编码器的编码帧率和编码码率,将所述初始分组划分为至少一个编码器组,可以包括:
统计所述初始分组中包含的编码器数量以及所述初始分组中各个编码器的最大编码码率;
根据所述编码器数量、所述最大编码码率、所述初始分组中每个编码器的编码帧率和编码码率,计算得到分组数量;
将所述初始分组中的各个编码器划分为所述分组数量的编码器组。
在本申请实施例的一种实现方式中,在确定多路视频流传输使用的多个编码器之后,还可以包括:
向各个所述编码器下发同步信号,以控制各个所述编码器执行编码操作的时间同步;
所述控制每个所述编码器在各自的I帧编码时间段内执行I帧的编码操作,具体可以为:
控制每个所述编码器从同步的时间点开始,在每个同步周期内只允许在各自的I帧编码时间段内执行I帧的编码操作。
本申请实施例的第二方面提供了一种视频流编码控制及传输装置,包括:
编码器确定模块,用于确定多路视频流传输使用的多个编码器;
编码时段下发模块,用于向所述多个编码器中的每个编码器分别下发各自的I帧编码时间段,以控制每个所述编码器在各自的I帧编码时间段内执行I帧的编码操作,并在编码完成后将数据包传输至网络;其中,各个所述编码器的I帧编码时间段不完全相同。
本申请实施例的第三方面提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本申请实施例的第一方面提供的视频流编码控制及传输方法。
本申请实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如本申请实施例的第一方面提供的视频流编码控制及传输方法。
本申请实施例的第五方面提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行如本申请实施例的第一方面提供的视频流编码控制及传输方法。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
图1是本申请实施例提供的一种视频流编码控制及传输系统的示意图;
图2是本申请实施例提供的一种视频流编码控制及传输方法的流程图;
图3是采用一个管理节点的编码器分组示意图;
图4是采用多个管理节点的编码器分组示意图;
图5是根据设备属性信息完成编码器分组的操作示意图;
图6是某编码器组具有的各个编码器在错时编码传输过程中的报文发送示意图;
图7是图6所示的编码器组占用的网络传输带宽的示意图;
图8是本申请实施例提供的一种视频流编码控制及传输装置的结构示意图;
图9是本申请实施例提供的一种终端设备的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
目前,在多路视频流传输的过程中,如果多个视频流的I帧同时在网络上传输,则会导致网络的数据传输量瞬间增大,产生码流的突刺,进而出现丢包等问题。针对该问题,现有技术一般在数据传输前使用码流平滑器,通过控制单路视频流的峰值带宽,从而将数据包平滑地发送到网络上。然而,采用这种方式会导致I帧的传输变慢,可能出现视频画面延迟和卡顿等实时性问题。
有鉴于此,本申请实施例提供了一种视频流编码控制及传输方法、装置、终端设备和存储介质,能够在不影响实时性的情况下,控制网络数据传输的峰值带宽。关于本申请实施例更具体的技术实现细节,请参照下文所述的各个实施例。
请参阅图1,示出了本申请实施例提供的一种视频流编码控制及传输系统。该图1中,该系统包含一个管理节点和多个编码器,可用于执行多路视频流的编码传输工作。其中,管理节点作为控制中心,是本申请各个方法实施例的执行主体,该管理节点可以通过无线或有线的方式分别和每个编码器进行数据交互。在实际操作中,该管理节点可以是各种类型的终端设备或者服务器,例如手机、平板电脑、台式电脑、编码器或者其它具有编码单元的终端设备,等等。特别的,该管理节点自身也可以是一个编码器,共同执行多路视频流的编码传输工作。这里所述的编码器是指具有视频编码单元的任意类型的设备,例如,可以是H264编码器,也可以是H265编码器,一个编码器可以是一个独立的设备(例如某个相机),或者一个设备中也可以有多个编码器(例如一个多路视频编码设备中包含多个编码器)。关于图1所示系统的具体工作原理和技术实现细节,请参照下文所述的方法实施例。
请参阅图2,示出了本申请实施例提供的一种视频流编码控制及传输方法,包括:
201、确定多路视频流传输使用的多个编码器;
本方法实施例提供的是一种中心控制的错时数据传输方法,该中心是指各个编码器的管理节点,也即本方法实施例的执行主体。当执行多路视频流的编码传输任务时,首先确定使用的多个编码器,其中每个编码器负责执行一路视频流的编码工作,在编码完成后将得到的数据包发送至同一个网络进行传输。该多路视频流至少包含两路视频流,对应的该多个编码器也至少包含两个编码器。这些编码器之间可以通过有线或无线的方式进行数据交互,该管理节点既可以是这些编码器中的任意一个编码器,也可以是与这些编码器连接的某个外部终端设备。而在实际操作中,该管理节点可以通过多个编码器进行自动选举(例如可以使用Bully算法、Raft算法或者ZAB算法等选举算法)得到,也可以人工指定得到。
202、向所述多个编码器中的每个编码器分别下发各自的I帧编码时间段,以控制每个所述编码器在各自的I帧编码时间段内执行I帧的编码操作,并在编码完成后将数据包传输至网络;其中,各个所述编码器的I帧编码时间段不完全相同。
管理节点会生成每个编码器分别对应的I帧编码时间段,然后向每个编码器分别下发各自的I帧编码时间段。每个编码器在接收到自己的I帧编码时间段之后,只允许在该I帧编码时间段内执行I帧的编码操作(也即在I帧编码时间段以内执行I帧的编码操作,在I帧编码时间段以外执行P帧或B帧的编码操作),并在编码完成后将得到的数据包传输至同一网络。管理节点可以在一定程度上错开各个编码器的I帧编码时间,也即令各个编码器的I帧编码时间段不完全相同,这样能够减少同一时间点可能在网络上传输的I帧的数据量,控制网络数据传输的峰值带宽。另外,为各个编码器下发的I帧编码时间段的长度可以相同,也可以不同,只需保证每个编码器在其I帧编码时间段内能够完成一个I帧的编码操作即可。
在本申请实施例的一种实现方式中,在确定多路视频流传输使用的多个编码器之后,还可以包括:
向各个所述编码器下发同步信号,以控制各个所述编码器执行编码操作的时间同步;
所述控制每个所述编码器在各自的I帧编码时间段内执行I帧的编码操作,具体可以为:
控制每个所述编码器从同步的时间点开始,在每个同步周期内只允许在各自的I帧编码时间段内执行I帧的编码操作。
在实际操作中,由于各个编码器是相互独立的设备,其编码时间并不同步,这会导致错时传输的准确率下降,因此,管理节点可以预先对各个编码器的编码时间进行同步处理,以提高错时传输的准确率。具体的,各个编码器可以通过NTP、PTP和syncE等技术实现时间同步和频率同步,管理节点可以分别向每个编码器下发同步信号,以控制各个编码器执行编码操作的时间同步。每个编码器在接收到同步信号后开始同步当前的编码行为,从同步的时间点开始,在每个同步周期内都只允许在自己的I帧编码时间段内执行I帧的编码操作。
在本申请实施例的一种实现方式中,在确定多路视频流传输使用的多个编码器之后,还可以包括:
将所述多个编码器划分为至少一个编码器组;其中,每个所述编码器组中的各个编码器的I帧编码时间段各不相同。
本申请实施例的核心思想是错开多个编码器的I帧编码时间,防止同时编码传输I帧导致网络峰值带宽过高的问题。而为了提高错开I帧编码时间的效果,可以先对多个编码器进行分组,得到至少一个编码器组,且令每个编码器组中的各个编码器的I帧编码时间段各不相同(即I帧编码时间段无相交或重叠的部分)。在实际操作中,可以人工指定分组,也可以由管理节点按照设定的方式完成自动分组。由于在分组后,只要求同一编码器组的编码器的I帧编码时间段各不相同,而不同编码器组的编码器的I帧编码时间段是可以相交或重叠的,因此在进行编码时间的同步处理时,只需要对同一个编码器组内的各个编码器进行时间同步即可,而不同编码器组的编码器之间则无时间同步的硬性要求。另外,由于不同编码器组之间可以是相互独立的,因此可以设置一个管理节点同时管理所有的编码器组,也可以每个编码器组分别设置一个管理节点。
示例性的,如图3所示,多个编码器被划分为编码器组1、编码器组2和编码器组3,其中编码器组1中的编码器1作为管理节点,负责控制所有编码器组的所有编码器的错时编码传输工作。或者,如图4所示,多个编码器被划分为编码器组1、编码器组2和编码器组3,其中,编码器组1中的编码器1作为编码器组1的管理节点,负责控制编码器组1的所有编码器的错时编码传输工作;编码器组2中的编码器4作为编码器组2的管理节点,负责控制编码器组2的所有编码器的错时编码传输工作;编码器组3中的编码器7作为编码器组3的管理节点,负责控制编码器组3的所有编码器的错时编码传输工作。
在对多个编码器进行分组后,同一个编码器组内的各个编码器压缩I帧的时间都是错开的,但不同编码器组之间是相互独立的,也即不同编码器组的编码器压缩I帧的时间可能是相交或重叠的。通过这样设置,假设有100个编码器分成10个组,则在同一个时间点,最多只会有10个编码器同时压缩I帧,而不会出现100个编码器同时压缩I帧的情况,因此能够有效减少同一时间点可能在网络上传输的I帧的数据量,控制网络数据传输的峰值带宽。
具体的,所述将所述多个编码器划分为至少一个编码器组,可以包括:
(1)接收所述多个编码器中的每个编码器分别上报的设备属性信息;
(2)根据所述设备属性信息,将所述多个编码器划分为至少一个编码器组。
如果采用管理节点自动分组的方式,则可以由每个编码器分别向管理节点上报各自的设备属性信息,管理节点在接收到每个编码器上报的设备属性信息之后,可以根据这些设备属性信息合理地完成编码器的分组。具体的,每个编码器上报的设备属性信息可以包括但不限于:编码器所处的网络信息、编码帧率和编码码率等。管理节点可以按照设定的分组策略完成编码器的分组,例如处于同一网络分支的编码器优先分入同一编码器组,编码帧率或者编码码率接近的编码器优先分入同一编码器组,等等。相应的示意图如图5所示,管理节点在接收到各个编码器上报的网络信息之后,可以根据不同的网段进行编码器的分组。
进一步的,所述设备属性信息包括编码器的网络信息、编码帧率以及编码码率;所述根据所述设备属性信息,将所述多个编码器划分为至少一个编码器组,可以包括:
(1)根据所述多个编码器中的每个编码器的网络信息和编码帧率,将所述多个编码器划分为至少一个初始分组;
(2)针对每个所述初始分组,根据所述初始分组中每个编码器的编码帧率和编码码率,将所述初始分组划分为至少一个编码器组。
管理节点在进行编码器分组时,可以分两步操作,第一步是按照每个编码器的网络信息和编码帧率完成预分组,此时会将多个编码器划分为至少一个初始分组。第二步是按照每个编码器的编码帧率和编码码率,将每个初始分组分别划分为至少一个编码器组。上述第一步操作主要可以考虑网络信息和编码帧率是否一致,而第二步操作主要可以考虑每个编码器组的编码能力是否较为均衡。
更进一步的,所述网络信息包括IP地址、子网掩码和网关地址;所述根据所述多个编码器中的每个编码器的网络信息和编码帧率,将所述多个编码器划分为至少一个初始分组,可以包括:
(1)根据所述多个编码器中的每个编码器的IP地址和子网掩码,确定每个所述编码器的所处子网;
(2)将所述多个编码器中所处子网、网关地址以及编码帧率都一致的编码器划分入相同的初始分组。
在按照每个编码器的网络信息和编码帧率完成预分组时,首先可以根据每个编码器的IP地址和子网掩码,分别确定每个编码器的所处子网;然后,将所处子网、网关地址以及编码帧率都一致的编码器划分到相同的初始分组中。其中,将所处子网和网关地址一致的编码器划分到同一初始分组,主要是考虑到这些编码器在整个通信网络拓扑结构中处于同一网络分支,它们相互进行数据传输的时延较小,能够更准确地进行时间同步,而且它们使用的是相同的网络资源,属于同一网络分支,将它们编排到同一分组中能够尽量错开它们的I帧编码时间,有利于平滑该网络分支执行数据传输时的峰值带宽。将编码帧率一致的编码器划分到同一初始分组,主要是考虑到这些编码器完成I帧编码所需的时间一致,因此给这些编码器下发的I帧编码时间段的长度可以是相同的,这样能够简化确定同一分组内各个编码器的I帧编码时间段的操作。例如,如果将帧率为25的10个编码器划分到同一个编码器组,则每个编码器完成I帧编码所需的时间都是40ms,因此可以令每个编码器的I帧编码时间段的长度相同(例如都为40ms或者50ms,只要不小于40ms即可),此时可以方便地确定每个编码器的I帧编码时间段,如第一个编码器是0ms-39ms,第二个编码器是40ms-79ms,第三个编码器是80ms-119ms,以此类推。需要说明的是,将帧率相同的编码器划分到同一分组并不是必须的,例如编码器1(帧率25)和编码器2(帧率50)可以划分到同一分组,针对这种情况,假设编码器1在1秒内会编码1个I帧,则编码器2在1秒内会编码2个I帧,此时在1秒的时间周期内需要为编码器1分配一个时间片段,为编码器2分配两个时间片段,每个时间片段的长度可以是20ms。
更进一步的,所述根据所述初始分组中每个编码器的编码帧率和编码码率,将所述初始分组划分为至少一个编码器组,可以包括:
(1)统计所述初始分组中包含的编码器数量以及所述初始分组中各个编码器的最大编码码率;
(2)根据所述编码器数量、所述最大编码码率、所述初始分组中每个编码器的编码帧率和编码码率,计算得到分组数量;
(3)将所述初始分组中的各个编码器划分为所述分组数量的编码器组。
在将某个初始分组进一步划分为最终的编码器组时,首先可以统计该初始分组中包含的编码器数量以及该初始分组中各个编码器的最大编码码率,然后根据编码器数量、最大编码码率、该初始分组中每个编码器的编码帧率和编码码率,计算得到分组数量,最后按照该分组数量将该初始分组划分为各个编码器组。
示例性的,假设该初始分组包含的编码器数量为DevNum;该初始分组中每个编码器的编码帧率记为FPS;该初始分组中各个编码器的最大编码码率作为基准码率记为max(Bitrate1,Bitrate2,…,BitrateDevNum),其中Bitrate1表示该初始分组中第一个编码器的编码码率,Bitrate2表示该初始分组中第二个编码器的编码码率,以此类推;那么,可以根据以下公式计算得到该初始分组的分组数量GroupNum:
在计算得到分组数量GroupNum之后,即可根据该分组数量GroupNum将该初始分组划分为各个编码器组。例如,如果该初始分组包含10个编码器,而该分组数量是2,则可以将该初始分组的10个编码器进一步划分为2个编码器组,在具体分组时可以考虑每个编码器组包含的编码器的数量较为接近,或者考虑每个编码器组包含的编码器的编码码率之和较为接近。通常来说,若某个编码器的编码码率较大,则其编码获得的I帧也较大,因此在分组时可以尽量平衡各个编码器组包含的编码器的编码码率之和,这样不同的编码器组在压缩I帧时产生的数据传输量较为接近,能够进一步平滑网络数据传输的峰值带宽。
另外,对于某个编码器组内部来说,可以将该编码器组内各个编码器的最高编码码率作为基准码率,如果该编码器组内有其它N(N≥2)个编码器的编码码率之和不超过该基准码率,则该N个编码器可以当做一个编码器进行编排。例如,假设某个编码器组内,编码码率最高的编码器的编码码率是6Mbps,如果该编码器组内有其它2个编码器的编码码率是3Mbps,由于该2个编码器的编码码率之和不超过6Mbps,因此可以将该2个编码器看作同一个编码器进行编排,即为该2个编码器分配同一个I帧编码时间段。虽然这2个编码器可能同时编码I帧,但由于其编码码率较小,同时编码I帧产生的数据传输量和码率最高的编码器编码I帧时产生的数据传输量其实是等同的,故这样操作能够平滑每个编码器组内部进行数据传输时的码流。
在本申请实施例中,首先确定多路视频流传输使用的多个编码器,然后分别向每个编码器下发各自的I帧编码时间段,以控制每个编码器在各自的I帧编码时间段内执行I帧的编码操作,且在编码完成后将数据包传输至网络。在上述过程中,由于各个编码器的I帧编码时间段不完全相同,故能够在一定程度上错开各个编码器对I帧进行编码的时间,从而减少同一时间点可能在网络上传输的I帧的数量,控制网络数据传输的峰值带宽。另外,这种操作方式没有控制单路视频流的峰值带宽,因此也不会出现I帧传输变慢,视频画面延迟和卡顿等实时性问题。
为便于理解本申请实施例提供的视频流编码控制及传输方法,以下列举一个实际的应用场景。
假设编码器组1的同步时间是2022/09/19 12:00:00.000,同步周期是1s,其包含的各个编码器的编码帧率是25。由于每个编码器完成I帧编码所需的时间都是40ms,故可以设置每个编码器的I帧编码时间段的长度都为40ms,具体如下:
编码器1:0ms-39ms
编码器2:40ms-79ms
编码器3:80ms-119ms
编码器4:120ms-159ms
编码器5:160ms-199ms
…
编码器25:960ms-999ms
由于每个同步周期1s内最多可以划分25个40ms长度的时间片段,而每个时间片段可以作为一个编码器的I帧编码时间段,因此该编码器组1最多可以设置25个编码器,此时每个编码器的I帧编码时间段在一个同步周期内是一个40ms的时间片段;而为了保证最小的错时编码传输效果,该编码器组1最少需要设置2个编码器,此时每个编码器的I帧编码时间段在一个同步周期内是多个错开的40ms的时间片段,例如编码器1的I帧编码时间段是:0ms-39ms,80ms-119ms,160ms-199ms…,编码器2的I帧编码时间段是:40ms-79ms,120ms-159ms,200ms-239ms…。
以编码器组1具有4个编码器(编码器1、编码器2、编码器3和编码器4)作为示例,其各个编码器在错时编码传输过程中的报文发送示意图如图6所示。在图6中,编码器1、编码器2、编码器3和编码器4依次在各自的I帧编码时间段内执行I帧的编码操作。每个同步周期都被划分为4个时间片段,其中时间片段1是编码器1的I帧编码时间段,在时间片段1内编码器1执行I帧的编码操作,而编码器2、编码器3和编码器4都执行P帧或B帧的编码操作,因此在时间片段1内编码器1发送的数据量最大,而编码器2、编码器3和编码器4发送的数据量较小。同理,时间片段2是编码器2的I帧编码时间段,在时间片段2内编码器2执行I帧的编码操作,而编码器1、编码器3和编码器4都执行P帧或B帧的编码操作,因此在时间片段2内编码器2发送的数据量最大,而编码器1、编码器3和编码器4发送的数据量较小,以此类推。
相应的,编码器组1占用的网络传输带宽示意如图7所示。通过图7可以看出,编码器组1在各个时间点占用的网络传输带宽基本是相同的,码流传输的平滑度很高。显然,针对每个编码器组,都可以通过与编码器组1相同的方式平滑各自的码流传输,从而可以平滑整个网络的码流传输,控制网络数据传输的峰值带宽。
综上所述,本申请通过将多个编码器分组,并控制组内各个编码器错时对I帧进行编码传输,能够在不影响实时性的情况下,提高码流传输的平滑度,控制网络数据传输的峰值带宽,进而提升视频流播放的流畅性。
应理解,上述各个实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
上面主要描述了一种视频流编码控制及传输方法,下面将对一种视频流编码控制及传输装置进行描述。
请参阅图8,本申请实施例中一种视频流编码控制及传输装置的一个实施例包括:
编码器确定模块801,用于确定多路视频流传输使用的多个编码器;
编码时段下发模块802,用于向所述多个编码器中的每个编码器分别下发各自的I帧编码时间段,以控制每个所述编码器在各自的I帧编码时间段内执行I帧的编码操作,并在编码完成后将数据包传输至网络;其中,各个所述编码器的I帧编码时间段不完全相同。
在本申请实施例的一种实现方式中,所述视频流编码控制及传输装置还可以包括:
分组模块,用于将所述多个编码器划分为至少一个编码器组;其中,每个所述编码器组中的各个编码器的I帧编码时间段各不相同。
具体的,所述分组模块可以包括:
设备信息接收单元,用于接收所述多个编码器中的每个编码器分别上报的设备属性信息;
分组单元,用于根据所述设备属性信息,将所述多个编码器划分为至少一个编码器组。
进一步的,所述设备属性信息包括编码器的网络信息、编码帧率以及编码码率;所述分组单元可以包括:
第一分组子单元,用于根据所述多个编码器中的每个编码器的网络信息和编码帧率,将所述多个编码器划分为至少一个初始分组;
第二分组子单元,用于针对每个所述初始分组,根据所述初始分组中每个编码器的编码帧率和编码码率,将所述初始分组划分为至少一个编码器组。
更进一步的,所述网络信息包括IP地址、子网掩码和网关地址;所述第一分组子单元可以包括:
子网确定子单元,用于根据所述多个编码器中的每个编码器的IP地址和子网掩码,确定每个所述编码器的所处子网;
初始分组子单元,用于将所述多个编码器中所处子网、网关地址以及编码帧率都一致的编码器划分入相同的初始分组。
更进一步的,所述第二分组子单元可以包括:
参数统计子单元,用于统计所述初始分组中包含的编码器数量以及所述初始分组中各个编码器的最大编码码率;
分组数量计算子单元,用于根据所述编码器数量、所述最大编码码率、所述初始分组中每个编码器的编码帧率和编码码率,计算得到分组数量;
正式分组子单元,用于将所述初始分组中的各个编码器划分为所述分组数量的编码器组。
在本申请实施例的一种实现方式中,所述视频流编码控制及传输装置还可以包括:
同步控制模块,用于向各个所述编码器下发同步信号,以控制各个所述编码器执行编码操作的时间同步;
所述编码时段下发模块具体可以用于:
控制每个所述编码器从同步的时间点开始,在每个同步周期内只允许在各自的I帧编码时间段内执行I帧的编码操作。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如图2表示的任意一种视频流编码控制及传输方法。
本申请实施例还提供一种计算机程序产品,当该计算机程序产品在终端设备上运行时,使得终端设备执行如图2表示的任意一种视频流编码控制及传输方法。
图9是本申请一实施例提供的终端设备的示意图。如图9所示,该实施例的终端设备9包括:处理器90、存储器91以及存储在所述存储器91中并可在所述处理器90上运行的计算机程序92。所述处理器90执行所述计算机程序92时实现上述各个视频流编码控制及传输方法的实施例中的步骤,例如图2所示的步骤201至202。或者,所述处理器90执行所述计算机程序92时实现上述各装置实施例中各模块/单元的功能,例如图8所示模块801至802的功能。
所述计算机程序92可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器91中,并由所述处理器90执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序92在所述终端设备9中的执行过程。
所称处理器90可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器91可以是所述终端设备9的内部存储单元,例如终端设备9的硬盘或内存。所述存储器91也可以是所述终端设备9的外部存储设备,例如所述终端设备9上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器91还可以既包括所述终端设备9的内部存储单元也包括外部存储设备。所述存储器91用于存储所述计算机程序以及所述终端设备所需的其他程序和数据。所述存储器91还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种视频流编码控制及传输方法,其特征在于,包括:
确定多路视频流传输使用的多个编码器;
向所述多个编码器中的每个编码器分别下发各自的I帧编码时间段,以控制每个所述编码器在各自的I帧编码时间段内执行I帧的编码操作,并在编码完成后将数据包传输至网络;其中,各个所述编码器的I帧编码时间段不完全相同。
2.如权利要求1所述的方法,其特征在于,在确定多路视频流传输使用的多个编码器之后,还包括:
将所述多个编码器划分为至少一个编码器组;其中,每个所述编码器组中的各个编码器的I帧编码时间段各不相同。
3.如权利要求2所述的方法,其特征在于,所述将所述多个编码器划分为至少一个编码器组,包括:
接收所述多个编码器中的每个编码器分别上报的设备属性信息;
根据所述设备属性信息,将所述多个编码器划分为至少一个编码器组。
4.如权利要求3所述的方法,其特征在于,所述设备属性信息包括编码器的网络信息、编码帧率以及编码码率;所述根据所述设备属性信息,将所述多个编码器划分为至少一个编码器组,包括:
根据所述多个编码器中的每个编码器的网络信息和编码帧率,将所述多个编码器划分为至少一个初始分组;
针对每个所述初始分组,根据所述初始分组中每个编码器的编码帧率和编码码率,将所述初始分组划分为至少一个编码器组。
5.如权利要求4所述的方法,其特征在于,所述网络信息包括IP地址、子网掩码和网关地址;所述根据所述多个编码器中的每个编码器的网络信息和编码帧率,将所述多个编码器划分为至少一个初始分组,包括:
根据所述多个编码器中的每个编码器的IP地址和子网掩码,确定每个所述编码器的所处子网;
将所述多个编码器中所处子网、网关地址以及编码帧率都一致的编码器划分入相同的初始分组。
6.如权利要求4所述的方法,其特征在于,所述根据所述初始分组中每个编码器的编码帧率和编码码率,将所述初始分组划分为至少一个编码器组,包括:
统计所述初始分组中包含的编码器数量以及所述初始分组中各个编码器的最大编码码率;
根据所述编码器数量、所述最大编码码率、所述初始分组中每个编码器的编码帧率和编码码率,计算得到分组数量;
将所述初始分组中的各个编码器划分为所述分组数量的编码器组。
7.如权利要求1至6任一项所述的方法,其特征在于,在确定多路视频流传输使用的多个编码器之后,还包括:
向各个所述编码器下发同步信号,以控制各个所述编码器执行编码操作的时间同步;
所述控制每个所述编码器在各自的I帧编码时间段内执行I帧的编码操作,具体为:
控制每个所述编码器从同步的时间点开始,在每个同步周期内只允许在各自的I帧编码时间段内执行I帧的编码操作。
8.一种视频流编码控制及传输装置,其特征在于,包括:
编码器确定模块,用于确定多路视频流传输使用的多个编码器;
编码时段下发模块,用于向所述多个编码器中的每个编码器分别下发各自的I帧编码时间段,以控制每个所述编码器在各自的I帧编码时间段内执行I帧的编码操作,并在编码完成后将数据包传输至网络;其中,各个所述编码器的I帧编码时间段不完全相同。
9.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述的视频流编码控制及传输方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的视频流编码控制及传输方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211213671.7A CN117857802A (zh) | 2022-09-30 | 2022-09-30 | 视频流编码控制及传输方法、装置、终端设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211213671.7A CN117857802A (zh) | 2022-09-30 | 2022-09-30 | 视频流编码控制及传输方法、装置、终端设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117857802A true CN117857802A (zh) | 2024-04-09 |
Family
ID=90533182
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211213671.7A Pending CN117857802A (zh) | 2022-09-30 | 2022-09-30 | 视频流编码控制及传输方法、装置、终端设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117857802A (zh) |
-
2022
- 2022-09-30 CN CN202211213671.7A patent/CN117857802A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11349900B2 (en) | Voice encoding and sending method and apparatus | |
DE102010018376B4 (de) | Dynamische Pufferung und Synchronisation verwandter Medienströme in Paketnetzwerken | |
US8341684B2 (en) | Method and device for transmitting data | |
CA2846013C (en) | Generating a plurality of streams | |
CN105704580B (zh) | 一种视频传输方法 | |
CN111836079A (zh) | 一种视频码流的传输方法及装置 | |
US8665732B2 (en) | VoIP diagnosis | |
CN109756789B (zh) | 一种音视频数据包的丢包处理方法和系统 | |
CN102209237B (zh) | 降低点播实况媒体流时i帧重叠的方法及视频管理服务器 | |
CN111954028B (zh) | 音频数据的投屏方法、装置、设备及存储介质 | |
CN110113306B (zh) | 分发数据的方法和网络设备 | |
WO2022127605A1 (zh) | 一种网络切换方法及装置 | |
CN104754339B (zh) | I帧调整方法、装置及系统 | |
CN111541514B (zh) | 一种报文传输方法及装置 | |
JP2022517587A (ja) | オーディオストリーム及びビデオストリーム同期切替方法及び装置 | |
CN111049792B (zh) | 音频传输方法、装置、终端设备和存储介质 | |
KR20050009061A (ko) | 모바일 애드 혹 네트워크 환경에서 효율적인 데이터송수신을 위한 네트워크 장치 및 데이터 전송 방법 | |
CN113573003B (zh) | 一种基于弱网的音视频实时通信方法、装置以及设备 | |
RU2668064C2 (ru) | Устройство обработки информации, способ обработки информации и программа | |
CN117857802A (zh) | 视频流编码控制及传输方法、装置、终端设备和存储介质 | |
CN111417029A (zh) | 视频码率的调整方法、系统、终端及存储介质 | |
JP2017139521A (ja) | ストリーム配信装置、ストリーム受信装置、ストリーム配信システム、ストリーム配信方法、及びストリーム配信プログラム | |
WO2017140076A1 (zh) | 一种数据传输方法及装置 | |
US20200221266A1 (en) | Method, base station and user equipment for multicasting and device with a storage capability | |
CN113038065B (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 |