1. 程式人生 > >【bass】設定與顯示音訊的播放進度

【bass】設定與顯示音訊的播放進度

上程式碼:

//獲取檔案流的長度, 單位是位元組
function BASS_ChannelGetLength(
  handle: DWORD; {流控制代碼}
  mode: DWORD    {獲取模式; 有兩種選擇, 但對 HSTREAM 流只能使用 BASS_POS_BYTE}
): QWORD; stdcall; external bassdll;

//獲取流的當前指標位置, 單位是位元組
function BASS_ChannelGetPosition(
  handle: DWORD; {流控制代碼}
  mode: DWORD    {獲取模式; 有兩種選擇, 但對 HSTREAM 流只能使用 BASS_POS_BYTE}
): QWORD; stdcall; external bassdll;

//根據流的指標位置來獲取時間點, 單位是秒, 是非常精確的浮點數
function BASS_ChannelBytes2Seconds(
  handle: DWORD; {流控制代碼}
  pos: QWORD     {流的指標位置, 單位是位元組, QWORD = Int64}
): Double; stdcall;external bassdll;

//和 BASS_ChannelBytes2Seconds 相反, BASS_ChannelSeconds2Bytes 可以通過時間獲取流的指標位置.
function BASS_ChannelSeconds2Bytes(
  handle: DWORD;
  pos: Double
): QWORD; stdcall;external bassdll;

//和 BASS_ChannelGetPosition 相反, BASS_ChannelSetPosition 可以設定流的指標位置.
function BASS_ChannelSetPosition(
  handle: DWORD;
  pos: QWORD;
  mode: DWORD
): BOOL; stdcall; external bassdll;



//要獲取音樂的總時間可以:
BASS_ChannelBytes2Seconds(hs, BASS_ChannelGetLength(hs, BASS_POS_BYTE));

//要獲取音樂播放的當前時間可以:
BASS_ChannelBytes2Seconds(hs, BASS_ChannelGetPosition(hs, BASS_POS_BYTE));