使用VisualFreeBASIC制作一个简易MP3播放器

现在的音乐播放器越弄越复杂,使用VisualFreeBASIC可以方便的制作出小巧的MP3播放器,这里使用BASS音频库来播放MP3。BASS音频库是一款对非商业用户免费的音频处理类库功能强大,支持几乎所有音频的解码编码等处理。(官网地址:http://www.un4seen.com/)该库的函数有很多,具体可以看clsBass.bi文件。这里介绍已使用的几个函数。

  1. 定义全局变量

Dim Shared bass As clsBass             'bass.dll的类引用
Dim Shared hs As HSTREAM               '当前歌曲打开的流句柄
  1. 判断版本并初始化

If HiWord(bass.GetVersion) <> BASSVERSION Then        '判断版本
    AfxMsg "Bass.dll文件版本不合适!"  
Else
    If Not bass.Init( -1 ,44100 ,0 ,0 ,NULL) Then     '初始化音频库
        AfxMsg "初始化错误" 
    End If
End If
  1. 播放

If hs Then '如果播放流句柄不为0,则先停止并释放资源
    bass.ChannelStop(hs) '停止播放
    bass.StreamFree(hs) '释放原有文件
End If
hs = bass.StreamCreateFile(False, StrPtr(Mp3FilePath(Index)), 0, 0, 0) '建立播放流
If hs < BASS_ERROR_ENDED Then '判断是否打开成功
    Print "打开失败"
    Print bass.ErrorGetCode
    Return 1 
Else '成功
    maxtime = bass.ChannelBytes2Seconds(hs ,bass.ChannelGetLength(hs ,BASS_POS_BYTE)) '; {总秒数}
    Slider1.MaxValue = Int(maxtime * 1000) '设置进度条最大值
                
    bass.ChannelSetSync(hs, BASS_SYNC_END, 0, Cast(SYNCPROC Ptr,@Mp3SyncProc), NULL) 
End If 
'开始播放 
bass.ChannelPlay(hs ,False) ' {参数 1 是流句柄; 参数 2 若是 TRUE 每次都会从头播放}
'回调函数
Sub Mp3SyncProc cdecl(ByVal HSYNC As HANDLE ,ByVal channel As DWORD ,ByVal dat As DWORD ,ByVal user As Any Ptr)
    '这里处理播放完成后需要做的工作
End Sub 

4.调整播放位置

Dim npos As Single = Slider1.Value / 1000
Dim Position As QWORD = bass.ChannelSeconds2Bytes(hs, npos)  '转换成歌曲的位置
bass.ChannelSetPosition(hs, Position, BASS_POS_BYTE) '设置歌曲的位置    

5.音量控制

bass.ChannelSetAttribute(hs, BASS_ATTRIB_VOL, Slider2.Value / Slider2.MaxValue) 

6.退出释放资源

Function Form1_WM_Close(hWndForm As hWnd) As LResult
    bass.ChannelStop(hs) '停止播放
    bass.StreamFree(hs) '释放音频流
    bass.Stop() '停止所有输出
    bass.free() 
    Function = False ' 返回 TRUE 阻止关闭窗口。
End Function

效果如图所示

使用VisualFreeBASIC制作一个简易MP3播放器_第1张图片

完整工程如下:https://github.com/rainheart311/VFB-FullProject/tree/main/MyPlayer

你可能感兴趣的:(FreeBASIC实例工程,freebasic,BASS音频库,简易MP3播放器)