音视频开发(42)---H.264 SVC 简介
H.264 SVC 简介
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CrystalShaw/article/details/81184531
一、概念
SVC(可适性视频编码或可分级视频编码)是传统H.264/MPEG-4 AVC编码的延伸,可提升更大的编码弹性,并具有时间可适性(Temporal Scalability)、空间可适性(Spatial Scalability)及质量可适性(SNR/Quality/Fidelity scalability)三大特性,使视频传输更能适应在异质的网络带宽。
二、概述
SVC以AVC视频编解码器标准为基础,利用了AVC编解码器的各种高效算法工具,在编码产生的编码视频时间上(帧率)、空间上(分辨率)、视频质量方面的可扩展,产生不同帧速率、分辨率、质量等级的解码视频。
- 时间可适性(Temporal Scalability):由于一般视频压缩都会利用运动补偿的手段,纪录位移向量(motion vector)。在某些系统的应用上,可以跳过某几帧用其邻近帧的位移向量内插出该被跳过帧的结果。在解码端同样利用运动补偿算回该被跳过帧。
这张图表示在时间维度上的可伸缩性视频编码。观察预测箭头的组织方式。在这个例子中,定义了四个不同的层(T0到T3)。
为了更直观描述算法实现,这张图中的图片是垂直偏移的,视觉上分离三层。每一层都需要依赖较低层才能被解码,但不需要任何较高层。这允许从顶层开始移除图片,而不影响剩余图片的可解码性。例如,我们假设图例中显示的图层以30 fps的帧速率显示。如果我们移除所有L2层的图片,剩下层(L0和L1)仍然可以成功解码,并且产生一个15fps的视频。如果我们进一步删除所有的L1图像,那么剩下的L0层依然可以被解码并产生一个7.5fps的视频。
- 空间可适性(Spatial Scalability):图形(或视频压缩中的一帧)在压缩编码的时候即存下了多重大小(或分辨率)的结果。让解码端得以视需求解码回所需的图片大小(或分辨率),可能以较小的结果换取解码的效率。通常较小的图片即带有大图片一部分的特性,大图的存储上不需要重复记录这些重复的部分。
与时间可适性原理类似,L0基层为分辨率最小编码数据,级别越高,分辨率越高。当实际应用中需要较低分辨率时,只需丢弃高Level层级数据进行解码。
- 质量可适性(SNR/Quality/Fidelity scalability):在压缩编码的时候将多重品质(qualities)的结果都存下来。让解码端得以视需求解码回所需的图片品质,可能以较低的品质换取解码的效率。通常品质较差的图片仍有一定的代表性,品质较佳的结果在存储上不需要重复记录重复的信息。
- 联合可适性(Combined scalability):结合上述三个扩展性。
上图为空间和时间的可伸缩性示例。我们可以通过扩展时间可伸缩性结构同时实现空间可伸缩性编码。每个图片现在有两部分:基础层分辨率图片的B部分和空间增强层的S部分,这两个部分结合则可生成全分辨率图像。空间增强层一般为水平和垂直方向上基底分辨率的1.5倍或者2倍。这为不同分辨率的视频在进行空间可缩放性编码时提供了便利,例如VGA和QVGA(比率为2)以及1080p和720p(比率为1.5),都可以进行空间可伸缩性编码。空间可伸缩性可以与时间可伸缩性(和SNR)以完全独立的方式相结合。假设在图示例子的全速率和分辨率分别为30fps下的HD高清分辨率(720p),那么我们可以在分辨率(HD、1/4HD)和帧速率(30fps、15fps、7.5 fps)之间进行任意组合。
三、应用
1)监控视频应用场景
监控视频不同的终端支持视频的分辨率不同。传统的方式需要一个服务器编码出不同分辨率视频数据给各个终端。但是增加Spatial Scalability后。
视频采集端,仅需要Spatial Scalability一次编码,就可以提供360p、720p、1080p的数据。大大提升编码效率,降低服务器性能消耗。
另外监控视频流存储的时候一般需要2路,1路质量好的用于存储,1路用于预览。用quality scalability编码可以产生2层的分级码流,1个基本层用于预览,1个增强层保证存储的图像质量是较高的。
2)多人会议应用场景
视频会议终端利用SVC编出多分辨率、分层质量。会议的中心点替代传统MCU二次编解码方法改为视频路由分解转发。在云视讯领域SVC有很大的应用空间。
3)抗网络丢包应用场景
正如《Overview_SVC_IEEE07》第二章描述,虽然看上去Spatial Scalability和quality scalability,给视频会议和监控视频提供了很好的解决方案,但是由于这种方案会增加传输码率,降低编解码器性能、提高编解码器的复杂度、在一些场景下还需要服务器支持SVC层级过滤。这使得SVC的Spatial Scalability和quality scalability到目前为止还没有大规模应用。但是Temporal Scalability可以在不稳定网络视频传输上被使用。
以不可缩放的方式进行视频编码传输时。只有第一张图片的I帧,可独立编码,无需参考其他任何图片。其他所有的图片P帧,都需要参考前面的帧画面进行预测然后编码。两个I帧之间的数据也叫一组GOP。可以看出当一个GOP内的一帧丢失,严重时会导致整个GOP无法解码。
但是增加Temporal Scalability后,我们仅需要通过FEC+NACK方式保护T0层的数据完整性,若其余层的视频帧有丢失,就通过逐级降帧率方案(丢弃Tn-T1之间的数据),还能保证视频通话整体的流畅性。并且Temporal Scalability可以做到后向兼容性,不需要解码器做特殊处理。
四、实现
1)编码
目前在OpenH264的开源代码中已经支持SVC视频编码,但是解码尚未支持。编码参数配置如下:
2)解码
目前仅知道Open SVC Decoder的开源代码支持SVC解码。但是没有深入研究,不太了解实现细节及性能情况。
3)VPX对SVC的实现
根据《HANDLING PACKET LOSS IN WEBRTC》这篇文章可以看出,VP8已经实现SVC设计,并将TL(temporal layers)+ NACK + FEC联合作为QOS的一个方法。
五、协议
SVC算法实现原理,在《Overview_SVC_IEEE07》文档有描述。
SVC与H264协议结合,在《T-REC-H.264-201704-I!!PDF-E》H.264标准的附录G有定义。
SVC的RTP打包及SDP协商,在《rfc6190》有定义。
六、参考
http://ip.hhi.de/imagecom_G1/assets/pdfs/Overview_SVC_IEEE07.pdf
https://www.itu.int/rec/T-REC-H.264-201704-I
https://tools.ietf.org/html/rfc6190
https://en.wikipedia.org/wiki/Scalable_Video_Coding
https://zh.wikipedia.org/wiki/%E5%8F%AF%E9%81%A9%E6%80%A7%E8%A6%96%E8%A8%8A%E7%B7%A8%E7%A2%BC
https://www.jianshu.com/p/2f97027c5088
https://ieeexplore.ieee.org/document/6738383/
音视频开发(42)---H.264 SVC 简介相关推荐
- 【秒懂音视频开发】23_H.264编码
本文主要介绍一种非常流行的视频编码:H.264. 计算一下:10秒钟1080p(1920x1080).30fps的YUV420P原始视频,需要占用多大的存储空间? (10 * 30) * (1920 ...
- 即时通讯音视频开发(五):认识主流视频编码技术H.264
前言 即时通讯应用中的实时音视频技术,几乎是IM开发中的最后一道高墙.原因在于:实时音视频技术 = 音视频处理技术 + 网络传输技术 的横向技术应用集合体,而公共互联网不是为了实时通信设计的. 系列文 ...
- iOS音视频开发八:视频编码,H.264 和 H.265 都支持
我们将通过拆解采集 → 编码 → 封装 → 解封装 → 解码 → 渲染流程并实现 Demo 来向大家介绍如何在 iOS/Android 平台上手音视频开发. 这里是第八篇:iOS 视频编码 Demo. ...
- 音视频开发(四十九)H.264 帧内预测
目录 编码流程和数据格式回顾 4 × 4亮度块的9中预测模式 16 × 16亮度块的4种预测模式 8 × 8 色度块的4种预测模式 JM代码 一.编码流程和数据格式回顾 我们先看下下图来回顾下编码流程 ...
- 音视频开发 RTMP协议发送H.264编码及AAC编码的音视频(C++实现)
RTMP(Real Time Messaging Protocol)是专门用来传输音视频数据的流媒体协议,最初由Macromedia 公司创建,后来归Adobe公司所有,是一种私有协议,主要用来联系F ...
- Android音视频开发基础(六):学习MediaCodec API,完成视频H.264的解码
前言 在Android音视频开发中,网上知识点过于零碎,自学起来难度非常大,不过音视频大牛Jhuster提出了<Android 音视频从入门到提高 - 任务列表>.本文是Android音视 ...
- 音视频开发(24)---H.264视频编码基本知识
H.264视频编码基本知识 一.视频编码技术的发展历程 视频编码技术基本是由iso/iec制定的mpeg-x和itu-t制定的h.26x两大系列视频编码国际标准的推出.从h.261视频编码建议,到 h ...
- 音视频开发总结之一理论基础
一. 音频技术基础概念 1. 声音的物理性质 众所周知,声音是由物体振动而产生的.声音是一种压力波,当演奏乐器或者说话时,它们的振动都会引起空气有节奏的振动, 使周围的空气产生疏密变化,由此就产生了声 ...
- FFmpeg音视频开发实战5 iOS/Android/windows/Linux -陈超-专题视频课程
FFmpeg音视频开发实战5 iOS/Android/windows/Linux -159618人已学习 课程介绍 咨询QQ: 347181469. 本课程适合中,从事音视频,网络通 ...
最新文章
- 限制会话id服务端不共享_会话控制 - able-woman - 博客园
- spring mvc学习(26):处理数据模型--从表单到controller传输数据
- 里能嵌jquery吗_白芸豆里的淀粉阻断成分,能帮助减肥是真的吗?
- 18春学期《计算机应用基础》,18春学期(1709、1803)《计算机应用基础》在线作业及答案.pdf...
- Python中的_main_与_init_详解
- 12306小卡片-鸿蒙智慧出行
- wkhtmltopdf网页转PDF程序安装教程
- bat 下 字符串拆分 类似 split 可以使用 for /f delims
- 剑指Offer:面试题31——连续子数组的最大和(java实现)
- multisim中pwl_Multisim 14电路设计与仿真
- MMD原神动画制作(学习教程二)
- stl文件的解析和在线3d打印
- IP地址和mac地址的区别
- 关于JavaScript继承与原型链的一些理解
- 在HTML中怎么表示空格
- 服务器减少一半,TDengine在华自科技的落地实践
- 2022安全员-B证考试题及在线模拟考试
- springCloud五大神兽(思维导图)
- python二级第三方库汇总
- 指挥计算机工作的程序集,主互操作程序集(PIA)是否要求在计算机中安装Microsoft Office才能工作...