lame音频压缩解码(一)Lame知识小解

 

LAME 是最好的MP3编码器,编码高品质MP3的最好也是唯一的选择。LAME本身是DOS下的文件,需要加外壳程序才比较容易使用,也可以在别的软件(比如EAC)中间调用。是一款出色的MP3压缩程序。

 

ID3标签是MP3音乐档案中的歌曲附加讯息,它能够在MP3中附加曲子的演出者、作者以及其它类别资讯,方便众多乐曲的管理。缺少ID3标签并不会影响 MP3的播放,但若没有的话,管理音乐文件也会相当的麻烦。如果你在网上download MP3,里面多半已经写有预设的ID3讯息。如果你想要将其清除重设,使用WinAMP中的“Alt + 3”热键,就能修改MP3档案中之的ID3标签。
  ID3,一般是位于一个mp3文件的开头或末尾的若干字节内,附加了关于该mp3的歌手,标题,专辑名称,年代,风格等信息,该信息就被称为ID3信息,ID3信息分为两个版本,v1和v2版。
  其中:v1版的ID3在mp3文件的末尾128字节,以TAG三个字符开头,后面跟上歌曲信息。
  v2版一般位于mp3的开头,可以存储歌词,该专辑的图片等大容量的信息。
  此外,ID3也就是ID3Tags,其中的“Tag”在英文中名词的一个意思是“标签”,所以“ID3Tags”也就是“MP3文件曲目标签”的意思。
  有些地方以“ID3”这样的简称来代表“ID3Tags”,二者本质是一样的。
  如果没有ID3,那么人们只能根据文件名判断一首歌它是什么内容了,何况就算听出了是什么歌,它的演唱者、专辑名称你也未必背得下来,所以给MP3文件增加内置的标签是理所当然的事情。有趣的是,MP3的标签并没有一个ISO国际标准,ID3的各种版本目前只是一个近乎事实上的标准,并没有人强迫播放器或者编码程序必须支持它。

ID3版本
  ID3 V1是由Eric Kemp在1996年发明的。ID3 V1是一组附加在音乐文件后面的数据,它的长度是固定的128字节。
  其中流派一共定义了79种,流行的播放软件Winamp则把它扩展到了125种,从Blues到Noise到Dance Hall,非常丰富,在许多支持ID3编辑的软件中都可以看到这个列表,但是国内用户似乎不太在意这个标记,大多数人甚至不知道自己的歌曲到底属于哪一个分类。
  这些内容一共只有128个字节,并不算累赘。由于附加在文件尾部,所以播放器不必考虑它的影响,即使不支持ID3标记也不会影响音乐的还原——某些很老的播放器确实可能会在播放到这里的时候发出噪音或者报错。但是标记在文件尾部也会造成一个问题,那就是如果还没有读到文件末尾,我们什么信息也看不到。对硬盘和闪存里面的歌曲这当然不是问题,但是如果你通过流媒体方式直接在网络上收听,就会发现它的缺陷了。
  细心的人会注意到ID3V1.0没有包括曲目序号的定义,所以Michael Mutschler在1997年进行了改进,引入了版本1.1。通过占用备注字段的最后两个字节,用一个00字节作标记,另一个字节改为序号,可以让ID3支持曲目编号了。一个字节的空间让ID3 V1.1支持最高到255的曲目序号,考虑到一张唱片超过256个曲目的可能性极小,这个改进还是相当合理的。

  ID3V2到现在一共有4个版本,但流行的播放软件一般只支持第3版,既ID3v2.3。由于ID3V1记录在MP3文件的末尾,ID3V2就只好记录在MP3文件的首部了。也正是由于这个原因,对ID3V2的操作比ID3V1要慢。而且ID3V2结构比ID3V1的结构要复杂得多,但比前者全面且可以伸缩和扩展。
  下面就介绍一下ID3V2.3。
  每个ID3V2.3的标签都一个标签头和若干个标签帧或一个扩展标签头组成。关于曲目的信息如标题、作者等都存放在不同的标签帧中,扩展标签头和标签帧并不是必要的,但每个标签至少要有一个标签帧。标签头和标签帧一起顺序存放在MP3文件的首部。

 

时间: 2024-08-30 19:48:24

lame音频压缩解码(一)Lame知识小解的相关文章

lame音频压缩解码(二)之编译事例Demo

  简单步骤: 一.下载lame存文件. 二.创建android工程后,解压lame包,拷贝lame文件夹中的libmp3lame文件下的所有.c和.h文件到android工程的jni目录下. 三.从lame包中的include文件夹中,拷贝 lame.h到jni目录下. 四.定义natvie方法. 五.在jni目录下,编写android.mk文件. 六.进入工程的bin/classes目录下,通过javah生成.h文件. 七.根据生成的.h文件,创建相应的devchina.c文件.调用lame

音频压缩(Speex使用&Opus简介)--转

博客地址:http://blog.csdn.net/kevindgk GitHub地址:https://github.com/KevinDGK/MyAudioDemo   一简介 二局域网语音配置 三Speex 1 简介 2 技术特点 3 开发-语音压缩 4 相关计算 四Opus - 音频编解码器中的瑞士军刀 1 简介 2 技术 3 开发插件 4 版本信息 libopus 113稳定发行版 5 对比 6 模块API文档 61 Opus Encoder 类型定义 方法 详细描述 类型定义文档 方法

信号-安卓开发 如何将float数组 进行音频编解码 转换成wav音频格式 储存到sd卡内部

问题描述 安卓开发 如何将float数组 进行音频编解码 转换成wav音频格式 储存到sd卡内部 最近正在学习安卓音频相关的一些知识,再SD卡里面读取一个wav音频文件,然后对这个文件进行噪音消除,最后输出的数据都是float格式的,这些数据用matlab中的wavwrite函数转换成wav是没有问题的,但是在安卓上如何将这些数据转换成wav还需要大神们请教,应该需要编解码的过程,如果有做这方面的大神 请知道指导...谢谢了 这段代码是将IFFT处理后的文件储存到res里面,因为是分帧进行的信号

视音频编解码基本术语及解释

         整理了一些基本视音频术语,用于入门和查询使用. H264: H264是视频的标准,是MPEG4-10,基于内容的高效编码方式. H.264/MPEG-4第10部分,或称AVC(AdvancedVideo Coding,高级视频编码),是一种视频压缩标准,一种被广泛使用的高精度视频的录制.压缩和发布格式.第一版标准的最终草案于2003年5月完成. H.264/MPEG-4 AVC是一种面向块的基于运动补偿的编解码器标准.由ITU-T视频编码专家组与ISO/IEC联合工作组--即动

[总结]FFMPEG视音频编解码零基础学习方法--转

ffmpeg编解码学习   目录(?)[-] ffmpeg程序的使用ffmpegexeffplayexeffprobeexe 1 ffmpegexe 2 ffplayexe 3 ffprobeexe ffmpeg库的使用视频播放器 1 ffmpeg库的配置 2 最简单的视频播放器 3 相关结构体的研究 ffmpeg库的使用音频播放器 1 最简单的音频播放器 ffmpeg库的使用一个真正的播放器ffplay 1 真正的播放器 ffmpeg库的使用编码 1 编码 2 转码 ffmpeg源代码分析 F

FFMPEG视音频编解码零基础学习方法

在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的"大神",有的是刚开始学习的初学者.在和大家探讨的过程中,我忽然发现了一个问题:在"大神"和初学者之间好像有一个不可逾越的鸿沟."大神"们水平高超,探讨着深奥的问题:而初学者们还停留在入门阶段.究竟是什么原因造成的这种"两极分化"呢?最后,我发现了问题的关键:FFMPEG难度比较大,却没有一个循序渐进,由简单到复

Speex 音频编解码

Speex 音频编解码 2010-08-26 17:14  // demo.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <speex/speex.h> #include <stdio.h> #include <ostream> #include <speex/speex_preprocess.h> #i

音频编解码-speex库的使用方法

Speex是近年来开发出的一套功能强大的语音引擎,能够实现高质量和低比特率的编码.它不仅提供了基于码激励线性预测(CELP)算法的编/解码模块, 而且在其最新发布的版本中还提供了声音预处理和声学回声消除模块,为保障IP网络中的语音通信质量提供了技术手段.此外,Speex还具有压缩后的比特率 低(2~44 kbps)的特点,并支持多种比特率.这些特点使得Speex特别适合VoIP的系统. 虽然是开源的,但是使用的人还不是很多,网上的资料也很少,下面简单给大家介绍一下如何使用speex的API.  

音频编解码·实战篇(1)PCM转至AAC(AAC编码)

1 下载安装 FAAC 这里的安装过程是在 Mac 和 Linux 上实现的,Windows可以类似参考. wget http://downloads.sourceforge.net/faac/faac-1.28.tar.gz tar zxvf faac-1.28.tar.gz cd faac-1.28 ./configure make sudo make install 如果才用默认的 configure 中的 prefix path,那么安装后的 lib 和 .h 文件分别在/usr/loc