网易视频云:视频压缩编码浅谈

在这个全民直播时代,用户对视觉信息表达越来越重视,也越来越强调提高视频主观质量的需求,今天,我们就带着这些用户问题,讨论下视频压缩编码这项技术
  1. 视频为什么要压缩?
  视频即连续的图像,数字化后的图像或视频信息是海量的,举一个具体的例子,摄像头拍摄的一幅静态图像空间像素点(画面大小,也即分辨率) 640*480 个,每个像素点由RGB三元素组成,每个元素由8bit二进制位表达,则一副数字图像的大小为:
   640*480*3*8 = 7372800 bits
  视频是由很多幅图像组成,人眼感知视频播放流畅一般为24fps(frame persecond,简称fps),根据视觉暂留原理,要达到最基本的视频播放效果大约也需要10fps的速度,我们这里以24fps代表一般情况,电影胶卷都是以这个帧率在拍摄,也就是视频的1秒由24幅静态图像组成,则一秒产生的视频信号量为:
  
  640*480*3*8*24 = ?172 mbps,
  原始视频的大小由此可见,一秒耗尽172m,如果我们是在4g下直播,不到6秒就消耗1g流量,那直播不超过几分钟,流量包就爆啦,
  2. 视频为什么能压缩?
  压缩编码的前提是信息存在冗余,去掉冗余的信息,达到压缩的目的。那么视频信息有冗余么?当然有,视频信息作为普通的计算机信息数据一种,首先就存在着统计冗余,譬如我们发送一个视频文件给对方,我们会先尝试将其像其它普通文本文件一样用zip或rar压缩一下,减小一下空间和传输带宽消耗。其次,视频作为图像,存在空间冗余,一副数字化的图像各个像素点的值是缓慢变化的,像素值与其周围几个像素点的值具有很大的相关性,譬如一副图像的背景是一大片的红色,这很多一样的像素值就是空间上的冗余。再次,视频作为运动着的图像,存在时间冗余,即用视频采集设备拍摄的一幅幅图像之间是缓慢变化的,连续两个或多个图像之间是存在相关性的。最后,视频作为人眼视觉感知,存在视觉冗余,人眼对视频的激烈变化的部分往往不敏感,就如人耳对20-20000分贝以外的声音不明感一样,正是这种人眼视觉冗余,提供了我们视频有损压缩的前提条件。
  3. 视频如何压缩?
  压缩方法从大的方面分为 有损压缩,无损压缩,譬如我们用zip给任意文件打包压缩,压缩包能够通过解zip恢复成原来的文件,毫发无伤,所有数据信息没有任何丢失,这种压缩方式就是无损压缩,无损压缩有其卓越的优点:保真性,在一些卫星传图,医学X光图像视频等领域显得尤为重要,然后,它也有缺点,那就是压缩率不高,大概在 2 到5倍率 之间。
  另一种是 有损压缩,譬如压缩图像或者视频时,会根据人眼视觉感知特性,对那些人眼不敏感的数据不传输,牺牲一部分不重要的信息,来提高压缩率,当然压缩包经过解压也无法恢复那部分数据了,信息就丢失了,压缩解压后的图和原始的图是有差异的,这也就解释了 "主播看到自己的预览视频这么美,这么清晰,为什么观众看到的却有点模糊呢?"?
  视频信息的压缩混合了有损以及无损压缩编码方法,一般我们直播应用中的视频压缩都是采用有损压缩方式,来提高压缩率,降低存储以及传输带宽,一般标准视频编码的压缩率能达到几十倍甚至几百倍
  4. 视频压缩编码的主流技术H264编码介绍
  从 上世纪八十年代的推出第一代视频编码标准H120开始到现在的下一代视频编码H265,视频编码技术的发展一直吸引着工业界以及学术界的共同关注。其中国际组织:联合视频组(JVT)不遗余力的致力于视频编码标准的发展,不断提高视频压缩效率。
  从目前市场运用上看,无论是互联网应用,还是硬件芯片集成,最主流的视频编码技术依然是H264,下面结合压缩理论简单介绍下H264所采用的编码技术
  1) 去除数据统计冗余:H264采用两种熵编码方式: CAVLC ( 基于上下文的可变字长编码)和CABAC(基于上下文的二进制算数编码),CAVLC实现相对简单,编码效率高,但压缩率要比CABAC低15%左右,CABAC复杂度高,可以分场景采用不同的熵编码,让视频压缩后的平均码长接近信源熵值。
  
  2) 去除时间shang冗余:H264 采用帧间预测编码,当前像素块的编码参考之前已经编码重建帧的相应像素块,当前图像与前面的参考图像很相似(譬如视频画面相对静止)这时候帧间预测残差会很小,码率很低,相反,画面改变越大越快,帧间预测残差值就越大,压缩需要的bit数九越多,这也就解释了,当设定的最大允许码率一定的情况下“为什么主播的手机晃动起来,画面就有点模糊,不动就好清晰好清晰呢”。
  3) 去除空间冗余:H264采用帧内预测编码方式,当前像素编码参考之前已经编码重建的像素值进行,如果像素变化缓慢,那么预测残差将会很小,甚至为0,码率大大降低,这也就是为什么 我们传输黑色视频(手机摄像头被遮住),或者其他纯色视频,码率很低,设置的最大码率根本用不掉的原因。除此以外,H264采用变换编码的方式,将残差从空间域利用DCT(离散余弦变换)变换到频率域,结合差异量化编码方式,更进一步的去除空间冗余
  4) 去除人眼视觉冗余:H264编码器的输入图像或视频的色彩空间采样格式一般为YUV420,不同于RGB采样,YUV420利用人眼视觉对像素亮度分量更敏感,而色度分量没那么敏感,进一步将图像或视频的色度分量做2:1的采样,4个亮度分量,2个色度分量,另外,H264 采用量化编码的有损编码方式,也正是利用了人眼视觉对高频细节部分不敏感的理论基础,将残差系数低频部分采用更细的量化参数,而高频部分则粗化量化,一般的视频压缩失真也正是这个阶段产生。
  当我们对视频压缩技术有个大概的了解之后,我们就可以回答:“如何提高观众端的视频清晰度呢?”,当给定的编码器压缩率达到极限时,我们唯一能做的就是提高视频编码码率了。
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值