从哪里开始学习音频或视频编解码器?

Vam*_*msi 24 audio video codec

我很困惑知道编解码器内部会发生什么.我想了解音频编码器和解码器内部的元素.如果你能给我一些链接,我可以找到一些好的学习材料,我将非常高兴.

确切地说,我想知道编解码器如何解析媒体文件.

Ric*_*erg 25

您的标题询问A/V压缩,但您的其他评论涉及解析媒体文件和识别其编解码器.这些是非常不同的任务:由不同组织规范和实施,由大多数多媒体库中的不同API执行,并且最重要的是需要非常不同的技能组.

A/V文件格式与任何其他文件格式没有太大区别,后者又只是正式的语法格式.解析,验证和生成的对象图在概念上与任何其他语法没有什么不同 - 在实践中,它们往往比在标准CS课程(编译器,有限自动机)中遇到的语法简单得多.该AVI文件格式是一种过时的在这一点上,但我还是建议,因为那里开始:

  • 今天许多更复杂的格式全部或部分类似于AVI,或者至少假设您熟悉其基本结构
  • AVI是一个更大的多媒体格式系列的成员,称为RIFF,你可以在很多其他地方使用它,例如WAV

与此同时,编解码器是您可能在"消费者"软件中找到的最复杂的算法.他们在学术界和大公司(包括庞大的专利图书馆)的研发部门中取得了很大的进步.要精通编解码器,您至少需要了解以下基础知识:

如果你已经有了不错的背景(例如,你已经拿了一两个本科水平的"工程师数学"类型的课程)那么我就说潜水了.许多最好的A/V编解码器都是开源的:

  • x264(MPEG-4第10部分,又名AVC)
  • LAME(MPEG-1第3层,又名mp3)
  • Xvid(MPEG-4第2部分,与Divx和其他许多人一样)
  • Vorbis(替代的,无专利的音频编解码器)
  • Dirac(基于小波变换的替代,无专利视频编解码器)


Leh*_*ane 10

通常,视频压缩涉及丢弃尽可能多的信息,同时对最终用户的观看体验具有最小的影响.例如,使用二次采样YUV而不是RGB将视频大小切成两半.这是可能的,因为人眼对颜色的敏感度低于对亮度的敏感度.在YUV中,Y值是亮度,U和V值表示颜色.因此,您可以丢弃一些减少文件大小的颜色信息,而不会让观察者注意到任何差异.

之后,大多数压缩技术尤其利用2个冗余.第一个是时间冗余,第二个是空间冗余.

时间冗余指出视频序列中的连续帧非常相似.通常,视频大约为每秒20-30帧,而在1/30秒内没有太大变化.拍摄任何DVD并暂停,然后在一帧上移动它,并注意两张图像的相似程度.因此,MPEG-4(和其他压缩标准)仅对连续帧之间的差异进行编码(使用运动估计来查找帧之间的差异),而不是独立编码每个帧.

空间冗余利用了这样的事实:通常,图像上的颜色扩散往往是非常低的频率.我的意思是相邻像素往往具有相似的颜色.例如,在您穿着红色跳线的图像中,代表您的跳线的所有像素都将具有非常相似的颜色.可以使用DCT将像素值变换到频率空间中,其中可以丢弃一些低频信息.然后,当执行反向DCT时(在解码期间),图像现在没有丢弃的低频信息.

要查看丢弃此信息的效果,请打开MS绘画并绘制一系列重叠的水平和垂直黑线.将图像另存为JPEG(也使用DCT进行压缩).现在放大图案,注意线条的边缘不再那么尖锐,有点模糊.这是因为在压缩过程中丢失了一些信息(从黑色到白色的过渡).阅读本文以获得精美图片的解释

为了进一步阅读,这本书非常好,如果对数学有点重.


wbo*_*acz 2

尝试从这里开始:

Windows Media 编码器入门

http://www.microsoft.com/windows/windowsmedia/howto/articles/introencoding.aspx

更多数据请访问 codecpage.com