我有一个MP3的源码,不过在README里,它这样说
程序的开发环境是Delphi6.0操作系统是Win98se,用到的技术点有:(1)Api,在程序登录时的透明窗口和左右声道的控制都使WindowsAPI的调用。(2)Delphi的Mediaplay控件的调用,在播放VCD文件时用的就是它。(3)VC++,大家最关心的肯定是动态波形表的问题,其实我为了这个问题已经查阅了一年的资料了,大家有时侯喜欢在工作闲暇时写写小工具软件,但是有些时候我们的知识面是不够的。要想达到Winamp的层次必定还相差很多,当然网友中可能有高手,好了我将解决大家的问题了。
刚开始时我认为波形表时调用某个Api函数来得到的,于是我查阅了所有的api手册,结果一无所获。后来我就开始了解码层次的研究,在网上这方面的资料太少我转了几个星期也一无所获。有一天我在下班的路上卖了一张VC++资料光盘,在其中居然有动态波形表的文章,通过它我知道了波形表的产生是解码的结果,它通过直接用一个8000个成员变量的庞大数组对特定的音乐文件进行手工解码最后通过声卡直接输出,其复杂程度是我所难以一是理解的代码量超过3万行。并且您还有乐理知识。其中的三维音乐效果模拟也是通过解码来完成的。我的日常工作是数据库程序设计,对多媒体开远不能达到文章中提到的层次,并且每一种格式的文件都要有不同的解码标准。这些标准是国际MP3组织制定的详细内容还要阅读他们的技术文档。我的多媒体程序就这样有放下了。我的目标转到了第三方控件,我想通过第三方的控件来达到解码播放的目的。但是还是没有现成的控件,我前些日子无意中发现了上海一家多媒体解码公司提供了一个波形表动态联接库。通过它我实现了多媒体文件的波形表显示,但是它的预留的接口并不多导致我的程序不能首快进,快退的功能,要想的到完成功能只有花钱了。他们的这个动态联接库也只支持MP3解码并不支持MPG解码。