CN116708934B - 一种视频编码处理方法及装置 - Google Patents
一种视频编码处理方法及装置 Download PDFInfo
- Publication number
- CN116708934B CN116708934B CN202310548547.4A CN202310548547A CN116708934B CN 116708934 B CN116708934 B CN 116708934B CN 202310548547 A CN202310548547 A CN 202310548547A CN 116708934 B CN116708934 B CN 116708934B
- Authority
- CN
- China
- Prior art keywords
- frame
- block
- complexity
- intra
- prediction
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 30
- 238000000034 method Methods 0.000 claims abstract description 46
- 238000007906 compression Methods 0.000 claims abstract description 39
- 230000006835 compression Effects 0.000 claims abstract description 35
- 230000008569 process Effects 0.000 claims abstract description 16
- 239000012634 fragment Substances 0.000 claims abstract description 13
- 230000033001 locomotion Effects 0.000 claims description 70
- 239000013598 vector Substances 0.000 claims description 23
- 238000013139 quantization Methods 0.000 claims description 18
- 230000009466 transformation Effects 0.000 claims description 9
- 238000004364 calculation method Methods 0.000 claims description 8
- 238000012549 training Methods 0.000 claims description 7
- 230000008859 change Effects 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 6
- 238000012937 correction Methods 0.000 claims description 5
- 238000005538 encapsulation Methods 0.000 claims description 2
- 230000000694 effects Effects 0.000 description 8
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 7
- 241001465754 Metazoa Species 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000010171 animal model Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000008570 general process Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
- H04N21/4402—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
- H04N21/440281—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by altering the temporal resolution, e.g. by frame skipping
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/124—Quantisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/146—Data rate or code amount at the encoder output
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/218—Source of audio or video content, e.g. local disk arrays
- H04N21/2187—Live feed
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/439—Processing of audio elementary streams
- H04N21/4394—Processing of audio elementary streams involving operations for analysing the audio stream, e.g. detecting features or characteristics in audio streams
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
- H04N21/4402—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/488—Data services, e.g. news ticker
- H04N21/4884—Data services, e.g. news ticker for displaying subtitles
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种视频编码处理方法及装置,该方法检测到实时网速发生变化时,将目标码率配置为不大于实时网速并重新分配比特数;其中,向各帧分配的比特数用于控制编码过程;基于分配得到的比特数,对采集到的视频进行压缩编码;将采集到的音频数据按时间顺序分割为多个音频片段,并按照时间顺序将所述音频片段输入语音识别模型,依次得到各语音片段对应的文字;利用上下文信息纠正所述文字中的错误,并基于纠正后的文字生成字幕;将所述字幕、音频数据和压缩后的视频进行封装,以便生成直播流。能够在通过语音转字幕之前,先利用上下文信息纠正文字中的错误(例如同音字错误),然后在生成字幕,可以减少生成语句不通顺的字幕。
Description
技术领域
本发明涉及视频编码技术领域,特别涉及一种视频编码处理方法及装置。
背景技术
在视频直播中,除了要求视频不卡顿之外,对于有解说的直播,为了给观众提供更好的体验,一般会提供自动生成字幕的功能。现有的自动生成字幕算法存在不准确的缺点。原因是,存在很多同音字,而直播涉及的领域特别多,无法采用为每个领域都训练专门的模型,训练数据的采集和训练消耗资源都很大。例如,一段语音为womenjintianjiangzhenjinayuce,可能会识别为“我们今天讲帧间预测”,也可能是,“我们今天讲针尖预测”,原因是,我们给语言识别引擎输入的是一段段音节对应的语音信号,而语音识别引擎能够很好的识别语料库中常出现的音节组合,例如“针尖”,可能由于“针尖”在语料库中出现的频率更高所以将“zhenjian”识别为“针尖”。
由于直播的字幕在服务器翻译,一般对于每一句翻译完就将语音识别得到的文字作为字幕与视频比特流一同封装到格式容器中发送给观众端,观众很容易看到语句不通顺的字幕,体验很不好。之所以存在这个问题,是因为服务器一般收到一段音频就开始翻译并且翻译完就感觉发送出去,无法利用上下文进行纠正。
发明内容
本发明的目的在于至少解决现有技术中存在的技术问题之一,提供一种视频编码处理方法及装置,能够在通过语音转字幕之前,先利用上下文信息纠正文字中的错误(例如同音字错误),然后在生成字幕,可以减少生成语句不通顺的字幕。
第一方面,本发明提供一种视频编码处理方法,包括:
检测到实时网速发生变化时,将目标码率配置为不大于实时网速并重新分配比特数;其中,向各帧分配的比特数用于控制编码过程;
基于分配得到的比特数,对采集到的视频进行压缩编码;
将采集到的音频数据按时间顺序分割为多个音频片段,并按照时间顺序将所述音频片段输入语音识别模型,依次得到各语音片段对应的文字;
利用上下文信息纠正所述文字中的错误,并基于纠正后的文字生成字幕;
将所述字幕、音频数据和压缩后的视频进行封装,以便生成直播流。
第二方面,本发明提供一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述的视频编码处理方法。
第三方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如上所述的视频编码处理方法。
本发明提供的方法,能够响应于实时网速的变化,及时将目标码率调整为不大于实时网速的值,能够避免视频播放卡顿。另一方面,能够在通过语音转字幕之前,先利用上下文信息纠正文字中的错误(例如同音字错误),然后在生成字幕,可以减少生成语句不通顺的字幕。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
下面结合附图和实施例对本发明进一步地说明;
图1为一个实施例中视频编码处理方法的流程示意图。
图2为一个实施例中视频编码处理方法的流程示意图。
图3为一个实施例中视频编码处理方法的流程示意图。
图4为一个实施例中视频编码处理方法的流程示意图。
图5为一个实施例中视频编码处理方法的流程示意图。
图6为一个实施例中视频编码处理方法的流程示意图。
图7为一个实施例中计算机设备的结构框图。
图8为预测误差的原理示意图。
图9为运动向量复杂度的原理示意图。
具体实施方式
本部分将详细描述本发明的具体实施例,本发明之较佳实施例在附图中示出,附图的作用在于用图形补充说明书文字部分的描述,使人能够直观地、形象地理解本发明的每个技术特征和整体技术方案,但其不能理解为对本发明保护范围的限制。
如图1所示,在一个实施例中,提供了一种视频编码处理方法,所述方法包括:
步骤S202,检测到实时网速发生变化时,将目标码率配置为不大于实时网速并重新分配比特数;其中,向各帧分配的比特数用于控制编码过程。
步骤S204,基于分配得到的比特数,对采集到的视频进行压缩编码。
可以理解的是,每帧分配到的比特数会约束一帧压缩后的比特数上限。具体的,再将该比特数分配给帧分割得到的各个块,通过量化中的量化因子来调节压缩的程度不大于每个块分配到的比特数。
步骤S206,将采集到的音频数据按时间顺序分割为多个音频片段,并按照时间顺序将所述音频片段输入语音识别模型,依次得到各语音片段对应的文字。
步骤S208,利用上下文信息纠正所述文字中的错误,并基于纠正后的文字生成字幕。
步骤S210,将所述字幕、音频数据和压缩后的视频进行封装,以便生成直播流。
以下是生成直播流的一般处理流程:
熵编码:对预测残差块和可能的运动向量进行熵编码,得到编码后的比特流。
选择容器格式:根据具体的应用需求,选择一个适当的容器格式。例如,如果你想要在网页上播放视频,那么你可能会选择MP4格式,因为它被大多数的网页浏览器所支持。
封装:将编码后的比特流封装到选择的容器格式中。这个过程可能会包括添加一些元数据,例如同步信息,以便于在解码或播放时使用。
发送:将封装后的文件或数据流发送到网络中。
本发明提供的方法,能够响应于实时网速的变化,及时将目标码率调整为不大于实时网速的值,能够避免视频播放卡顿。另一方面,能够在通过语音转字幕之前,先利用上下文信息纠正文字中的错误(例如同音字错误),然后在生成字幕,可以减少生成语句不通顺的字幕。
以下是生成字幕的伪代码:
#1.初始化语音识别引擎
speech_recognition_engine=initialize_speech_recognition_engine()
#2.获取音频输入
audio_input=get_audio_input()
#3.开始语音识别
while audio_input.is_active():
#获取音频片段
audio_segment=audio_input.get_next_segment()
#将音频片段送入语音识别引擎
text=speech_recognition_engine.recognize(audio_segment)
#利用纠正算法纠正文字错误
text_=SP.jiuzheng(text)
#输出生成的字幕
output_subtitle(text_)
#4.结束语音识别
在一个实施例中,如图2所示,所述利用上下文信息纠正所述文字中的错误,具体包括:
步骤S302,在当前段文字识别到多音词且当前段文字不存在具有相同标签的非多音字时,向上或下一段文字寻找具有相同标签的非多音词字;其中,每段文字对应一段音频,每个多音词具有多个标签,每个标签表示该多音词读音对应的各词所在的词库;
步骤S304,从所述非多音字对应的词库中,选择与所述多音词相同读音的词,进行替换。
举例而言,对于每个领域建立对应的词库,例如法律,技术,时尚,营销等,现有说明的是,本实施例中所称的“多音词”是指语音识别模型根据音频的输入,输出的读音,例如“zhenjian”,而“zhenjian”存在多个候选词语的情况,例如“帧间”“针尖”“真贱”等,则“zhenjian”就被成为多音词,假设作为”zhenjian”候选词的“帧间”“针尖”“真贱”三个汉字词,分别在“技术”“文化”“日常”三个词库中,则说明“zhenjian”这个多音词具有三个标签。而对于“shipinbianma”这个非多音词,其候选词只有一个“视频编码”,所以称之为非多音词,而“视频编码”这个汉字词,属于“技术”词库,显然“zhenjian”和”shipinbianma”具有相同的标签。
若是这两个多音词或非多音词出现在临近的文本,即构成了上下文,就说明“zhenjian”这个多音词匹配“帧间”这个候选词几率更大,从而实现利用上下文纠正错误。
需要说明的是,后续词一般都是汉字词或者数字或者英文词等文本词,“多音词”、“非多音词”在本文被定义为语音识别模型识别到的语音或者说读音,一般语音识别模型输出都是文本词,一般会按照候选词排列顺序选择一个文本词输出,例如识别到“zhenjian”这个读音时,就会输出“针尖”。这是由于语音识别模型只设置了音节之间的预测,并没有上下文之间的学习。
而本实施例中,提供的步骤S302至S304能够利用上下文信息在具有多个候选词的情况下,选择更准确的词,减少不通顺字幕生成的概率。
为了便于理解本发明,有必要对以下发明其他方面改进对应的背景技术简要说明如下:
在户外24小时直播场景中时,面临如下困难:
随着互联网技术的发展,户外全日直播得以普及,常见的户外全日直播类型包括户外野生动物直播,例如在野生动物保护基地放置逼真的动物模型,动物模型身上放置摄像机,通过该动物模型身上的摄像机对野生动物聚集的水池等地进行全日拍摄,以供观众24小时观看。或者是城市景观全日直播,例如在城市通行人流或通行车辆密集的步行街或十字路口架设摄像机,持续记录该位置24小时的人流或车辆变动情况,同时开通观众在线24小时观看功能。
上述场景中使用摄像机持续获取视频并通过4G网络将数据上传到服务器进行存储供日后研究,通过CDN(内容分发网络)分发给观众实现直播功能。上述户外全日直播要取得好的效果,需满足如下需求:这种直播对于实时性和画面质量要求不高,允许延迟,但是对于视频播放流畅性有较高要求,即要求播放时不卡顿,因为播放时卡顿的会给观众很不好的体验;另一方面,由于这些视频数据量大并且需要长时间存储,因此编码时需要尽量高的压缩率,以节省存储空间。
基于上述场景和需求,发明人在做出本发明时面临如下困难:在户外使用4G传输视频数据,没有稳定网络传输环境,容易产生网络波动,在网络波动过程中,很容易出现网速小于码率的情况而导致播放卡顿。具体的,若预先设置的码率(如30Mbps)大于实时网速(如25Mbps)时,就意味着网络连接无法在实时的情况下传输全部的视频数据。而视频播放器在播放视频时,会先从网络上下载一段视频数据,然后解码并显示这段视频。如果网络带宽不足,那么下载视频数据的速度就会低于视频的播放速度,播放器就会因为缺少数据而无法继续播放视频,这就出现了我们通常所说的“卡顿”。
经检索,为了解决卡顿问题,申请公布号为CN102231898A的中国专利披露了一种网络带宽自适应QOS传输的方法、系统和终端设备,该方案可根据移动互联网络带宽的波动自动调整流媒体业务源的码流大小和发送速率,确保在移动互联网环境下流媒体音视频数据实时传输的稳定性,可以适应不同的网络状况,提升用户体验。授权公告号为CN106385627B的中国专利披露了一种视频编码处理方法和装置,在网络异常时,从高码率的视频编码器切换至低码率的视频编码器,从而实现了视频播放的稳定性的技术效果。
可见根据网速自适应调整码率是普遍使用的解决卡顿的方案,但是在尝试将上述方案应用于上述的户外24小时直播场景中时,仍然面临如下困难:
定义:一帧的画面复杂度通过计算帧内像素值变化的平方和(SSD)得到,这样可以量化帧内的纹理和颜色变化。某一帧画面复杂度越高,该帧内的纹理和颜色变化越丰富,这是由于大量人类或车流或动物活动造成的,这一帧显然记录了我们关注的内容。若是到了晚上,人类少了或动物少了,拍摄到的视频帧中纹理和颜色简单,画面复杂度低,这一帧并不是我们关注的内容。换句话说,由于摄像机位于人流或动物密集的户外区域,随着时间变化,不同时间所获得的视频帧其画面内容的画面复杂度是不同的,而人流量或动物活动在不同时间导致画面复杂度的大幅度变化等。现有技术中在利用上述现有技术提供的自适应调整码率方案确定码率以解决卡顿之后,一般为每一帧均匀分配比特数(例如,帧率为24帧/秒,目标码率为3Mbps,则给每一帧均分配3,000,000bit/24=125,000bit,及每一帧允许编码之后的比特数不超过),而画面复杂度低的帧不需要这么多比特数来表达,所以压缩率不高,而画面复杂度高的帧,仅适用这些比特数不足以表达,所以压缩率很高,导致损失数据较多。换句话说,会使得画面复杂度高的帧要进行更大程度压缩,损失很多我们所关注的数据。而对于画面复杂度低的帧,不需要进行高压缩率的编码,反而保留更多我们不太关注的数据。从观众或者后续研究的角度来看,我们不关注的画面是比较清晰而关注的画面反而是比较模糊的。
另一方面是,由于24小时全日直播产生海量的数据,如何在现有技术框架下(如H264等)针对户外全日直播视频的特点进行分析,以进一步提高视频压缩率,也是一个新的挑战。
为了解决上述问题,如图3所示,在上述实施例基础上,提供一种视频编码处理方法,包括:
所述重新分配比特数包括:
步骤S404,选取被采集时间最早的一组未被分配比特数的帧组;其中,所述帧组为由与帧率对应数量的相邻帧构成的帧序列。
可以理解的是,由于该直播场景下实时性要求每那么高,直播设备(例如手机或摄像机)采集到的视频数据会先缓冲在内存中,允许编码器拥有更充分时间提高压缩率,以保证视频的流畅性。此处所称被采集时间真实被直播设备采集到的时间,假设直播设备采集视频的帧率为24帧/秒,则每个帧组中有24帧,因为需要根据网络实时调整比特数,所以并非采集到视频帧之后就会分配比特数,一般是即将进行编码的视频帧才会被划分到帧组中并根据实时网速分配比特数。
步骤S406,计算帧组内各帧的画面复杂度以及帧组内各帧画面复杂度之和。
定义:一帧的画面复杂度通过计算帧内像素值变化的平方和(SSD)得到,这样可以量化帧内的纹理和颜色变化。某一帧画面复杂度越高,该帧内的纹理和颜色变化越丰富。
步骤S408,根据帧组内各帧的画面复杂度与帧组内各帧画面复杂度之和的比值确定帧组内各帧的第一分配比例。
步骤S410,根据所述第一分配比例和所述目标码率为各帧分配比特数,得到第一目标比特数,所述第一目标比特数用于在编码过程中控制各帧的数据量。
例如,某帧画面复杂度为10,帧组内各帧画面复杂度之和为100,则该帧的分配比例为1/10。实时网速是30Mbps,目标码率为25Mbps,则该帧分配到的比特数为25Mbx1/10=2.5Mb。
本实施例中,能够响应于实时网速的变化,及时将目标码率调整为不大于实时网速的值,能够避免视频播放卡顿。另一方面,按照各帧的复杂度分配比特数,即画面复杂度越高(即用户观众度更高的内容),分配的比特数就越多,即在对该帧压缩时,压缩率可以较低,需要丢失的信息就越少,可以保留更多用户关注的画面信息,使得用户更关注的帧获得更清晰的画质。同时,画面复杂度越低(即用户关注度更低的内容)分配的比特数就越少,即在对该帧压缩时,压缩率需要较高,需要丢失的信息更多,无需保留太多用户不关注的画面信息,降低对总比特数的占用,让用户关注的帧可以分配到更多比特数。
在一个实施例中,如图4所示,所述计算帧组内各帧的画面复杂度,具体包括:
对于帧组内的每个帧,执行如下步骤:
步骤S502,获取当前帧的帧二维像素数组。
步骤S504,取出帧二维像素数组中除了最后一行和最后一列的所有元素,生成第一二维数组。
步骤S506,取出帧二维像素数组中除了第一行和第一列的所有元素,生成第二二维数组。
步骤S58,将第一二维数组和第二二维数组做差,得到第三二维数组。
步骤S510,将第三二维数组中的每个元素求平方,得到第四二维数组。
步骤S512,将第四二维数组中的各元素求和,得到当前帧的画面复杂度。
本实施例中,通过上述方法求得一个值,这个值就是画面复杂度,这个数值代表了图像中所有像素点与其右下方的像素点的差值平方和,这个值就是我们定义的图像的复杂度。这里所定义的复杂度(SSD)可以理解为图像内部变化的程度。如果图像中的像素值变化大,那么这个值就会大,如果图像中的像素值变化小,那么这个值就会小。
在一个示例中,计算画面复杂度的公式表达如下:
complexity=np.sum((frame[:-1,:-1]-frame[1:,1:])**2)
这个公式的具体步骤如下:
首先,我们有一帧图像,将其表示为二维的像素数组,记为frame。
frame[:-1,:-1]:这一步操作是取出原始图像数组中除了最后一行和最后一列的所有元素,生成一个新的二维数组。也就是说,我们得到了一个去除了原图像右边和下边界的新图像。
frame[1:,1:]:这一步操作是取出原始图像数组中除了第一行和第一列的所有元素,生成一个新的二维数组。也就是说,我们得到了一个去除了原图像左边和上边界的新图像。
(frame[:-1,:-1]-frame[1:,1:]):这一步是将前两步得到的两个二维数组做差,也就是每个位置上的像素值相减。由于这两个新的二维数组是原图像分别向右下和左上移动一个像素得到的,所以这一步计算的结果就是原图像中每个像素点与其右下方的像素点的差。
(frame[:-1,:-1]-frame[1:,1:])**2:这一步是将上一步得到的差值的二维数组中的每个元素平方。这样做的目的是消除负差值,使得差值都是正值。
np.sum((frame[:-1,:-1]-frame[1:,1:])**2):这一步是将上一步得到的平方差值的二维数组中的所有元素求和。这样,我们就得到了一个数值,这个数值代表了图像中所有像素点与其右下方的像素点的差值平方和,这个值就是我们定义的图像的复杂度。
这里所定义的复杂度(SSD)可以理解为图像内部变化的程度。如果图像中的像素值变化大,那么这个值就会大,如果图像中的像素值变化小,那么这个值就会小。
如图5所示,在一个实施例中,所述重新分配比特数还包括:
在根据所述分配比例和所述目标码率为各帧分配比特数之后,执行为每个帧的各帧内块分配比特数的步骤;其中,所述每个帧被分割为多个帧内块;
所述为每个帧的各帧内块分配比特数,具体包括:
步骤S602,计算当前帧的各帧内块的画面复杂度以及当前帧所有帧内块的画面复杂度之和。
步骤S604,根据当前帧的各帧内块的画面复杂度与当前帧所有帧内块的画面复杂度之和的比值确定当前帧的各帧内块的第二分配比例。
步骤S606,根据所述第二分配比例和当前帧分配到的比特数为当前帧的各帧内块分配比特数,得到用于作为各帧内块压缩后数据量上限的第二目标比特数。
本实施例中,我们在对各帧根据画面复杂度分配比特数(称之为一级分配)的基础上,进行二级分配,即对各帧的帧内块也根据画面复杂度分配该帧之前分配得到的比特数,这个过程确保我们的比特数分配符合每帧和每块的复杂度。复杂的帧和复杂的块会获得更多的比特数,而简单的帧和块则获得较少的比特数,由于细化到块的层次,进一步提高用户关注帧上的重要内容的画面质量。
需要说明的是,本实施例中计算帧内块画面复杂度的方法与上述实施例中计算各帧画面复杂度的方法一样,都是提高计算帧内块块内像素值变化的平方和(SSD),这样可以量化每个帧内块内的纹理和颜色变化。具体实现过程,可参照上述实施例,
两级处理过程,即先确定每帧的比特数,然后再确定每帧内各块的比特数,这是一个常见的方案,被称为比特分配或比特预算。
以下是这个二级分配的伪代码示例:
#假设我们有M帧,每帧有N个块,每帧的复杂度为frame_complexity[i],每帧内的每个块的复杂度为block_complexity[i][j]
#我们希望整个视频的比特数不超过total_bits
#第一级:帧级别的处理
#Step 1:计算总帧复杂度
total_frame_complexity=sum(frame_complexity[i]for i in range(M))
#Step 2:计算每帧的比特数
frame_bits=[0]*M
for i in range(M):
frame_bits[i]=total_bits*frame_complexity[i]/total_frame_complexity
#第二级:块级别的处理
#对于每一帧,我们根据块的复杂度来分配比特数
for i in range(M):
#Step 1:计算帧内总块复杂度
total_block_complexity=sum(block_complexity[i][j]forj in range(N))
#Step 2:计算每块的比特数
block_bits=[0]*N
forj in range(N):
block_bits[j]=frame_bits[i]*block_complexity[i][j]/total_block_complexity
#此时,block_bits[j]就是我们为第i帧的第j个块分配的比特数
这个过程确保我们的比特数分配符合每帧和每块的复杂度。复杂的帧和复杂的块会获得更多的比特数,而简单的帧和块则获得较少的比特数。
在一个实施例中,所述将目标码率配置为不大于实时网速并重新分配比特数,具体包括:
将目标码率的值配置为实时网速与缓冲系数的乘积;其中,所述缓冲系数小于1。
本实施例中,考虑到实时网速的波动性,有可能A1时间节点检测到的实时网速,但在对帧组的所有帧编码完成的A2时间节点网速又下降了。例如,A1时间节点网速为30Mbps,将码率也设置为30Mbps,当对与30Mbps码率匹配帧组编码完成并准备在A2向网络传输时,发现A2的网速仅为28Mbps,显然无法带宽不足,无法及时将30M比特数的视频数据发送给观众端,造成卡顿。而本实施例中假设缓冲系数为0.9,则在A1时间节点网速为30Mbps,码率将设置为27Mbps,显然,在A2时间节点发送编码好的视频数据不会造成卡顿,起到了在视频编码端的缓冲效果。这与解码端的缓冲效果不同,解码端的缓冲效果是在接收到较多视频数据之后才播放,从而避免卡顿,但是需要观众等待。本实施例中同样实现了缓冲效果,却不需要用户等待,能带来更流畅的观看体验。
在一个实施例中,进行编码时,将一个帧从RGB或YUV图像转换为压缩格式的比特流的过程可以分为以下步骤:颜色空间转换、帧内预测和帧间预测、变换和量化、熵编码。
颜色空间转换:将原始RGB图像转换为YUV颜色空间。YUV空间的主要优势在于它将亮度信息(Y)与色彩信息(U和V)分离,使得后续的压缩过程可以在不损失亮度信息的基础上对色彩数据进行更大程度的压缩。人眼对亮度的敏感度高于色彩,因此这种空间转换有助于压缩同时保持视觉质量。
分割帧:将图像分割为较小的块,如宏块(16x16像素)或CTU(64x64像素),以便在后续的压缩过程中分别进行预测、变换和量化。这样可以更好地利用图像局部的相关性和冗余性,实现高效的压缩。
预测、变换和量化:
预测:利用帧内预测(根据图像内部已编码的块来预测当前块)和帧间预测(根据已编码的参考帧来预测当前帧)来减少冗余信息。这些预测方法利用图像和视频在空间和时间维度的相关性来降低数据量,从而实现压缩。
变换:对预测残差进行DCT或其他变换,将数据从空间域转换到频域。频域具有更好的能量集中性,使得后续的量化操作能够更高效地压缩数据。
量化:通过量化过程将变换系数进行近似,根据设定的量化因子(Q-factor)来控制压缩的程度。较大的量化因子将导致更高的压缩率和更大的图像质量损失。
熵编码:对量化后的数据进行熵编码,例如CABAC编码。熵编码传输数据量最小化的方法,它将高概率的符号编码为较小的码字,而低概率的符号编码为较大的码字。通过熵编码进一步减少数据量,从而实现更高的压缩效果。
通过上述步骤将帧压缩为比特流,可以在保持视觉质量的前提下显著降低视频数据量。不同的编码器(如H.264、H.265等)根据自身特性和设计实现了这些基本步骤,并可能包含更多高级功能与优化。
将一个帧内块进行编码的基本流程如下伪代码所示:
function EncodeFrame(frame,Q_factor):
#1.如果原始帧是RGB,进行颜色空间转换,从RGB转换为YUV
ifframe is RGB:
frame_YUV=RGB_to_YUV(frame)
else:
frame_YUV=frame
#2.分割帧为宏块(16x16像素)或CTU(64x64像素)
blocks=SplitIntoBlocks(frame_YUV)
#3.遍历所有宏块/CTU,进行预测、变换和量化
for block in blocks:
#3.1启用帧内预测(I帧)和帧间预测(P/B帧)
predict_block=IntraFramePrediction(block)
#或者
predict_block=InterFramePrediction(block,reference_frames)
#3.2计算预测残差
residual_block=block-predict_block
#3.3进行DCT或其他变换
transform_block=DCT(residual_block)
#3.4进行量化
quantized_block=Quantization(transform_block,Q_factor)
#4.对量化后的数据进行熵编码(如CABAC编码),输出比特流
bitstream=EntropyEncoding(quantized_blocks)
return bitstream
这个伪代码中,假设当前帧中,一个块称之为原始块(block),根据上述伪代码的流程可知,对原始块进行预测是为了得到一个块,本文称之为预测块(predict_block),然后将原始块跟预测块做差就可以得到残差块(或者叫做预测残差块、residual_block),由于残差块是原始块和预测块的差,所以数据范围比原始块小,用残差块代替原始块可以起到压缩的效果。后续再对残差块进行变换、量化、并将量化后的数据进行熵编码。
在实施的过程中,预测包括帧内预测和帧间预测,为了在压缩时获得更高的压缩率,需要自适应地选择使用运动估计(帧间预测)还是仅在当前帧内进行预测。这通常是基于预测误差和编码复杂性之间的权衡,并不总是使用其中一种。我们采用的原则是,分别先同时启动帧内预测和帧间预测,然后是帧间预测还是帧内预测得到最小的预测误差。这里所说的预测误差是指原始块(待编码帧中的像素块)与预测块(根据编码器预测方法得到的块)之间的差异。预测误差越小,表示预测块越接近原始块,其压缩效果越好。本实施例中使用均方差(Mean Squared Error,MSE)或Sum ofAbsolute Differences(SAD)来衡量预测误差。
如图8所示。预测误差(以SAD为例)可以用以下方式计算:|1-1|+|1-1|+|1-1|+|1-1|+|1-0|+|1-1|+|1-1|+|1-1|=1。这个值表示原始块A和预测块B之间的差异大小。
以下提供一个场景说明本实施例选择帧间预测或帧内预测的方案:假设我们有一个新闻发布会的视频。视频中有一个静止的背景,包括墙壁、发布会背景板和其上的文字。此外,还有一个新闻发言人在面向镜头说话。
在对此视频进行编码时,帧内预测对于静止的背景部分可能会很有效,因为这些部分在连续的几帧之间变化不大。而运动估计对于较长一段时间内显示相同区域的画面也很有效。
以下是一个针对这一场景编写的简化伪代码:
#设置误差阈值。值越大,越倾向于使用帧内预测
error_threshold=0.9
for every_frame in frames_list:
if is_first_frame(every_frame):#第一帧仅仅使用帧内编码(I帧)
apply_intra_frame_compression(every_frame)
else:
for every_block in every_frame:
#尝试使用帧内预测
prediction_block_intra=predict_using_intra_frame_method(every_block)
prediction_error_intra=calculate_prediction_error(every_block,prediction_block_intra)
#尝试使用帧间预测(运动估计)
prediction_block_inter,motion_vector=predict_using_motion_estimation(every_block)
prediction_error_inter=calculate_prediction_error(every_block,prediction_block_inter)
#根据预测误差比较选择最适合的预测方法
if prediction_error_intra<prediction_error_inter:
#使用帧内预测
apply_intra_frame_compression(every_block)
else:
#开启运动估计
apply_motion_estimation(every_block)
在这段伪代码中,我们首先确定当前帧是否为第一帧。如果是第一帧,仅使用帧内编码方法(I帧)。否则,请继续检查当前帧中的每一个块。
对于每个块,我们分别尝试帧内预测和运动估计。我们首先使用帧内方法对当前需要编码的块进行预测,并计算使用帧内方法得到的预测误差。然后尝试使用运动估计对当前块进行帧间预测,并计算该预测方法的预测误差。之后,我们将这两种预测方法的预测误差进行比较。
如果帧内预测误差小于帧间预测误差,则选择使用帧内预测。另一方面,如果帧内预测误差大于帧间预测误差,则启动运动估计。例如,对于新闻发言人这类运动或变化的物体,运动估计可能得到更低的预测误差,因此在这种情况下启动运动估计可以获得更好的压缩效果。判断何时启动运动估计是由编码器自动根据比较预测误差和阈值进行的。
运动向量表示了视频序列中两帧之间的像素块的运动。如果场景中的运动非常复杂,比如有很多物体在不同方向和速度上移动,那么运动向量也会相应地变得复杂。为了便于理解,我们可以考虑一个简单的例子。假设我们有两帧图像,图像的大小为4x4,我们将图像划分为2x2的像素块,如图8所示。
在这个例子中,我们可以看到,每个块在Frame 1到Frame 2之间都向右移动了一个像素位置。所以,对于每个块,其运动向量都是(1,0)。例如,块A在Frame 2中的位置就是块B的位置,块B在Frame 2中的位置就是块C的位置,依此类推。所以这个例子中的运动向量是相对简单的。
但是,如果运动更复杂,比如每个像素块都在不同的方向和速度上移动,那么运动向量就会变得更复杂。比如,如果某个像素块从Frame 1到Frame 2时向右移动了2个像素位置,向下移动了1个像素位置,那么这个像素块的运动向量就是(2,1)。并且一帧中的各个运动物体对应的运动向量均不相同。
总的来说,运动向量的复杂度与视频中的运动的复杂度密切相关。如果运动复杂,那么运动向量也会相应地变得复杂。
当画面中的运动为简单运动时,如果检测到帧间预测误差小于帧内预测误差,就使用帧间预测。虽然帧间预测还需要运动向量,但是一帧内的物体仅仅做简单运动时,这个运动向量一般很小,表示从参考块到当前块的位移。并且如果这些帧都是简单运动(例如画面中仅有一个人朝着一个方向走)的情况下,这些运动向量使用熵编码进行编码时,会压缩成很小的比特流。其原因是,熵编码的目标是尽可能减小数据的比特数。它是根据数据的统计特性来实现这个目标的。具体来说,它会为出现频率较高的符号分配较短的编码,而为出现频率较低的符号分配较长的编码。由于简单运动对应的运动向量相似度很高且重复出现,所以可以使用较短编码,实现很好的压缩。
但是在操作过程中,发明人发现,当在户外直播场景中使用上述方法时,面临着以下的困难:
因为在户外直播场景中,会出现大量的复杂运动,例如一帧中有多个人分别朝向不同方向行走。显然此时的运动向量是随机的,当使用熵编码时,熵编码并不保证输出的数据一定比输入的数据的比特数小。如果输入的数据非常均匀(即简单运动时),即所有符号的出现频率都差不多,那么熵编码可能并不会减小数据的比特数。在极端情况下,如果输入的数据完全随机(例如复杂运动时),那么熵编码可能会增加数据的比特数。因此上述根据预测误差选择帧间预测还是帧内预测的方案,在户外直播场景中有失效的风险,采用根据预测误差选择帧间预测还是帧内预测的方案,本意是为了进一步提高压缩率,但是在户外直播场景中可能在某些情况下反而降低了压缩率。需要说明的是,发现上述问题存在的原因,也是本发明人做出的一个技术贡献。
为解决上述问题,如图6所示,提供了如下实施例
在对当前帧进行编码的过程中,所述方法还包括:
识别当前帧的运动复杂度。
当所述运动复杂度符合对比条件时,执行如下的压缩纠正步骤:
步骤S702,将当前帧分割为多个块;
步骤S704,对于当前帧的每一块:在为当前块选择最佳预测块的过程中,检测到被选中的最佳预测块为第一预测块时,将第二预测块加入到对比序列中;检测到被选中的最佳预测块为第二预测块时,将第二预测块加入到对比序列中;直至为当前帧所有块选择好最佳预测块;其中,第一预测块为与当前块预测误差最小的帧间块,第二预测块为与当前块预测误差最小的帧内块;
步骤S706,按顺序将选择好的最佳预测块加入到预测序列中;
步骤S708,根据预测序列对当前帧的各块进行残差计算、变换、量化以及对量化后的数据进行熵编码,得到第一比特流;
步骤S710,根据对比序列对当前帧的各块进行残差计算、变换、量化以及对量化后的数据进行熵编码,得到第二比特流;
步骤S712,对选择最佳预测块时生成的运动向量进行熵编码,得到第三比特流并将第散比特流与第一比特流合并得到标准比特流;
步骤S714,对比标准比特流数据量与第二比特流数据量的大小;
步骤S716,选择数据量小的比特流进行容器格式封装。
本实施例提供的方案,在户外直播场景中由于运动复杂度高而导致出现视频编码压缩率可能下降的风险时,能够及时识别出该风险,并能够选择数据量更小的比特流用于传输,提升了视频的压缩率。
可以理解的是,在对比序列中,我们只保留帧内的最佳预测块,其目的是,当识别出该帧运动复杂度高的时候,根据上述分析可知,这些帧间的最佳预测块对应的复杂的运动向量可能导致熵编码得到较大数据量的比特流。所以为了获取更小数据量,我们需要剔除帧间的最佳预测块,也就是剔除复杂运动向量可能带来的数据量增加风险。
进一步需要说明的是,如果对于每一帧都执行压缩纠正步骤似乎也可以排除复杂运动向量可能带来的数据量增加风险,但是并不是每一帧都包含复杂运动,为了减少对资源的占用,我们就需要先识别运动复杂度,只有当所述运动复杂度符合对比条件时,才执行压缩纠正步骤,进一步节省了计算资源。
具体的,识别当前帧的运动复杂度,具体包括:
将当前帧以及当前帧的相邻帧共同作为输入数据,输入复杂度识别模型;
获取所述复杂度识别模型输出的运动复杂度分值;其中,所述复杂度识别模型是由多组训练数据训练得到的,所述多组训练数据中的每一组数据均包括由两个相邻帧组成的一维数组和标识该一维数组的运动复杂度分值的标签;
根据所述运动复杂度分值,确定当前帧的运动复杂度。
本实施例中,识别当前帧的运动复杂度是由训练好的神经网络实现的,而非人工知道的规则。其原因是,人工很难根据计算得到的运动向量来拟合出识别复杂运动的规律。例如说,我们并不清楚是在四个物体由四个运动方向时才导致压缩后数据量增加还是还是五个人,或者是其他的原因导致的。人工很难归纳出这些规律。而神经网络具有很强的拟合能力,只要提供足够多的输入和输出数据对,就可以拟合出这些输入和输出数据对之间存在的关系。
本实施例中,我们输入数据是两个相邻帧,标签包括有复杂运动(即运动复杂度为1),无复杂运动(即运动复杂度为0)。具体的,标签是根据上述步骤S702至S716,即对比标准比特流数据量与第二比特流数据量的大小的步骤得到的。例如,将A是当前帧,B是帧间预测块所在的相邻帧,结果是标准比特流数据量比第二比特流数据量大,标签是这两个相邻帧(A和B)构成的一维数组作为输入数据,标签是1。同理,需要采集大量的输入输出对来对模型进行训练。
利用神经网络进行预测,可以提高预测运动复杂度的效率和准确度,保证户外直播场景中对视频的压缩率。
图7示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是手机。如图7所示,该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现视频编码处理方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行视频编码处理方法。本领域技术人员可以理解,图7中示出的结构,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时执行上述视频编码处理方法的步骤。此处视频编码处理方法的步骤可以是上述各个实施例的视频编码处理方法中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述视频编码处理方法的步骤。此处视频编码处理方法的步骤可以是上述各个实施例的视频编码处理方法中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRA)、存储器总线(Rambus)直接RAM(RDRA)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
Claims (9)
1.一种视频编码处理方法,其特征在于,所述方法包括:
检测到实时网速发生变化时,将目标码率配置为不大于实时网速并重新分配比特数;其中,向各帧分配的比特数用于控制编码过程;
基于分配得到的比特数,对采集到的视频进行压缩编码;
将采集到的音频数据按时间顺序分割为多个音频片段,并按照时间顺序将所述音频片段输入语音识别模型,依次得到各语音片段对应的文字;
利用上下文信息纠正所述文字中的错误,并基于纠正后的文字生成字幕;
将所述字幕、音频数据和压缩后的视频进行封装,以便生成直播流;
在对当前帧进行编码的过程中,所述方法还包括:
识别当前帧的运动复杂度;
当所述运动复杂度符合对比条件时,执行如下的压缩纠正步骤:
将当前帧分割为多个块;
对于当前帧的每一块:在为当前块选择最佳预测块的过程中,检测到被选中的最佳预测块为第一预测块时,将第二预测块加入到对比序列中;检测到被选中的最佳预测块为第二预测块时,将第二预测块加入到对比序列中;直至为当前帧所有块选择好最佳预测块;其中,第一预测块为与当前块预测误差最小的帧间块,第二预测块为与当前块预测误差最小的帧内块;
按顺序将选择好的最佳预测块加入到预测序列中;
根据预测序列对当前帧的各块进行残差计算、变换、量化以及对量化后的数据进行熵编码,得到第一比特流;
根据对比序列对当前帧的各块进行残差计算、变换、量化以及对量化后的数据进行熵编码,得到第二比特流;
对选择最佳预测块时生成的运动向量进行熵编码,得到第三比特流并将第三比特流与第一比特流合并得到标准比特流;
对比标准比特流数据量与第二比特流数据量的大小;
选择数据量小的比特流进行容器格式封装。
2.根据权利要求1所述的一种视频编码处理方法,其特征在于,所述利用上下文信息纠正所述文字中的错误,具体包括:
在当前段文字识别到多音词且当前段文字不存在具有相同标签的非多音字时,向上或下一段文字寻找具有相同标签的非多音词字;其中,每段文字对应一段音频,每个多音词具有多个标签,每个标签表示该多音词读音对应的各词所在的词库;
从所述非多音字对应的词库中,选择与所述多音词相同读音的词,进行替换。
3.根据权利要求1所述的一种视频编码处理方法,其特征在于,所述重新分配比特数包括:
选取被采集时间最早的一组未被分配比特数的帧组;其中,所述帧组为由与帧率对应数量的相邻帧构成的帧序列;
计算帧组内各帧的画面复杂度以及帧组内各帧画面复杂度之和;
根据帧组内各帧的画面复杂度与帧组内各帧画面复杂度之和的比值确定帧组内各帧的第一分配比例;
根据所述第一分配比例和所述目标码率为各帧分配比特数,得到第一目标比特数,所述第一目标比特数用于在编码过程中控制各帧的数据量。
4.根据权利要求3所述的一种视频编码处理方法,其特征在于,所述计算帧组内各帧的画面复杂度,具体包括:
对于帧组内的每个帧,执行如下步骤:
获取当前帧的帧二维像素数组;
取出帧二维像素数组中除了最后一行和最后一列的所有元素,生成第一二维数组;
取出帧二维像素数组中除了第一行和第一列的所有元素,生成第二二维数组;
将第一二维数组和第二二维数组做差,得到第三二维数组;
将第三二维数组中的每个元素求平方,得到第四二维数组;
将第四二维数组中的各元素求和,得到当前帧的画面复杂度。
5.根据权利要求3所述的一种视频编码处理方法,其特征在于,所述重新分配比特数还包括:
在根据所述分配比例和所述目标码率为各帧分配比特数之后,执行为每个帧的各帧内块分配比特数的步骤;其中,所述每个帧被分割为多个帧内块;
所述为每个帧的各帧内块分配比特数,具体包括:
计算当前帧的各帧内块的画面复杂度以及当前帧所有帧内块的画面复杂度之和;
根据当前帧的各帧内块的画面复杂度与当前帧所有帧内块的画面复杂度之和的比值确定当前帧的各帧内块的第二分配比例;
根据所述第二分配比例和当前帧分配到的比特数为当前帧的各帧内块分配比特数,得到用于作为各帧内块压缩后数据量上限的第二目标比特数。
6.根据权利要求1所述的一种视频编码处理方法,其特征在于,所述将目标码率配置为不大于实时网速并重新分配比特数,具体包括:
将目标码率的值配置为实时网速与缓冲系数的乘积;其中,所述缓冲系数小于1。
7.根据权利要求1所述的一种视频编码处理方法,其特征在于,识别当前帧的运动复杂度,具体包括:
将当前帧以及当前帧的相邻帧共同作为输入数据,输入复杂度识别模型;
获取所述复杂度识别模型输出的运动复杂度分值;其中,所述复杂度识别模型是由多组训练数据训练得到的,所述多组训练数据中的每一组数据均包括由两个相邻帧组成的一维数组和标识该一维数组的运动复杂度分值的标签;
根据所述运动复杂度分值,确定当前帧的运动复杂度。
8.一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7中任一项所述的视频编码处理方法。
9.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,其特征在于,所述计算机可执行指令用于使计算机执行如权利要求1至7中任一项所述的视频编码处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310548547.4A CN116708934B (zh) | 2023-05-16 | 2023-05-16 | 一种视频编码处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310548547.4A CN116708934B (zh) | 2023-05-16 | 2023-05-16 | 一种视频编码处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116708934A CN116708934A (zh) | 2023-09-05 |
CN116708934B true CN116708934B (zh) | 2024-03-22 |
Family
ID=87833074
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310548547.4A Active CN116708934B (zh) | 2023-05-16 | 2023-05-16 | 一种视频编码处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116708934B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117194818B (zh) * | 2023-11-08 | 2024-01-16 | 北京信立方科技发展股份有限公司 | 基于视频的图文网页生成方法及装置 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103686166A (zh) * | 2013-11-18 | 2014-03-26 | 深圳市云宙多媒体技术有限公司 | 一种基于相关性分析的预测模式快速选择方法及系统 |
CN108028937A (zh) * | 2015-09-25 | 2018-05-11 | 华为技术有限公司 | 视频运动补偿装置和方法 |
CN109561310A (zh) * | 2017-09-26 | 2019-04-02 | 腾讯科技(深圳)有限公司 | 视频编码处理方法、装置、设备和存储介质 |
CN111460793A (zh) * | 2020-03-10 | 2020-07-28 | 平安科技(深圳)有限公司 | 纠错方法、装置、设备及存储介质 |
CN111586410A (zh) * | 2020-06-02 | 2020-08-25 | 浙江大华技术股份有限公司 | 视频编码方法、解码方法及其相关装置 |
CN111971960A (zh) * | 2018-06-27 | 2020-11-20 | Lg电子株式会社 | 用于基于帧间预测模式处理图像的方法及其装置 |
CN113286145A (zh) * | 2021-04-26 | 2021-08-20 | 维沃移动通信有限公司 | 视频编码方法、装置和电子设备 |
CN114339241A (zh) * | 2021-12-20 | 2022-04-12 | 杭州当虹科技股份有限公司 | 视频码率控制方法 |
WO2022088631A1 (zh) * | 2020-10-28 | 2022-05-05 | Oppo广东移动通信有限公司 | 图像编码方法、图像解码方法及相关装置 |
CN115346520A (zh) * | 2022-08-15 | 2022-11-15 | 北京有竹居网络技术有限公司 | 语音识别的方法、装置、电子设备和介质 |
CN115623155A (zh) * | 2021-07-12 | 2023-01-17 | 腾讯科技(深圳)有限公司 | 视频数据处理方法、视频数据处理装置、存储介质 |
CN116016929A (zh) * | 2022-11-21 | 2023-04-25 | 浙江大华技术股份有限公司 | 帧内预测编码解码方法、电子设备及计算机可读存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7587308B2 (en) * | 2005-11-21 | 2009-09-08 | Hewlett-Packard Development Company, L.P. | Word recognition using ontologies |
KR101356207B1 (ko) * | 2006-10-13 | 2014-02-03 | 삼성전자주식회사 | 데이터 인코딩/디코딩 방법 및 장치 |
-
2023
- 2023-05-16 CN CN202310548547.4A patent/CN116708934B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103686166A (zh) * | 2013-11-18 | 2014-03-26 | 深圳市云宙多媒体技术有限公司 | 一种基于相关性分析的预测模式快速选择方法及系统 |
CN108028937A (zh) * | 2015-09-25 | 2018-05-11 | 华为技术有限公司 | 视频运动补偿装置和方法 |
CN109561310A (zh) * | 2017-09-26 | 2019-04-02 | 腾讯科技(深圳)有限公司 | 视频编码处理方法、装置、设备和存储介质 |
CN111971960A (zh) * | 2018-06-27 | 2020-11-20 | Lg电子株式会社 | 用于基于帧间预测模式处理图像的方法及其装置 |
CN111460793A (zh) * | 2020-03-10 | 2020-07-28 | 平安科技(深圳)有限公司 | 纠错方法、装置、设备及存储介质 |
CN111586410A (zh) * | 2020-06-02 | 2020-08-25 | 浙江大华技术股份有限公司 | 视频编码方法、解码方法及其相关装置 |
WO2022088631A1 (zh) * | 2020-10-28 | 2022-05-05 | Oppo广东移动通信有限公司 | 图像编码方法、图像解码方法及相关装置 |
CN113286145A (zh) * | 2021-04-26 | 2021-08-20 | 维沃移动通信有限公司 | 视频编码方法、装置和电子设备 |
CN115623155A (zh) * | 2021-07-12 | 2023-01-17 | 腾讯科技(深圳)有限公司 | 视频数据处理方法、视频数据处理装置、存储介质 |
CN114339241A (zh) * | 2021-12-20 | 2022-04-12 | 杭州当虹科技股份有限公司 | 视频码率控制方法 |
CN115346520A (zh) * | 2022-08-15 | 2022-11-15 | 北京有竹居网络技术有限公司 | 语音识别的方法、装置、电子设备和介质 |
CN116016929A (zh) * | 2022-11-21 | 2023-04-25 | 浙江大华技术股份有限公司 | 帧内预测编码解码方法、电子设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116708934A (zh) | 2023-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11405631B2 (en) | Constrained motion field estimation for hardware efficiency | |
US9350990B2 (en) | Systems and methods of encoding multiple video streams with adaptive quantization for adaptive bitrate streaming | |
CN101189882B (zh) | 用于视频压缩的编码器辅助帧率上变换(ea-fruc)的方法和装置 | |
US20200382793A1 (en) | Method and apparatus for video encoding and decoding | |
US11647223B2 (en) | Dynamic motion vector referencing for video coding | |
CN111277826B (zh) | 一种视频数据处理方法、装置及存储介质 | |
EP3343923B1 (en) | Motion vector field coding method and decoding method, and coding and decoding apparatuses | |
CN107371029B (zh) | 基于内容的视频包优先级分配方法 | |
CN113438501B (zh) | 视频压缩方法、装置、计算机设备和存储介质 | |
US11677987B2 (en) | Joint termination of bidirectional data blocks for parallel coding | |
CN116708934B (zh) | 一种视频编码处理方法及装置 | |
US11949879B2 (en) | Video coding method and apparatus, computer device, and storage medium | |
CN115349263A (zh) | 质量归一化视频转码的动态参数选择 | |
US10021398B2 (en) | Adaptive tile data size coding for video and image compression | |
US20130235928A1 (en) | Advanced coding techniques | |
WO2019036080A1 (en) | ESTIMATION OF CONSTRAINED MOTION FIELD FOR INTERPRETING | |
US10728568B1 (en) | Visual element encoding parameter tuning | |
CN116708933B (zh) | 一种视频编码方法及装置 | |
CN112449189B (zh) | 一种视频数据处理方法、装置及视频编码器、存储介质 | |
Jubran et al. | Sequence-level reference frames in video coding | |
KR20190067577A (ko) | 데이터 인코딩 및 디코딩 장치와 방법 | |
WO2023000182A1 (zh) | 图像编解码及处理方法、装置及设备 | |
Jadhav | Variable rate video compression using a hybrid recurrent convolutional learning framework | |
CN117714700A (zh) | 一种视频编码方法、装置、设备、可读存储介质及产品 | |
KR100944540B1 (ko) | 프레임 스키핑을 이용한 부호화 방법 및 장치 |
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 |