1.一种可视电话发送端的视频帧流控制方法,其特征在于,包括以下步骤:
a)捕获视频帧数据;
b)判断当前视频帧数据是否为第1帧数据;
c)如果经判断为第1帧数据,则
c1)进行该视频帧数据的压缩,
c2)统计和暂存当前帧的压缩时间和压缩后的数据量,
c3)将压缩后的视频数据通过无线网络发送;
d)如果经判断不是第1帧数据,则
d1)判断该当前视频帧的预计压缩完成时间间隔(T2)是否小于等于前一帧视频数据所需的发送时间(T3),
d2)如果当前帧的预计压缩完成时间间隔(T2)小于等于前一视频帧数据所需的发送时间(T3),则抛弃当前帧,
d3)如果当前帧的预计压缩完成时间间隔(T2)大于前一视频帧数据所需的发送时间(T3),则执行上述c1)-c3)的步骤;
所述前一视频帧数据所需的发送时间(T3)等于前一视频帧数据比特数除以带宽减去单位时间内捕获的音频数据压缩后比特数总和的差得到的商。
2.如权利要求1所述的可视电话发送端的视频帧流控制方法,其特征在于:所述当前视频帧的预计捕获时间间隔(T2)等于当前帧捕获时间点减去前一帧压缩完成时间点,再加上平均压缩时间(T1)。
3.如权利要求2所述的可视电话发送端的视频帧流控制方法,其特征在于:所述平均压缩时间(T1)等于所述当前帧之前的最近N帧的平均压缩时间。
4.如权利要求3所述的可视电话发送端的视频帧流控制方法,其特征在于:所述N大于等于5且小于等于10。
可视电话发送端的视频帧流控制方法\n技术领域\n[0001] 本发明涉及一种可视电话的视频传输方法,尤其是涉及一种可视电话发送端的视频帧流控制方法。\n背景技术\n[0002] 随着3G网络的普及,具备视频电话功能的3G手机开始被越来越多的用户所青睐,因其不仅为用户提供了传统的音频电话体验,更能通过即时的视频图像来增加用户的视觉体验,从而大大增加了用户的使用乐趣。\n[0003] 但目前使用的视频电话在通话时主要存在视频延时的问题,原因是多方面的:有网络延时因素,有视频帧的本地捕获压后处理以及发送的延时等等。网络延时将会随着3G网络的性能提升得到有效的解决。本地视频帧数据的处理延时主要是由于本地视频帧数据在捕获后需要经过压缩和3G-324M的H.223复接协议复接后才能由无限网络发送出去。\n[0004] 在视频电话的通信过程中,每个终端设备应用程序既是发送端也是接收端,需要发送本方的视频和音频数据给对方,同时也需要将对方的视频和音频数据接收后显示和播放。对应发送端视频数据首先由系统设定视频设备帧取样频率。目前针对64K带宽的视频电话取样频率设定上限一般为每秒15帧左右。对摄像头捕获的视频帧数据首先经过压缩处理并经过3G-324M的H.223复接协议将视频和音频数据进行复接为二进制流数据。\n[0005] 图5所示为现有的可视电话发送端应用程序对音视频数据的处理流程。\n[0006] 可视电话呼叫接通后,首先进行的是3G-324M层的握手动作。在完成协议层的握手动作后,如果双方对视频电话的协商成功,双方系统的发送端将进入图3的处理流程。该流程包括以下步骤:由麦克风捕获音频数据100,对麦克风捕获的音频数据进行压缩处理\n110;由摄像头捕获视频帧数据200,将摄像头捕获的视频帧数据进行压缩处理220;基于\n3G-324M的H.223协议复接视频和音频数据流300;将复接数据流通过无线网络发送310。\n[0007] 通过上述流程,音视频数据经过各自的硬件设备捕获数据,并根据之前的握手协商结构进行各自格式的数据压缩处理,之后经过3G-324M协议的子协议H.223复接为单一的二进制数据流,最后经过无线网络设备发送到对方。\n[0008] 接收端的处理流程是一个反向的过程。接收端首先对接受到的二进制数据流进行H.223协议的分接处理,将其分解为音频和视频数据,并各自完成解压送到相应的硬件播放和显示。\n[0009] 由于目前的视频电话带宽固定工作在电路域的64K带宽之中,摄像头视频帧的采集频率在设定上限后一般会随着系统负荷的变化而呈现浮动。为此,单位时间内捕获的视频帧将是不固定的。常常会出现系统负载较大时从摄像头采集的数据无法及时地被压缩以及进行H.223复接。这将导致复接后的数据大量地滞留在发送队列中,从而导致接收端视频帧的延时到达。其结果是使得视频帧和音频的传输不同步,影响了可视电话的使用效果。\n[0010] 以下对视频延时的原因作简单的分析。\n[0011] 每一帧视频的处理过程包括两个阶段:获取视频数据阶段和数据发送阶段。获取视频数据阶段又分为视频帧获取阶段和视频帧压缩阶段。摄像头以预定时间间隔(例如在每秒15帧的情况下,每帧的间隔时间大约为为0.067秒)获取一帧视频,然后对获得的视频帧进行压缩,获得压缩后的视频帧数据,此为获取视频数据阶段。然后将压缩后的视频帧数据通过无线网络发送。\n[0012] 因此,在一帧视频帧数据压缩完成后,立刻就进行该帧视频数据的发送。即,正常情况下,第1帧视频数据压缩完成时,进行第1帧视频数据的发送;第2帧视频数据压缩完成时,第1帧视频数据的发送已经完成,此时可以进行第2帧视频数据的发送,以此类推。\n[0013] 参看图4,每隔规定时间t,摄像头依次获取一帧视频图像F1、F2、F3、...、F8;每帧视频图像被压缩完成的时间依次为C1、C2、C3、...、C8;并且发送每帧视频图像的时间依次为S1、S2、S3...、S8。\n[0014] 从第1帧视频F1的压缩时间C1完成的时间点起,紧接着的是第1帧视频的发送时间段S1。当第2帧视频F2的压缩时间C2完成的时间点起,紧接着的是第1帧视频的发送时间段S2。从图中可以看到,在发送顺利的情况下,在第2帧视频压缩时间C2完成的时间点之前,第1帧的发送时间S1已经完成,此时可以进行第2帧视频F2的发送S2;在第3帧视频压缩时间C3完成的时间点之前,第2帧的发送时间S2已经完成,此时可以进行第3帧视频F3的发送S3。如图中所示的第1-6帧的情况都是如此。\n[0015] 然而,在第7帧视频F7压缩时间C7完成的时间点时,第6帧F6的发送时间S6还未完成,则此时无法立刻进行S7的发送,必须将S7推迟到S6发送完成之后的时间点,这就造成了第7帧视频传输的延时。同样,在第8帧视频F8压缩时间C8完成的时间点时,第7帧F7的发送时间S7还未完成,则此时无法立刻进行S8的发送,必须将S8推迟到S7发送完成之后的时间点,这就造成了第8帧视频传输的延时。\n[0016] 从上述的例子可以看出,如果在当前帧视频数据压缩完成时,前一帧视频数据的发送尚未完成,则该当前帧的视频数据无法立刻进行发送,必须等到前一帧视频数据发送完成后,才能进行该第二视频数据的发送,这样就造成了视频传输的延时。而且,如果连续各帧都发生延迟,这些延时会形成累积,造成视频传输的严重滞后,影响使用效果。\n发明内容\n[0017] 为此,本发明的目的在于提供一种可降低视频延时的可视电话发送端视频帧流控制方法。\n[0018] 为达成上述目的本发明提供了一种可视电话发送端的视频帧流控制方法,其包括以下步骤:a)捕获视频帧数据;b)判断该当前视频帧数据是否为第1帧数据;c)如果经判断为第1帧数据,则c1)进行该视频帧数据的压缩,c2)统计和暂存当前帧的压缩时间和压缩后的数据量,c3)将压缩后的视频数据通过无线网络发送;d)如果经判断不是第1帧数据,则d1)判断该当前视频帧的预计压缩完成时间间隔是否小于等于前一帧视频数据所需的发送时间,d2)如果当前帧的预计压缩完成时间间隔小于等于前一视频帧数据所需的发送时间,则抛弃当前帧,d3)如果当前帧的预计压缩完成时间间隔大于前一视频帧数据所需的发送时间,则执行上述c1)-c3)的步骤。\n[0019] 较佳地,上述当前视频帧的预计捕获时间间隔等于当前帧捕获时间点减去前一帧压缩完成时间点,再加上平均压缩时间。\n[0020] 较佳地,上述平均压缩时间等于所述当前帧之前的最近N帧的平均压缩时间。\n[0021] 较佳地,上述N大于等于5且小于等于10。\n[0022] 上述前一视频帧数据所需的发送时间等于前一视频帧数据比特数除以带宽减去单位时间内捕获的音频数据压缩后比特数总和的差得到的商。\n[0023] 根据本发明的方法,在视频帧发送处理中,根据先前的视频帧发送处理状况以及压缩处理状况,预判当前帧的接收是否会引起延时,若会引起延时则跳过该当前帧;若不会引起延时,则进行后续的压缩、复接及发送处理。这样,可以避免大量的视频帧滞留在系统中来不及发送,造成视频的延时到达,保证了视频和音频的同步,改善了可视电话的传送效果。\n附图说明\n[0024] 图1为本发明的视频电话发送端处理流程图。\n[0025] 图2为本发明的视频帧流控模块工作流程图。\n[0026] 图3a-3b为本发明的视频帧的传输示意图。\n[0027] 图4为现有的视频帧传输示意图。\n[0028] 图5为现有的视频电话发送端处理流程图。\n具体实施方式\n[0029] 为此,本发明提供了一种视频帧数据流控制方法,来解决视频传输延时的问题。\n[0030] 具体地,当可视电话呼叫接通后,进行3G-324M层的握手动作。在完成协议层的握手动作后,如果双方对视频电话的协商成功,双方系统的发送端将进入图1的处理流程。\n[0031] 该处理流程包括以下步骤:由麦克风捕获音频数据100,对麦克风捕获的音频数据进行压缩处理110;由摄像头捕获视频帧数据200,对摄像头捕获的视频帧数据进行流控处理210,将流控处理后的视频帧数据进行压缩处理220;基于3G-324M的H.223协议复接视频和音频数据流300;将复接数据流通过无线网络发送310。\n[0032] 从上述步骤可以看出,与现有的处理流程相比,本发明在压缩处理220之前增加了对摄像头捕获的视频帧数据进行流控处理的步骤210。其主要功能在于完成视频帧数据的实时调整,以保证在最大限度地利用64K带宽的同时不会出现视频帧数据的延时处理情况。\n[0033] 该视频帧数据流控处理的步骤如图2所示。\n[0034] 开始;摄像头捕获到一帧视频数据;判断该数据是否为第1帧数据。\n[0035] 若是第1帧数据,则执行以下步骤:进行视频帧数据压缩;统计并暂存本帧压缩时间和压缩后数据量;H.223复接;数据分割;无线发送;结束。\n[0036] 若不是第1帧数据,则需预估当前帧数据的压缩完成时间间隔T2,若当前帧的预估数据压缩完成时间间隔小于等于前一帧视频所需的发送时间间隔T3,则抛弃当前帧;若当前帧数据的压缩完成时间间隔T2大于前一帧视频数据所需的发送时间间隔T3,则执行与第1帧视频相同的步骤。\n[0037] 上述步骤中,预估当前帧数据压缩完成时间间隔T2是由以下方式确定的,即T2=(当前帧捕获时间点-上一帧数据完成压缩时间点)+T1,其中T1为当前帧预计完成时间。\n在本实施例中,该当前帧预计完成时间T1为最近N帧的平均压缩时间。该N可以根据需要设定为任意值,较佳地为5-10。\n[0038] T3=前一视频帧数据比特数/(带宽-单位时间内捕获的音频数据压缩后比特数总和)。\n[0039] 若目前当前帧的帧数小于等于N,则按照先前累计的实际帧数计算出平均压缩时间。例如,在N取5的情况下,当前帧为第2帧时,则平均压缩时间即为第1帧的压缩时间;\n当前帧为第3帧时,则平均压缩时间为第1、2帧的平均压缩时间;当前帧为第4帧时,则平均压缩时间为第1-3帧的平均压缩时间;当前帧为第5帧时,则平均压缩时间为第1-4帧的平均压缩时间。\n[0040] 在当前帧为第6帧时,平均压缩时间为第1-5帧的平均压缩时间;其后则可按照最近5帧来计算平均压缩时间。\n[0041] 参看图3,每隔规定时间t,摄像头依次获取一帧视频图像F1、F2、F3...;每帧视频图像被压缩完成的时间依次为C1、C2、C3...。T1a、T1b、T1c...分别对应的是从当前帧起的最近N帧(例如,N为5)的平均压缩时间;T2a、T2b、T2c...分别对应的是预估的当前帧数据的压缩完成时间间隔;T3a、T3b、T3c...分别对应的是前一帧数据发送完成的时间间隔。\n[0042] 在图3所示的例子中,第1帧F1的捕获时间为0,完成压缩的时间为C1,从C1的完成时间点起进行发送,发送完成的时间间隔为T3a,即第1帧被压缩后的数据量/(带宽-单位时间内捕获的音频数据压缩后比特数总和)。\n[0043] 当捕获第2帧F2时,对该第2帧完成压缩时间T2a进行预估。该T2a=(第2帧捕获时间点-第1帧数据完成压缩时间点)+T1a,由于只进行了第1帧的压缩,所以该T1a即等于第1帧的压缩时间C1。将计算出的T2a和计算出的T3a相比,若T2a>T3a,则表明,当第2帧F2压缩完成准备发送时,第1帧视频数据已经发送完成,可以进行发送,则进行第\n2帧F2的实际压缩。若T2a<T3a,则表明,当第2帧F2压缩完成准备发送时,第1帧视频数据还未发送完成,此时将抛弃第2帧F2,不进行F2的压缩。\n[0044] 在图3所示的例子中,该T2a>T3a,则可以进行第2帧F2的压缩和传送。假设在第2帧到第6帧F2-F6中,T2都大于T3,即T2a>T3a;T2b>T3b;T2c>T3c;T2d>T3d;\nT2e>T3e;对第2帧到第6帧的视频数据都进行压缩和发送,如图3a所示。\n[0045] 在捕获第7帧F7时,预估的T2f=(第7帧捕获时间点-第6帧数据完成压缩时间点)+T1f,其中T1f等于第2帧F2至第6帧F6的平均压缩时间。假设T2f<T3f,即预估的第7帧F7压缩完成准备发送时,第6帧F6的发送还未完成,此时,抛弃第7帧F7,不进行F7的压缩,如图3a所示。\n[0046] 如图3b所示在捕获第8帧F8时,由于第7帧F7已经被抛弃,实际并没有被压缩和发送,所以平均压缩时间T1g=T1f。T2g=(第8帧捕获时间点-第6帧数据完成压缩时间点)+T1g,所以T2g比T2f多一帧的时间。因为第7帧F7已经被抛弃,所以前一帧发送时间T3g等于第6帧F6的发送时间间隔T3f。假设T2g>T3g,则进行第8帧F8的压缩和发送。\n[0047] 假设T2g仍然<T3g,则第8帧F8也被抛弃,进行第9帧F9的预估。在这种情况下,第9帧F9预估的压缩完成时间T2h会比T2f多两帧的时间,而前一帧发送时间T3h则不变,仍然等于第6帧F6的发送时间间隔T3f。此时,再比较T2h是否大于T3h。因为,在每抛弃一帧的情况下,T2会增大一帧,而T3保持不变,随着抛弃帧数的增大,T2最终必定会大于T3,此时不再抛弃帧,进行当前帧的压缩和发送。\n[0048] 以下再通过一个实例来进一步说明。该例子中,以每隔0.06秒捕获一帧视频数据,并以最近5帧的压缩时间来计算平均压缩时间为例来说明本发明的视频流控制方法。\n表1为每帧视频数据的相关参数的例子。\n[0049] 表1(单位:秒)\n[0050] \n 前一帧压 前5帧平 当前帧预 前一帧发\n 当前帧捕 当前帧压\n 帧数 缩完成时 均压缩时 估压缩完 送完成时\n 获时间点 缩时间\n 间点 间T1 成时间T2 间T3\n 1 0 0.04 - - - -\n 2 0.06 0.06 0.04 0.04 0.06 0.04\n 3 0.12 0.05 0.12 0.05 0.05 0.05\n 4 0.18 0.06 0.17 0.05 0.06 0.055\n 5 0.24 0.04 0.24 0.053 0.053 0.05\n 6 0.30 0.06 0.28 0.05 0.07 0.06\n 7 0.36 - 0.36 0.054 0.054 0.06\n 8 0.42 0.05 0.36 0.054 0.114 0.06\n 9 0.48 … … … … …\n[0051] 其中每帧视频数据的捕获间隔为0.06秒,以第1帧视频数据的捕获时间点为0秒,则第2帧视频数据的捕获时间点为0.06秒,第3帧视频数据的捕获时间点为0.12秒,第4帧视频数据的捕获时间点为0.18秒,...以此类推。\n[0052] 当前帧压缩时间为当前帧完成压缩实际所花的时间。前一帧压缩完成时间点为前一帧数据的捕获时间点加前一帧完成压缩所花的时间。\n[0053] 根据表内的例子,当前帧为第2帧时,则第1帧压缩完成的时间点为第1帧数据的捕获时间0加上第1帧完成压缩所花的时间0.04秒,等于0.04秒。即在0.04秒时,第1帧视频数据压缩完成。当前帧为第3帧时,则第2帧压缩完成的时间点为第2帧数据的捕获时间点0.06秒加上第2帧完成压缩所花的时间0.06秒,等于0.12秒。即在0.12秒时,第2帧视频数据压缩完成,以此类推。\n[0054] 该前一帧压缩完成时间点也即是前一帧数据开始发送的时间点。\n[0055] 平均压缩时间T1为最近5帧的平均压缩时间,在帧数小于等于5时,按照实际接收到的帧数计算平均压缩时间,因此,到第6帧之后时,平均压缩时间才为最近5帧的平均压缩时间。\n[0056] 当前帧预估压缩完成时间T2=(当前帧捕获时间点-上一帧数据完成压缩时间点)+T1。根据上式,例如,第2帧的预估压缩完成时间T2等于第2帧的捕获时间点减第1帧数据完成压缩时间点再加上平均压缩时间,即T2=0.06-0.04+0.04=0.06秒。该时间表示从前一帧压缩完成时间点(也是前一帧数据开始发送的时间点)起,理论上当前帧应该在此T2时间间隔后压缩完成并准备开始发送。\n[0057] T3为前一帧视频数据的传送完成时间。例如第2帧所对应的T3为第1帧视频数据的发送时间,第3帧所对应的T3为第2帧视频数据的发送时间,以此类推。\n[0058] 在表1的例子中,第2-6帧所对应的T2都大于相应的T3,即当前帧视频压缩完成准备发送时,前一帧视频的发送已经完成,这时发送当前帧数据不会造成延时。\n[0059] 在第7帧时,所对应的T2=0.054,相应的T3=0.06。此时,T2小于T3,如果压缩第7帧,预计完成压缩时,第6帧的发送尚未完成,这样会造成第7帧数据发送的延时,故此,将第7帧抛弃,不进行压缩。\n[0060] 然后在第8帧时,因为第7帧抛弃未被压缩,所对应的T2比之前多了一个帧的时间(0.06),T2=0.114,而此时T3不变仍为0.06。这样,T2大于T3,可以对第8帧进行压缩,不会造成延时。\n[0061] 根据上述的例子,可以看出,采用本发明的方法,可以预先判断当前帧是否会引起延时,若不会引起延时,则进行后续的压缩、复接及发送处理;若会引起延时则跳过该当前帧,直到预估出当前帧满足条件不会引起延时。\n[0062] 在另一实施例中,本发明的平均压缩时间T1也可以不限于根据最近N帧的压缩时间求得,而是可以通过累加方式求得。即当前帧为N时,该平均时间T1可以为之前所有完成发送帧的平均值。例如,当前帧为第7帧时,则平均时间T1为第1-6帧(假如1-6帧没有发生过抛弃的情形)的平均压缩时间。\n[0063] 本领域技术人员应当了解,在此的例子及实施例应认为是说明性的而非限制性的,并且本发明不限于在此给出的细节,而是可在权利要求的范围及等同范围之内进行修改。
法律信息
- 2013-07-31
- 2012-02-15
实质审查的生效
IPC(主分类): H04N 7/14
专利申请号: 200910045735.5
申请日: 2009.02.03
- 2010-08-04
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有引用任何外部专利数据! |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |