H.264可伸缩编码SVC

第十章  H.264可伸缩编码SVC

10.1  概述

(1)自适应编码(Adaptive Coding)

 根据网络状况,编码器可以使用码率控制技术,改变量化参数或编码帧率来生成所需速率的码流。

(2)转码技术(Transcoding)

 根据网络状况和用户端情况,丢弃压缩数据中不会严重影响视频质量的部分,以获得较低码率/分辨率/帧率的视频流。

(3)联播(Simulcast),也就是多码流切换。

(4)多描述编码(Multiple Description Coding)。

(5)可伸缩编码(Scalable Video Coding)。

 实质是按照重要性分解视频信息,对分解的各个部分按照其统计特性进行编码。可伸缩编码允许一次压缩后视频能以不同的码率、帧率、空间分辨率和视频质量解码。

 

10.2  SVC的基本原理

视频编码的可伸缩性包括时域可伸缩性、空域可伸缩性、质量可伸缩性等。时域可伸缩性是指将视频流分解成表示不同帧率的信息;空域可伸缩性是指将视频流分解成表示不同分辨率的信息;质量可伸缩性是指将像素值分解成不同级别。

根据可伸缩编码的压缩编码架构的不同,可以分为基于DCT变换的视频编码和基于小波变换的可伸缩视频编码。

可伸缩编码的基本类型:

(1)传统的可伸缩编码:时域、空域、质量的可伸缩编码。

(2)精细粒度可伸缩性编码

(3)渐进精细粒度可伸缩性编码

10.2.1  传统可伸缩性编码

 

10.3  H.264SVC

10.3.1  空域可伸缩性

为了支持空域可伸缩编码,SVC沿用了传统的多层编码方案。每一个空间层对应一个空间分辨率,在每一个空间层,跟非伸缩编码一样,使用帧间预测和帧内预测。此时为了改善编码效率引入层间预测。

1、层间预测

在分层编码的概念下,不同层间的预测算法是改善编码效率的关键。层间预测算法的设计原则是尽量多地利用基础层的信息来改善增强层的率失真性能。层间预测机制只能在访问单元(Access Unit)内部进行,且被预测的帧,其空间层级应该高于参考帧。

(1)层间运动预测

     增强层待编码宏块的分割模式、运动矢量和参考帧序号都将直接继承其对应的基本层宏块的值或尺度伸缩之后的值,所以实际上只需要传递残差信息,从而节省了编码比特数。

(2)层间残差预测

     层间残差预测可以用到所有的帧间预测编码的宏块,相应的8x8的基础层子宏块的残差信号,在经过双线性滤波器上采样后,可以用来作为增强层宏块的预测残差信号。

(3)层间帧内预测

     当一个增强层采用BlSkip预测编码模式时,其对应的基本层的8x8子宏块采用帧内编码模式时,就必须采用层间帧内预测模式。

 

2、空间可伸缩扩展

H.264支持任意分辨率的空间可伸缩编码。唯一的限制是水平和垂直的分辨率从基本层到增强层不能减小。

 

10.3.2  时域可伸缩性

运动补偿时域滤波器技术(MCTFMotion Compensated Temporal Filter)在SVC标准初期被认为是一种有效的提供时间可分级功能的工具。但MCTF的开环结构在实际应用中很容易造成编解码两端的匹配错误,跟新算子也大大增加了算法和内存的开销。随着层次B帧预测技术的提出,大多数情况下性能要超出MCTFJVT最终确定采用B帧哥预测技术作为实现时域可伸缩的标准方式。

在分层预测结构下,可以使用一下几点来改善编码效率。

(1)多分级量化

     在分层预测结构的编码过程中,一个重要的问题是如何针对不同的时间层来选择量化参数。基本层必须有最高的保真度,它是其他层级图像运动补偿的参考。为了降低计算复杂度,可充分利用不同层次视频码流之间的相关性,假设基本层的量化参数是QP0,对于时间层级为K>0的增强层量化参数可以选择为QPk=QP0+3+k

     (2)时间直接模式

     对于层次B帧预测通常使用时间直接模式。

     (3)运动搜索

      JM模型指出双预测块的运动向量是由两个参考列表的独立运动搜索决定的。

10.3.3  质量可伸缩性

质量可伸缩是空间可伸缩的一个特例,此时基本层和增强层的空间尺寸时相同的。

因此可以使用一种显而易见的方案来实现质量分级,这就是粗粒度质量可伸缩编码(CGS)。为了增加比特流码率自适应的灵活性,增加可支持的码率点个数,SVC的设计中包括了精细粒度质量可伸缩编码的技术(FGS)。但由于FGS实现复杂度过高,JVT提出了一种替代方案:中等粒度质量可伸缩方案(MGS)。

1、漂移控制

编码端和解码端必须是的运动补偿预测操作所需的参考图像信息一致,否则解码端的重建图像与编码端的图像就会出现差异,这就是漂移。

2、渐进精细片

质量可伸缩性通过反复的降低量化步长,从最小质量层开始通过逐步增加图像细节,这称为渐进精细(Progressive Refinement)。

3、比特流提取

比特流提取的主要任务是对编码码流进行分析,并根据解码端用户的需求对原始码流进行切割。

 

10.3.4  H.264的扩展

1NAL扩展

新的结构在原NALU的头部增加了3个字节专门用于表示可伸缩级。

2、Slice扩展

    H.264SVC标准扩展了几种Slice类型。

转载于:https://www.cnblogs.com/lufei-dynasty/p/3210671.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/462281.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

shell 需要注意的点

#!/bin/bash set -o nounset set -o errexit#set -o nounset #在默认情况下,遇到不存在的变量,会忽略并继续执行,而这往往不符合预期,加入该选项,可以避免恶果扩大,终止脚本的执行。#set -o err…

C#将Json字符串反序列化成List对象类集合

usingSystem.IO;usingSystem.Web.Script.Serialization;usingSystem.Runtime.Serialization.Json;//工具类publicstaticList<T> JSONStringToList<T>(thisstring JsonStr){JavaScriptSerializer Serializer newJavaScriptSerializer();List<T> objs Serial…

mysql Access denied for user root@localhost错误解决方法总结

代码如下 复制代码 # /etc/init.d/mysql stop # mysqld_safe --usermysql --skip-grant-tables --skip-networking & # mysql -u root mysql mysql> UPDATE user SET PasswordPASSWORD(newpassword) where USERroot; mysql> FLUSH PRIVILEGES; mysql> quit # /e…

有趣的反直觉的“三门问题”

————— 第二天 ————— ———————————— 如何进行分析呢&#xff1f;我们不妨回到问题的起点&#xff0c;也就是参与者即将进行初次选择&#xff0c;主持人还没有打开一扇空门的时候。 从上图可以看出&#xff0c;我们总共面临着6种不同的子局面。这些子局面的…

centos 开发环境配置

yum groupinstall Development Tools 通过上面命令下载开发所需要的工具 http://unix.stackexchange.com/questions/140350/linux-g-command-not-found

转使用Moq让单元测试变得更简单

【ASP.Net MVC3 】使用Moq让单元测试变得更简单 前几天调查完了unity。现在给我的任务是让我调查Moq。 以下是自己找了资料&#xff0c;总结并实践的内容。如果有表述和理解错误的地方。恳请指正。 什么是Moq&#xff1f; Moq&#xff08;英语发音是Mock-you 或者只是mock&…

Web Service实现分布式服务的基本原理

简单的说&#xff0c; 就是客户端根据WSDL 生成 SOAP 的请求消息&#xff0c; 通过 HTTP 传输方式&#xff08;也可以是其它传输方式&#xff0c; 如 FTP 或STMP 等&#xff0c;目前 HTTP 传输方式已经成为 J2EE Web Service 的标准&#xff09;传给对方&#xff0c; 服务方实现…

使用docker部署mysql主从复制集群

一、环境搭建 虚拟机环境&#xff1a;centos7 IP:192.168.37.134 用户名&#xff1a;root 密码&#xff1a;123 启动3个容器&#xff0c;一个是master&#xff0c;端口是3307&#xff0c;另外两个是slaver&#xff0c;端口是3308和3309 docker pull mysql:5.7docker run -p …

猛然回首 在这里4年了

猛然回首 在这里4年了 今天浏览博客园的时候 才发现 自己还有一个博客园的账号&#xff0c; GOD&#xff01; 4年了&#xff0c;猛然回首 自己又老了&#xff0c;这些年 不知道自己 搞了些什么东西&#xff0c;这日子过的真是 哎&#xff01;posted on 2012-01-11 17:25 RIBBIT…

.js——alert()语句

在.js文件中&#xff0c;通过alert()语句可以生成弹出框&#xff0c;弹出框中的内容message部分可以是常量字符串&#xff0c;也可以是含有变量的字符串连接&#xff0c;下面举几个例子简要说明下&#xff1a; 1. 参数为常量字符串 alert("warnningArray[1]:124"); 运…

Linux 编译安装Boost

http://blog.csdn.net/zgl_dm/article/details/8363843 linux平台下要编译安装除gcc和gcc-c之外&#xff0c;还需要两个开发库&#xff1a;bzip2-devel 和python-devel&#xff0c;因此在安装前应该先保证这两个库已经安装&#xff1a;#yum install gcc gcc-c bzip2 bzip2-deve…

如何利用System.Net.Mail类发送EMAIL

废话不多说&#xff0c;直接上代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net.Mail;namespace MailSender {class Program{static string strHost string.Empty;static string strAccount string.Empty;stat…

特殊的质数肋骨

特殊的质数肋骨 时间限制: 0 Sec 内存限制: 128 MB题目描述 农民约翰的母牛总是生产出最好的肋骨。你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们。 农民约翰确定他卖给买方的是真正的质数肋骨,是因为从右边开始切下肋骨,每次还剩下的肋骨上的数字都组成一个质…

安装perl5.10.0

目的&#xff1a;本人使用的Linux系统CentOS5.8中最新的perl版本是5.8.8。学习perl语言入门&#xff0c;一般情况下够用&#xff0c;但是在使用given-when这种结构的时候&#xff0c;就必须指定5.10版本(use 5.0.10.0;)步骤&#xff1a;1. wget http://www.cpan.org/src/perl-5…

Linux下编译Jsoncpp

载软件包:jsoncpp-src-0.5.0.tar.gz scons-2.1.0.tar.gz # tar zxvf scons-2.1.0.tar.gz # tar zxvf jsoncpp-src-0.5.0.tar.gz 设定环境变量【关键】,绝对路径# export MYSCONS解压的路径 # export SCONS_LIB_DIR$MYSCONS/engine # cd jsoncpp-src-0.5.0 # python $MYSCONS…

逛公园

传送门 解法: 先不考虑0环 很容易想到dp 状态转移方程也很容易想到 设\(d[i]\)为n到i的最短路长度 当然此时是反向图 反向图是为了防止1能到达的点到达不了n而出错\(dp[i][j]\)表示到达i点距离为\(d[i]j\)的路径个数 则 x->y有路径 \(dp[x][k]dp[y][k-(d[y]edge(x,y)-d[x])]…

poj2299 ( bit )

树状数组求逆序数&#xff0c;先排个序&#xff0c;从大到小往插&#xff0c;计算在他的前面有几个比他大&#xff0c;就是他的逆序数。 &#xff08;PS&#xff1a;最近对数量越来越不敏感了&#xff0c;老在这上面错。多做题&#xff0c;不能断啊&#xff09; 1 #include <…

Linux下编译安装openssl

(1) 下载openssl压缩包。在 http://www.openssl.org/source/ 选择合适版本的压缩包&#xff0c;一般选择标记有“[LATEST]”的包&#xff0c;假设其link为 http://www.openssl.org/source/openssl-1.0.1c.tar.gz&#xff0c;用下面的下载&#xff1a; # wget http://www.openss…

前端小插件之手写js循环滚动特效

很多前端都离不开滚动的特效&#xff0c;调用插件繁琐&#xff0c;后期更改麻烦&#xff0c;考虑到这些因素&#xff0c;自己写了一套无限循环滚动的小特效。 首先滚动特效很好写&#xff0c;用css就可以完成&#xff0c;下面写一个基础css向上循环滚动特效 html <div class…

敏捷开发一千零一问系列之七:怎样对待有看法的徒弟?

这是敏捷开发一千零一问系列的第七篇。&#xff08;之一&#xff0c;之二&#xff0c;之三&#xff0c;问题总目录&#xff09;问题松结对编程中&#xff0c;师傅对徒弟安排任务时&#xff0c;对于有想法的徒弟提出的意见怎样解决&#xff1f;方案步骤0&#xff1a;正心&#x…