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

Audio 从哪里开始学习音频或视频编解码器?,audio,video,codec,Audio,Video,Codec,我非常困惑地知道编解码器内部发生了什么。我想了解音频编码器和解码器内部的元素。如果你能给我提供一些链接,在那里我可以找到一些好的学习材料,我将非常高兴 确切地说,我想知道编解码器是如何解析媒体文件的。尝试从这里开始: Windows Media编码器入门 更多的数据可以在codepage.com上找到通过使用MPEG4解码器,我对MPEG4格式有了很好的了解。对于视频和音频,有许多不同的参考(和开源实现)编码器和解码器。所以,从维基百科开始,看看书:它有很好的概述和链接(如果你有幸“打开规范”

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

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

尝试从这里开始:

Windows Media编码器入门


更多的数据可以在codepage.com上找到

通过使用MPEG4解码器,我对MPEG4格式有了很好的了解。对于视频和音频,有许多不同的参考(和开源实现)编码器和解码器。所以,从维基百科开始,看看书:它有很好的概述和链接(如果你有幸“打开规范”)。然后击中震源

有太多不同的编码方式(许多涉及某种形式的压缩,无论是有损压缩还是无损压缩),整个问题通常因必须处理帧容器和“子格式”而变得更加复杂

玩得开心

  • 狄拉克:http://diracvideo.org/specifications/
  • MPEG-4:http://en.wikipedia.org/wiki/MPEG-4
  • JPEG:http://jpeg.org/public/jfif.pdf

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

A/V文件格式与任何其他文件格式没有太大区别,而其他文件格式恰恰相反。解析、验证和生成的对象图在概念上与任何其他语法都没有区别——实际上,它们往往比标准CS课程中遇到的语法(编译器、有限自动机)简单得多。这一点有点过时,但我仍然建议从这里开始,因为:

  • 今天许多更复杂的格式在整体或部分上类似于AVI,或者至少假设您熟悉其基本结构
  • AVI是一个被称为RIFF的更大的多媒体格式家族的成员,您可以在许多其他地方找到它
与此同时,编解码器是“消费者”软件中最复杂的算法之一。他们在很大程度上利用了学术界和大公司研发部门(包括其庞大的专利库)的进步。要精通编解码器,您需要至少了解以下基本知识:

  • 常用算法
  • (以及尽可能多的其他DSP)
  • /心理视觉建模
  • 制作/广播生命周期、传统视频设备和标准以及令人讨厌的旧物理造成的实际限制,包括:
    • 固定的
  • 当今CPU体系结构带来的实际限制,尤其是:
    • 优化
    • 混叠、预取等
如果你已经有了一个不错的背景(比如,你修过一两门本科水平的“工程师数学”类课程),那么我建议你马上开始。许多最好的A/V编解码器都是开源的:

  • (MPEG-4第10部分,又名AVC)
  • (MPEG-1第3层,又名mp3)
  • (MPEG-4第2部分,与Divx和许多其他文件相同)
  • (可选,无专利音频编解码器)
  • (另一种基于小波变换的无专利视频编解码器)

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

在这之后,大多数压缩技术特别利用2个冗余。第一种是时间冗余,第二种是空间冗余

时间冗余注意到视频序列中的连续帧非常相似。通常,视频的帧数为每秒20-30帧,在1/30秒内变化不大。拍摄任何DVD并暂停,然后将其移动到一帧上,并注意这两张图像的相似性。因此,MPEG-4(和其他压缩标准)不单独编码每个帧,而只编码连续帧之间的差异(使用以查找帧之间的差异)

空间冗余利用了这样一个事实,即通常图像中的颜色分布频率非常低。我的意思是相邻的像素往往有相似的颜色。例如,在您穿着红色套衫的图像中,代表您的套衫的所有像素的颜色都非常相似。可以使用DCT将像素值转换为频率空间,在频率空间中可以丢弃一些低频信息。然后,当执行反向DCT时(在解码期间),图像现在没有丢弃的低频信息

要查看丢弃此信息的效果,请打开MS paint并绘制一系列重叠的水平和垂直黑线。将图像另存为JPEG(也使用DCT进行压缩)。现在放大图案,注意线条的边缘不再那么锐利,有点模糊。这是因为一些信息(从黑色到白色的转换)在压缩过程中被丢弃了。读一读关于尼斯p的解释