LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: think

大家讨论一下mp3编码原理怎么样?

[复制链接]
发表于 2005-8-6 23:26:11 | 显示全部楼层
Post by netjune
mpg123不就是一个专门的mp3解码器吗, 看看源码

这种算法是关键的东西看代码可不是一个好办法。建议还是看看专业的文档,最好有硬件实现的,那些硬件的框图看起来比较清楚,易懂。这不是什么商业秘密,应该有得看的。最好找些期刊网看。
回复 支持 反对

使用道具 举报

发表于 2005-8-7 01:43:39 | 显示全部楼层
多媒体上的知识
具体的忘记了,只知道是一套压缩编码标准,其中用到的具体知识很多,由专门组织制定.
回复 支持 反对

使用道具 举报

发表于 2005-8-7 10:16:15 | 显示全部楼层
这些东西的难点肯定不是采集和编成,主要是压缩和编码的原理,还是去找相关的标准吧,看源代码肯定很郁闷。
就象上学的时候学数字信号处理,FFT实验的时候,给了算法后随便一个人都能把程序写出来,但是要是想从别人的程序里读出算法,难啊,乱啊,呵呵~~~
回复 支持 反对

使用道具 举报

发表于 2005-8-8 15:03:45 | 显示全部楼层
Post by think
信号原理我学过,如果网络上可以搜索得到我就不用在这里问了
事实上数字语音采样处理我已经用arm做出来了,并且效果不错,只不过是不清楚压缩算法,只能把8kHz的采样数据压缩后放入flash,如果可以用较好的压缩算法进行处理,那么就可以大大提高数据存储量

如果学过DSP的话,那么从书上就能找到FIR、IIR的公式,把它变成代码简单的很。
另外据说(只是听说),8K的采样率如果再用MP3的算法压缩,在保证质量的情况下其压缩比很差。人耳已经可以分辨20K的频率,8K的采样率已经远低于这个频率了。语音处理中(采样率一般是8K或16K)一般用其他的方法压缩,具体算法我就搞不清楚了。
回复 支持 反对

使用道具 举报

发表于 2005-8-8 15:30:34 | 显示全部楼层
用 ogg 格式好了。
回复 支持 反对

使用道具 举报

发表于 2005-8-8 22:58:20 | 显示全部楼层
Post by gamedragon
8K的采样率如果再用MP3的算法压缩,在保证质量的情况下其压缩比很差。人耳已经可以分辨20K的频率,8K的采样率已经远低于这个频率了。语音处理中(采样率一般是8K或16K)一般用其他的方法压缩,具体算法我就搞不清楚了。


一般来说,语音(电话中)一般滤波器通带是300Hz-3400Hz,在这个范围外的声音信号就被过滤掉了,对于语音通信来说,这个没有什么影响。 根据抽样定理,采样率须大于最高的频率的两倍
即3400HzX2 ,所以国际长途电话的标准采样定在8KHz,每个抽样值用8bit表示。所以长途电话(现在都是数字交换的)的数据速率是64Kbps, 不过一般手机通信是不采用这种标准。

mp3的主要问题与上述没有关系。
一般CD音频抽样率为44.1KHz,DVD更高,好像是192K的。每个抽样值一般是16bit表示。用44.1KHz抽样得来音频数据一般不经过压缩就是CD光盘上的音乐了。

mp3采用的是有损压缩,也就是说压缩后再解压不能得到与原来一样的音频,但这对于音频数据来说,这个并没有多大的关系。

一般来说,有这样的一种方法可以用于压缩。先把一些的数据分块(段),然后对这些段作FFT(快速傅立叶变换)或离散余弦变换,主要作用是把时域(在这里可以简单地认为声音数据是以时间作为自变量x的函数)变到频域(频域即是以声音数据的频率f为自变量的声音函数),之后可以看看那一个频段的分量很小,可以忽略。一般来说很多时候,声音都是主要集中某一个频段的,所以其他频段的分量很小,可以略去不要(有损了)。一般来说,都是不要高频那一段,因为那一段的每个频率f上取值很小。这样保存好频域这些频段数据就可以达到压缩的目的。

播放时再反变换就可还原原声音了。

快速傅立叶变换(离散)有这样一个性质FFT(f(x,y))-- 快速傅立叶变换--> F(X,Y)   
变换后的X,Y范围与原来的x,y是一样的,这样如果去掉另F(X,Y)中高频段的数据,就可以达到压缩的目的了。

数字图像压缩原理有些算法也是这样。实际中,转换后的图像也是一张图片(频域)一般只保留转换后图像的四分之一的面积,经还原后,也可以达到很好的显示效果。

说得如果不对各位议论
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-9 02:23:18 | 显示全部楼层
Post by zxb
一般来说,语音(电话中)一般滤波器通带是300Hz-3400Hz,在这个范围外的声音信号就被过滤掉了,对于语音通信来说,这个没有什么影响。 根据抽样定理,采样率须大于最高的频率的两倍
即3400HzX2 ,所以国际长途电话的标准采样定在8KHz,每个抽样值用8bit表示。所以长途电话(现在都是数字交换的)的数据速率是64Kbps, 不过一般手机通信是不采用这种标准。

mp3的主要问题与上述没有关系。
一般CD音频抽样率为44.1KHz,DVD更高,好像是192K的。每个抽样值一般是16bit表示。用44.1KHz抽样得来音频数据一般不经过压缩就是CD光盘上的音乐了。

mp3采用的是有损压缩,也就是说压缩后再解压不能得到与原来一样的音频,但这对于音频数据来说,这个并没有多大的关系。

一般来说,有这样的一种方法可以用于压缩。先把一些的数据分块(段),然后对这些段作FFT(快速傅立叶变换)或离散余弦变换,主要作用是把时域(在这里可以简单地认为声音数据是以时间作为自变量x的函数)变到频域(频域即是以声音数据的频率f为自变量的声音函数),之后可以看看那一个频段的分量很小,可以忽略。一般来说很多时候,声音都是主要集中某一个频段的,所以其他频段的分量很小,可以略去不要(有损了)。一般来说,都是不要高频那一段,因为那一段的每个频率f上取值很小。这样保存好频域这些频段数据就可以达到压缩的目的。

播放时再反变换就可还原原声音了。

快速傅立叶变换(离散)有这样一个性质FFT(f(x,y))-- 快速傅立叶变换--> F(X,Y)   
变换后的X,Y范围与原来的x,y是一样的,这样如果去掉另F(X,Y)中高频段的数据,就可以达到压缩的目的了。

数字图像压缩原理有些算法也是这样。实际中,转换后的图像也是一张图片(频域)一般只保留转换后图像的四分之一的面积,经还原后,也可以达到很好的显示效果。

说得如果不对各位议论


把时域转换到频域去处理确实是个好法子 :thank
回复 支持 反对

使用道具 举报

发表于 2005-8-9 10:14:33 | 显示全部楼层
这要看对声音质量的要求,如果真的是只求能听出来说的是什么,好像目前国内最好的技术是只要几十的bps就够了(用在军事应用上的),但是也就是能听出来而已。8K的采样率就我这个耳朵来听已经是很差的音质了。
通过频域变换作处理,优点是方便简单(滤波器就不用设计,直接在频域操作),缺点是不能并行处理,必须要一桢一桢的来。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表