两年前想用sdk写mp3播放器,现在看来要实现这个功能并不困难也不轻松。
首先要打开音乐文件,如果是在windows操作系统上,自带打开文件的api,并且把要打开的文件信息完好地传递给你了。如果是在linux上,类似。如果是在一个没有操作系统的平台上打开文件则要知道文件所在磁盘或flash的位置或者知道文件特有的信息,把文件内容读到内存中去。这样就实现了音乐文件的打开。
音乐文件的解码。音乐文件格式有很多种,常见的有mp3,wma,aac等。因为它们的编码方式不同,所以对它们解码也有所不同。以mp3为例,首先是mp3的头文件,ID3信息等,接下来是音乐的每一帧。只要时序和内存控制好,解码应该是可以轻松解决。
解码出来了就是各种音符的数字电平,还要把它转成模拟电平,推动喇叭发出声音来。在windows和linux系统上只要把声卡驱动正确安装,这现这一步都很容易,有现成的api。而没有操作系统的平台上这一步大部分是由硬件解决的,就是一个DA转换器。程序上你可以直接操作硬件。
上面就是我的理解,如有不对之处就指正。@_@