有两个办法:
1、通过程序根据当前播放时间的位置,实时控制音量实现。这个方法应该是最好的。下面是大概的实现方法:    控制播放的音量,在曲子接近结尾前几秒钟,或进行到曲子的百分之几的位置取一个“淡出开始”。“淡出开始”到曲子结束之间叫做“淡出时间”。当曲子到达淡出时间段内的时候,淡出程序开始奏效。根据当前播放的时间在“淡出时间”中的位置,计算百分比。根据这个百分比来指定音量。
    比如:你规定每个曲子临近最后10秒做淡出。曲子总长度是N秒。则LineOutOn=N-10。当曲子到达LineOutOn的时候,使LineOut(可以做一个函数或过程)开始奏效。
    设当前正在播放的片段为第LineStart秒,则((LineStart-LineOutOn)/10)为当前播放片段相对淡出时间的百分比。用这个百分比去乘音量。在某些程序里,音量控制为0-100,某些程序则是0-127。
下面是我用VB做的一个代码实例的编写方法,只是大概说明一下意思。我不知道你用的是什么程序写这个东西,所以只大概写出了这样一个程序。(这个程序用VB很难实现,因为VB太慢了。)
    LineOutTime=淡出时间(秒/或毫秒)。
    MusicLen=曲子总时间(秒/或毫秒)。
    LineStart=正在播放的时间(秒/或毫秒)。
    SystemVol=控制音量的属性
    SystemVolMax=最大音量值
    LineOutOn=MusicLen-LineOutTime '淡出开始。
    LineOuting=LineStart>LineOutOn '淡出处理的条件。
    If LineOuting Then
      SystemVol=((LineStart-LineOutOn)/LineOutTime)*SystemVolMax
    End If2、处理临时文件。先将你要播放的乐曲生成一个Wave临时文件,然后利用程序将Wave的末尾部分做淡出处理。然后播放的时候放的是Wave临时文件而不是音乐本身。这个办法非常笨,如果你有现成的给Wave文件做淡出处理的程序或控件也不失为一个好办法。