CN101056405B - 可伸缩视频流的一种快速切换方法 - Google Patents
可伸缩视频流的一种快速切换方法 Download PDFInfo
- Publication number
- CN101056405B CN101056405B CN 200710051954 CN200710051954A CN101056405B CN 101056405 B CN101056405 B CN 101056405B CN 200710051954 CN200710051954 CN 200710051954 CN 200710051954 A CN200710051954 A CN 200710051954A CN 101056405 B CN101056405 B CN 101056405B
- Authority
- CN
- China
- Prior art keywords
- code stream
- frame
- switching
- decoding
- buffer memory
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明是可伸缩视频流的一种快速切换方法,即视频流切换前,解码端对当前码流解码、重排和显示,并对未解码的码流做特殊处理:对每个关键帧解码并将重构图像覆盖性的置于后备缓存中,为可能切换至下一帧的顺利解码做准备;码流切换时,解码器利用后备缓存中的图像解码切换点所处的整个图片组,重排并从切换处开始显示;切换后,若解码器对切换前码流只接受而不解码显示,则按前述方法对此码流关键帧信息解码并保存。本发明可保证切换后码流信息的完整性,且与普通方法相比最多可减少切换时延((IntraPeriod-1)/frameRate)秒。IntraPeriod:视频流中I帧之间的帧数,frameRate:视频流码率。
Description
技术领域
本发明属于可伸缩视频编码领域,特别针对安防监控的特殊需求,是基于当前的可伸缩视频编解码技术之上的可伸缩视频流间切换技术。
背景技术
随着人们对安全需求的日益增加、安全防护的使用成本与其产生的效益拉开距离,市场提出了行业、企业大范围、远距离监控的需求,如银行跨地区联网监控、全国城市重点地区联网监控等。由于模拟监控存在着使用范围小、信号易衰减等弊端,通过网络将图像进行远程传输的集中监控方式应运而生。
在数字化网络监控方案中,摄像头前端设备将视频信号数字化处理并压缩,然后通过网络传输给监控中心。监控者需要同时监视几十路视频流,而在监控中心的主控界面上能够显示的视频图像数量有限,那么监控者就需要在不同的监控设备中不定时进行迅速的码流切换,从而有效的完成监控工作。
上述情况在如今的安防监控领域中是屡见不鲜的,所以如何从一个码流没有延时的切换到另一个码流已成为了监控应用迫切需要解决的问题之一。在实际情况中,数字视频流使用的传输媒体是具有带宽不定性的网络,在传输过程中很可能会因为带宽变窄而丢失部分视频信息,所以需要使用可伸缩视频编码技术对视频流进行编码(请见参考文献1)。在视频码流切换时不可避免的会产生延时,所以实现可伸缩视频流的短时延切换技术是十分重要的。
在目前实现码流切换技术中比较典型的是SP/SI帧技术(请见参考文献2),它是基于非可伸缩视频码流之上的。SP/SI帧技术的基本原理同P/I帧类似,分别是基于帧间预测的运动补偿预测编码技术和基于帧内预测的编码技术,它们的优点是能够参照不同参考帧重构出相同的图像帧。然而使用SP/SI帧技术时,需要在每段码流的相同地方周期性的插入主SP帧代替P帧,切换的时候利用不同码流同一时刻两帧之间的冗余信息,产生辅SP帧或SI帧代替插入I帧。此方法虽然减小了总码率,但是由于解码时需要主SP帧和辅SP或SI帧共同重构原始图像,使得码流只能在主SP帧处进行切换,限制了切换的灵活程度。并且SP帧的大小和I帧类似,其编码效率也低于P帧,若频繁的使用SP帧代替P帧编码,那么将会增加网络带宽和编码器的负担(请见参考文献3)。
由参考文献4中提出的可伸缩视频流间切换技术是基于单一的质量可伸缩码流之上的,并且是在出自同一视频流的不同码率的码流间进行切换。此技术的主要目的是为了更好的适应网络带宽不定性。
使用目前最新的可伸缩视频编码技术(JSVM6software)(请见参考文献5)编出来的码流具备时域、空域和质量三种可伸缩性质。编码时首先使用层次B片技术(请见参考文献6)实现时域可伸缩,此技术将不同时域的帧分为几个层次,打乱了原始视频输入流递增的帧序,使编出来的码流在出现切换的时候无法从任一点进行解码或是单纯的插入I帧解码。并且码流中大部分都是B帧,所以在可伸缩视频码流切换中使用SP/SI帧技术是不合适的。目前还没有比较好的技术解决可伸缩视频码流之间的切换问题,一般都是采用丢弃切换后码流中的帧,直到下一个I帧到来。这种方法不可避免的存在着严重的问题:首先它严重的影响了视频流的完整性,监控信息是否完整是能否有效完成监控任务的关键;其次在由于无法解出当前帧,用户必须被迫承受长时间的切换延时,等到下一个I帧的到来。
发明内容
本发明所要解决的技术问题是:针对时域可伸缩的码流内非递增的帧序问题,提供可伸缩视频流的一种快速切换方法,以减小可伸缩视频流的切换时延,保证视频信息的完整性。
本发明解决其技术问题采用的技术方案是:
(1)在未发生码流切换时,解码端对码流1进行解码、重排和显示的同时,对未解码的码流2做特殊处理,即对此码流2中每一帧的anchor帧进行解码并将重构图像覆盖性的置于后备缓存中,为可能切换至下一帧的顺利解码做准备;
(2)当发生码流切换时,在切换的下一时刻,解码器利用后备缓存中的图像顺利解码切换点所处的整个GOP的帧,重排并从切换处开始显示;
(3)发生码流切换后,若解码器对码流1只进行接受而不再解码显示,那么就要使用前述步骤(1)的方法,把码流1的信息当作原来步骤(1)中码流2的信息,对码流1每个GOP中的anchor帧的信息解码,并且置于码流1的后备缓存中;
其中,码流1是当前码流,解码端从码流1切换到码流2,GOP表示图片组,anchor帧表示关键帧。
本发明实现了可伸缩视频码流的快速切换功能:保证切换时刻码流信息的完整性——使用户能够立刻得到切换t时刻后码流2的所有信息,提高了监控效果;与普通方法相比,在最不理想的情况下,最多可以减少切换时延((IntraPeriod-1)/frameRate)秒。IntraPeriod:视频流中I帧的间隔帧数,frameRate:视频流码率。
附图说明
图1:本发明的视频流切换前解码器解码的示意图。
图2:本发明的视频流切换前后显示于用户的视频流示意图。
图3:本发明的视频流未切换时解码程序流程图。
图4:本发明的视频流切换时解码程序流程图。
图5:本发明的视频流切换结果示意图。
具体实施方式
本发明提供的是可伸缩视频流的一种快速切换方法,所述可伸缩码流是基于可伸缩视频编解码标准的。该方法是:视频流切换前,解码端对当前码流进行解码、重排和显示的同时,对未解码的码流做特殊处理,即对此码流中每一帧的anchor帧即关键帧进行解码并将重构图像覆盖性的置于后备缓存中,为可能切换至下一帧的顺利解码做准备;当发生码流切换时,解码器利用后备缓存中的图像顺利解码切换点所处的整个GOP的帧,其中GOP是指Group of Picture,表示图片组,重排并从切换处开始显示;发生视频码流切换后,若解码器对切换前码流只接受而不再解码显示,那么就要使用前述的方法对此码流的anchor帧信息解码并保存。
下面结合具体实施例及附图对本发明作进一步说明,但不限定本发明。
1.本发明提供的可伸缩视频流的一种快速切换方法,包括以下步骤:
(1)未发生码流切换时对视频流的解码:解码端对当前码流进行解码、重排和显示的同时,对未解码的码流做特殊处理:对每一帧的anchor帧进行解码并将重构图像覆盖性的置于后备缓存中,为可能切换至下一帧的顺利解码做准备。
假设解码端要从码流1切换到码流2,切换时刻为t,两个码流对应的监视器在分别对采集到的视频进行编码并传输给解码端。如图1所示:在t时刻之前,解码端对码流1的信息进行解码、重排和显示的同时,对码流2也在做特殊的处理:从首I帧即第一个anchor0帧开始,解码并置于当前活动后备缓存中,第二个anchor帧解码并覆盖性的置于当前活动后备缓存中……依次类推,当前活动后备缓存是标记为curr的后备缓存,由两个后备缓存轮流充当。
(2)发生码流切换时,在切换的下一时刻对视频流的解码:解码器利用后备缓存中的图像顺利解码切换点所处的整个GOP的帧,重排并从切换处开始显示。
t时刻正在显示GOPn的视频图像,此时用户希望切换到码流2,那么在t+1时刻:
a.如果码流2正好处于I帧——一个处理单元的结束,那么不用做任何处理,直接对首I帧进行解码,就可以顺利解码码流2的下一处理单元,重排和从切换处开始显示;
b.如果码流2处于一个GOP的开始,非I帧的位置,那么只要直接使用当前活动后备缓存中已解码的前一个GOP的anchor帧,就可以对码流2的当前GOP内所有帧进行解码和重排,并从切换处开始显示;
c.如图2所示:如果码流2处于一个GOP的中间位置,首先待解码端接受完此GOP的全部帧信息后,取出两个后备缓存中的anchor帧分别放入两个参考队列中,然后从此GOP的头部信息开始解码和重排,并从切换处开始显示。该图中,粗线部分表示解码重排后显示出的视频流。
(3)发生码流切换后对视频流的解码:如果切换之后解码器对码流1只进行接受而不再解码显示,那么就要使用前述的方法,对码流1的每个GOP中的anchor帧的信息解码,并且置于码流1的后备缓存中。
2.本发明提供的可伸缩视频流的一种快速切换方法,其具体实现过程是:
(1)未发生码流切换时,按以下方法定义输入视频流变量、输出视频流变量、切换标志变量switchFlag、两个后备缓存和当前活动后备缓存标志变量curr:
定义:cBitstreamFile1=stream1.264;表示码流1。
cBitstreamFile2=stream2.264;表示码流2。
cYuvFile=result.yuv;表示输出视频流。
Uint switchFlag=0;表明当前视频流不是切换后的视频流。
DPBUnit*mothballBuf_0,*mothballBuf_1;表示两个后备缓存。
Uint curr=0;表示当前的活动后备缓存为mothballBuf_0。
判断当前活动后备缓存的方法:
If(curr==0)则当前活动的为:mothballBuf_0;
If(cuir==1)则当前活动的为:mothballBuf_1。
首先在ErrVal H264AVCDecoderTest::go()函数的for(uiFrame=0;(uiFrame<=MSYS_UINT_MAX&&!bEOS);)循环中添加循环条件:switchFlag!=1;然后在此循环中判断:若switchFlag=0,表明当前不是切换过来的码流,那么就按照JSVM-6原来的方法对cBitstreamFile1的帧信息解码。并且每处理完的一个帧信息之后,将解码器接受到stream2.264的nalUnit放入当前的解码图像缓存单元(CurrDPBUnit)中,并进行以下处理:
若m pcCurrDPBUnit->getCtrlData().getSliceHeader()->isIntra(),那么表明此nalUnit是码流2的首0帧或是一个处理单元的尾部,那么直接当作I帧解码。将解码后的重构图像覆盖性的放入当前活动后备缓存中,curr=(curr+1)%2。
若m_pcCurrDPBUnit->getCtrlData().getSliceHeader()->isInterP(),那么表明此nalUnit在码流2的一个GOP的首部,那么将非当前活动后备缓存中的图像放入解此帧的参考队列(rcList0)中,把此nalUnit当作P帧解码。将解码后的重构图像覆盖性的放入当前活动后备缓存中,最后curr=(curr+1)%2。
再回到for循环内部的开始位置,继续按照上述方法处理码流1和码流2的下一个帧。
(如图3所示)
(2)发生码流切换时:
给变量switchFlag赋值为1,使得跳出步骤(1)中的for循环,在循环后面互换记录码流的变量值:
If(switchFlag==1){cBitstreamFile1=stream2.264;
cBitstreamFile2=stream1.264;}
重新进入步骤(1)中的for循环,将从切换点所处的GOP头部信息开始进行解码。如图4所示:判断若switchFlag=1,表明当前是切换过来的码流,那么将非当前活动后备缓存内的图像加入rcList0中:rcList0.add(mothballBuf_x1->getFrame());将当前活动后备缓存内的图像加入rcList1中:rcList1.add(mothballBuf_x2->getFrame());然后按照原来的方法解此帧以及之后的所有帧,重新排序并且从切换处开始显示。必须说明的是:在对此帧解码之后switchFlag必须赋值为0。
(3)发生码流切换后:
如果此时码流1不再被解码器解码,那么按照1)所述的方法,将解码器接受到的码流1的信息当作原来1)中码流2的信息,做同样的处理即可。
3.本发明的实现结果:
本发明的实验测试是基于JSVM6software[5]的。当frameRate=30(帧/秒)、GOPsize=32(帧)、IntraPeriod=96(帧)即每3个GOP插入一个I帧、切换点处于码流2的一个处理单元开始位置,即最不理想的情况。如图5所示:用户从一个码流1切换到码流2中I帧之后的一个GOP开始位置,即第97帧。普通方法从第192帧开始解码并显示,而本发明在切换后可从97帧开始解码并显示,即多显示了97到191这95个帧的信息,合计3.17秒的信息量。如果是在编、解码实时同步的情况下,则可使用户必须承担的切换时延减少3.17秒。也就是说,与普通的“丢弃帧直到I帧出现为止”的方法相比,本发明切换延时少、信息保留完整。
参考文献
1.Ohm,J.R.,Advances in Scalable Video Coding.Proceedings of the IEEE,2005.93(1):p.15.
2.Karczewicz,M.K.,R.,The SP-and SI-frames design for H.264/AVC.Circuits and Systems for VideoTechnology,IEEE Transactions 2003.13(7):p.8.
3.Ugur,K.N.,P.,Combining bitstream switching and FGS for H.264 scalable video transmission overvarying bandwidth networks,in Communications,Computers and signal Processing.2003,IEEE XPlore:PACRIM.
4.Xiaoyan Sun,F.W.,Shipeng Li,Wen Gao,Ya-Qin Zhang Seamless switching of scalable videobitstreams for efficient streaming.Multimedia,IEEE Transactions on,2004.6(3):p.13.
5.Jerome Vieron,M.W,Heiko Schwarz,JSVM 6 software in 19th Meeting 2006:Geneva,Switzerland.
6.Heiko Schwarz,D.M.,Thomas Wiegand,Hierarchical Bpictures,in 16th JVT Meeting.2005,JointVideo Team,Doc.JVT-P014:Poznan,PL.
Claims (5)
1.可伸缩视频流的一种快速切换方法,其特征是:
(1)在未发生码流切换时,解码端对码流1进行解码、重排和显示的同时,对未解码的码流2做特殊处理,即对此码流2中每一帧的anchor帧进行解码并将重构图像覆盖性的置于后备缓存中,为可能切换至下一帧的顺利解码做准备;
(2)当发生码流切换时,在切换的下一时刻,解码器利用后备缓存中的图像顺利解码切换点所处的整个GOP的帧,重排并从切换处开始显示;
(3)发生码流切换后,若解码器对码流1只进行接受而不再解码显示,那么就要使用前述步骤(1)的方法,把码流1的信息当作原来步骤(1)中码流2的信息,对码流1每个GOP中的anchor帧的信息解码,并且置于码流1的后备缓存中;
其中,码流1是当前码流,解码端从码流1切换到码流2,GOP表示图片组,anchor帧表示关键帧。
2.根据权利要求1所述的方法,其特征是未发生码流切换时,对视频流解码的具体方法是:
解码端对码流1的信息进行解码、重排和显示,同时对码流2也做特殊处理:从首I帧开始,解码并置于当前活动后备缓存中,第二个anchor帧解码并覆盖性的置于当前活动后备缓存中,依次类推,当前活动后备缓存是标记为curr的后备缓存,由两个后备缓存轮流充当。
3.根据权利要求2所述的方法,其特征是按以下方法定义输入视频流变量、输出视频流变量、切换标志变量switchFlag、两个后备缓存和当前活动后备缓存标志变量curr;
cBitstreamFile1=stream1.264;
cBitstreamFile2=stream2.264;
cYuvFile=result.yuv;
Uint switchFlag=0;
DPBUnit*mothballBuf_0,*mothballBuf_1;
Uint curr=0;
定义说明:cBitstreamFile1=stream1.264表示解码器同时接收到的码流1;cBitstreamFile2=stream2.264表示解码器同时接收到的码流2;cYuvFile=result.yuv表示输出视频流;switchFlag=0表明当前视频流不是切换后的视频流;mothballBuf_0和mothballBuf_1表示两个后备缓存;curr=0表明当前的活动后备缓存为mothballBuf_0,如果curr在程序运作过程中被赋值为1,那么表明当前的活动后备缓存为mothballBuf_1,一旦当前活动后备缓存被使用,那么curr=(curr+1)%2。
4.根据权利要求3所述的方法,其特征是发生码流切换时,在切换的下一时刻,对视频流解码的具体方法是:
a.如果码流2正好处于I帧,表示一个处理单元的结束,那么不用做任何特殊处理,直接对码流2的此I帧进行解码,然后对码流2的下一处理单元进行解码和重排,并从切换处开始显示;
b.如果码流2处于一个GOP的开始,即非I帧位置,那么直接使用当前活动后备缓存中已解码的前一个GOP的anchor帧作为参考帧,对码流2的当前GOP内所有帧进行解码和重排,并从切换处开始显示;
c.如果码流2处于一个GOP的中间位置,那么待解码端接受完此GOP的全部帧信息后,取出两个后备缓存中的anchor帧分别放入两个不同的参考队列中,从此GOP的头部信息开始解码和重排,并从切换处开始显示。
5.根据权利要求4所述的方法,其特征是:在步骤c中发生码流切换时,switchFlag被赋值为1,表明当前是切换后的码流;那么将非当前活动和当前活动的后备缓存内的图像分别加入解此帧的参考队列rcList0和rcList1中:
rcList0.add(mothballBuf x1->getFrame()),其表示将非当前活动的后备缓存内的图像加入解此帧的参考队列rcList0;
rcList1.add(mothballBuf_x2->getFrame()),其表示将非当前活动的后备缓存内的图像加入解此帧的参考队列rcList1;
然后从切换点所处的GOP的头部信息开始解码和重排,并从切换处开始显示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200710051954 CN101056405B (zh) | 2007-04-24 | 2007-04-24 | 可伸缩视频流的一种快速切换方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200710051954 CN101056405B (zh) | 2007-04-24 | 2007-04-24 | 可伸缩视频流的一种快速切换方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101056405A CN101056405A (zh) | 2007-10-17 |
CN101056405B true CN101056405B (zh) | 2010-10-20 |
Family
ID=38795975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200710051954 Expired - Fee Related CN101056405B (zh) | 2007-04-24 | 2007-04-24 | 可伸缩视频流的一种快速切换方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101056405B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104469369B (zh) * | 2014-11-17 | 2017-10-31 | 何震宇 | 一种利用解码端信息提高svc性能的方法 |
CN105657448B (zh) * | 2014-11-24 | 2019-11-26 | 瞬已网络科技(上海)有限公司 | 一种编码视频流的转发方法、装置及系统 |
CN105306543A (zh) * | 2015-09-25 | 2016-02-03 | 深圳Tcl数字技术有限公司 | 图片共享方法及装置 |
CN107948654A (zh) | 2017-11-21 | 2018-04-20 | 广州市百果园信息技术有限公司 | 视频发送、接收方法和装置及终端 |
CN111093090A (zh) * | 2018-10-24 | 2020-05-01 | 玲珑视界科技(北京)有限公司 | 一种基于tcp的组播频道快速切换系统及方法 |
CN115695856B (zh) * | 2022-11-01 | 2023-05-09 | 北京小鸟科技股份有限公司 | 视频组播码流快速切换设备、方法、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1689332A (zh) * | 2002-10-15 | 2005-10-26 | 皇家飞利浦电子股份有限公司 | 用于经ip网络发送可伸缩编码视频的系统和方法 |
WO2007042916A1 (en) * | 2005-10-11 | 2007-04-19 | Nokia Corporation | System and method for efficient scalable stream adaptation |
-
2007
- 2007-04-24 CN CN 200710051954 patent/CN101056405B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1689332A (zh) * | 2002-10-15 | 2005-10-26 | 皇家飞利浦电子股份有限公司 | 用于经ip网络发送可伸缩编码视频的系统和方法 |
WO2007042916A1 (en) * | 2005-10-11 | 2007-04-19 | Nokia Corporation | System and method for efficient scalable stream adaptation |
Also Published As
Publication number | Publication date |
---|---|
CN101056405A (zh) | 2007-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101056405B (zh) | 可伸缩视频流的一种快速切换方法 | |
CN1981537B (zh) | 能够在流应用中进行媒体采集的方法和设备 | |
CN101282479B (zh) | 基于感兴趣区域的空域分辨率可调整编解码方法 | |
DE69838869T2 (de) | Vorrichtung und Verfahren zum Spleißen von codierten Datenströmen sowie Vorrichtung und Verfahren zur Erzeugung von codierten Datenströmen | |
CN101573883A (zh) | 用于在可分级视频编码中信令并执行时间级切换的系统和方法 | |
CN102318202B (zh) | 用于可缩放与非可缩放视频编解码器之间的译码的系统和方法 | |
JP2010526516A (ja) | デジタルマルチメディアチャネル切り替え | |
CN101257624B (zh) | 实现随机访问的方法及解码器 | |
CN101421936A (zh) | 用于在可缩放视频通信中提供差错弹性、随机接入和率控制的系统和方法 | |
CN102187667A (zh) | 从第一编码视频流切换到第二编码视频流的方法 | |
CN105103563A (zh) | 在可伸缩视频编码中的量化矩阵信令和表示的方法和装置 | |
CN100539670C (zh) | 已编码a/v序列的编辑 | |
CN102939766B (zh) | 接收器和接收器侧使用单个解码器使能信道变化的方法 | |
CN101924906A (zh) | 一种多媒体实时交互系统及方法 | |
KR20050031460A (ko) | 하이브리드 예측 코드를 사용하는 다중 표현 움직임보상을 수행하는 방법 및 장치 | |
CN101909063A (zh) | 基于分层编码的视频流推送方法和系统 | |
Pettersson et al. | Dependent random access point pictures in HEVC | |
TWI491218B (zh) | 媒體中繼視訊通信 | |
CN105657448A (zh) | 一种编码视频流的转发方法、装置及系统 | |
JPH10262228A (ja) | 通信システム、多地点制御装置、映像情報表示方法 | |
KR100734141B1 (ko) | 복수의 프레임을 참조하는 시간적 및 공간적 스케일러블인코딩 및 디코딩 방법과 그 장치 | |
JPH088689B2 (ja) | 画像符号化装置 | |
Bi et al. | 8K Ultra HD TV broadcast system: challenge, architecture and implementation | |
CN101202907A (zh) | 频道切换装置及方法 | |
KR20040046320A (ko) | 동영상 부호화 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20101020 Termination date: 20140424 |