30天自制操作系统吧 关注:1,380贴子:4,763
  • 10回复贴,共1

MP3格式解码试验,不知道往哪发就发这了

取消只看楼主收藏回复

MP3真的比JPEG复杂几十倍,连着折腾了两周,到最后几乎是对着别人的代码抄,终于能解码出听着像音频的音频了。以鸡哥成名曲做实验品,懒得研究win下怎么输出pcm所以直接输出成wav文件,解出来的有很多奇怪的杂音(听着像溺水了一样)。
累死我了,先歇一段时间,再看看能不能修复这个问题。。
(如果能修好就修好后再放github,修不好就这样直接放github了)


IP属地:澳大利亚1楼2024-09-15 22:32回复
    给好奇的人听听原版和溺水版鸽鸽:
    链接: https://pan.baidu.com/s/1ggBfCPXg8MuFpvo8GVgXLw?pwd=mwpn 提取码: mwpn 复制这段内容后打开百度网盘手机App,操作更方便哦


    IP属地:澳大利亚2楼2024-09-15 22:47
    回复
      补充一个冷知识,MP3全称为MPEG 1 Layer III


      IP属地:澳大利亚来自Android客户端3楼2024-09-15 22:53
      回复
        我刚才用Beyond Compare对比了一下FFmpeg导出的wav和我的程序输出的wav,除了个别可能是精度造成的误差外,中间还有大片大片的不同。通过偏移可以计算出在哪一帧,明天再和参考程序对比一下每一步的结果看看能不能发现问题


        IP属地:澳大利亚来自Android客户端5楼2024-09-18 00:36
        回复
          发现一处问题,哈夫曼解码找到对应值时忘记break了,这个修了之后整体效果好多了,不过还是有点少量杂音


          IP属地:澳大利亚来自Android客户端6楼2024-09-18 14:05
          回复
            又发现一处错误,我region0和region1的信息在blocksplit_flag=1时没有处理,导致反量化时出错。解决完这个问题后,短音频(10s)已经听不出问题了,但用长音频测试还是能听到有杂音


            IP属地:澳大利亚7楼2024-09-18 15:52
            回复
              尝试用了下cursor,在ai的帮助下写了个转换成图表对比的脚本,明天再试试修bug


              IP属地:澳大利亚8楼2024-09-20 00:07
              回复
                指导AI丰富了一下功能,这下有工具方便地对比数据了
                说实话,同样水平的AI大模型,集成进IDE的Cursor比Github Copliot+VS Code好用多了(这个脚本我是真的一行代码都没写,就是改了下尺寸的数据)


                IP属地:澳大利亚9楼2024-09-20 16:00
                回复
                  靠,调试了一天结果是我把哈夫曼表打错了一项
                  PS:这哈夫曼表真恐怖,我光是存表的文件源码就有82KB了


                  IP属地:澳大利亚10楼2024-09-20 22:03
                  回复
                    终于把单声道的解码搞定了,等我明天整理完代码就上传Github


                    IP属地:澳大利亚11楼2024-09-20 22:53
                    回复
                      已上传,地址:https://github.com/Ryan1202/tiny_mp3_player


                      IP属地:澳大利亚12楼2024-09-21 23:58
                      回复