讨论:为什么音频数据压缩为MP3,然后解压缩,得到的数据比最初的要多

hunter0395 2011-04-08 08:39:43
试着用Lame_Enc库进行音频压缩。采样率44.1k,16位,双声道。设置缓冲区大小为可疑存放20分之一秒原始数据,为8820字节,这样可以做到每秒采集20段数据。取得每段数据后进行压缩,然后网络传送,减小缓冲区的目的是为了减小声音延迟。如果只是录音则没必要这样做。
为了测试压缩的结果,又用了mpg123库的解压缩函数,将压缩后的数据立即解开,然后调用waveOut系列函数播放,声音正常。但同时发现了一个问题,解开后的数据要比压缩前多一些,大概是9200多个字节。
这就产生了一个问题,8820个字节是20分之一秒内采集的,回放的时候所用的时间就会大于20分之一秒。经过一段时间后,网络对端听到的声音就会延迟的很厉害。
为甚么会出现这种情况?解开后的数据多了一些该怎样处理?
...全文
186 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
vanterry5 2011-04-20
  • 打赏
  • 举报
回复
首先就是压缩前与解压后格式问题。不知这个waveout会不会直接播放的就是wav,如果压缩前不是wav的话,显然数据量不同。
第二,waveout出来的会不会是一个完整的音频文件,如果是,那就不单包括音频数据文件了,还有文件头嘛。。。。

保证格式相同,去除头部控制信息呗。。。
zzw_happy 2011-04-20
  • 打赏
  • 举报
回复
mp3是有损压缩,不可能还原和原来一样
赵4老师 2011-04-08
  • 打赏
  • 举报
回复
据说mp3压缩算法是有损压缩算法
luxingqiang110 2011-04-08
  • 打赏
  • 举报
回复
个人觉得:如果解码和编码不对应的话有可能会多数据。
luxingqiang110 2011-04-08
  • 打赏
  • 举报
回复
我也是做音视频解码的,虽然很多还不懂,以我的经验,传输延迟是很正常的,如果遇到多余的杂数据,直接丢弃,就行了。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧