博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用多媒体库 Bass.dll 播放 mp3 [8] - 实时显示左右声道的峰值
阅读量:5951 次
发布时间:2019-06-19

本文共 3432 字,大约阅读时间需要 11 分钟。

  hot3.png

本例效果图:
26153313_OZKv.gif

代码文件:

unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, ExtCtrls, ComCtrls;type  TForm1 = class(TForm)    OpenDialog1: TOpenDialog;    Timer1: TTimer;    Button1: TButton;    Button2: TButton;    Button3: TButton;    ProgressBar1: TProgressBar;    ProgressBar2: TProgressBar;    procedure FormCreate(Sender: TObject);    procedure Button1Click(Sender: TObject);    procedure Button2Click(Sender: TObject);    procedure Button3Click(Sender: TObject);    procedure FormDestroy(Sender: TObject);    procedure Timer1Timer(Sender: TObject);  end;var  Form1: TForm1;implementation{$R *.dfm}uses Bass;var  hs: HSTREAM;  {流句柄}procedure TForm1.FormCreate(Sender: TObject);begin  Timer1.Interval := 100;  Timer1.Enabled := False;  ProgressBar1.Align := alLeft;  ProgressBar2.Align := alRight;  ProgressBar1.Orientation := pbVertical;  ProgressBar2.Orientation := pbVertical;  ProgressBar1.Width := 20;  ProgressBar2.Width := 20;  ProgressBar1.Max := MAXWORD div 2;  ProgressBar2.Max := MAXWORD div 2;  if HiWord(BASS_GetVersion) <> BASSVERSION then    MessageBox(0, '"Bass.dll" 文件版本不合适! ', nil, MB_ICONERROR);  if not BASS_Init(-1, 44100, 0, 0, nil) then ShowMessage('初始化错误');end;{打开}procedure TForm1.Button1Click(Sender: TObject);var  Mp3Path: AnsiString;begin  BASS_StreamFree(hs);  Timer1.Enabled := False;  OpenDialog1.Filter := 'Mp3 文件(*.mp3)|*.mp3|Wav 文件(*.wav)|*wav';  if OpenDialog1.Execute then    Mp3Path := AnsiString(OpenDialog1.FileName);  hs := BASS_StreamCreateFile(False, PAnsiChar(Mp3Path), 0, 0, 0);  if hs < BASS_ERROR_ENDED then    Text := '打开失败'  else    Text := Mp3Path;end;{播放}procedure TForm1.Button2Click(Sender: TObject);begin  BASS_ChannelPlay(hs, False);  Timer1.Enabled := True;end;{暂停}procedure TForm1.Button3Click(Sender: TObject);begin  BASS_ChannelPause(hs);  Timer1.Enabled := False;end;{显示左右声道的峰值}procedure TForm1.Timer1Timer(Sender: TObject);var  Level: Cardinal;begin  Level := BASS_ChannelGetLevel(hs); {其低16位为左声道峰值; 高16位为右声道峰值}  ProgressBar1.Position := LoWord(Level);  ProgressBar2.Position := HiWord(Level);end;procedure TForm1.FormDestroy(Sender: TObject);begin  BASS_Free;end;end.
窗体文件:

object Form1: TForm1  Left = 222  Top = 114  Caption = 'Form1'  ClientHeight = 113  ClientWidth = 243  Color = clBtnFace  Font.Charset = DEFAULT_CHARSET  Font.Color = clWindowText  Font.Height = -11  Font.Name = 'Tahoma'  Font.Style = []  OldCreateOrder = False  Position = poDesigned  OnCreate = FormCreate  OnDestroy = FormDestroy  PixelsPerInch = 96  TextHeight = 13  object Button1: TButton    Left = 83    Top = 17    Width = 75    Height = 25    Caption = #25171#24320    TabOrder = 0    OnClick = Button1Click  end  object Button2: TButton    Left = 83    Top = 48    Width = 75    Height = 25    Caption = #25773#25918    TabOrder = 1    OnClick = Button2Click  end  object Button3: TButton    Left = 83    Top = 79    Width = 75    Height = 25    Caption = #26242#20572    TabOrder = 2    OnClick = Button3Click  end  object ProgressBar1: TProgressBar    Left = 8    Top = 74    Width = 69    Height = 17    TabOrder = 3  end  object ProgressBar2: TProgressBar    Left = 164    Top = 74    Width = 77    Height = 17    TabOrder = 4  end  object OpenDialog1: TOpenDialog    Left = 192    Top = 8  end  object Timer1: TTimer    OnTimer = Timer1Timer    Left = 40    Top = 8  endend

转载于:https://my.oschina.net/hermer/blog/319708

你可能感兴趣的文章
JQuery选择器大全
查看>>
Gamma阶段第三次scrum meeting
查看>>
python3之装饰器修复技术@wraps
查看>>
[考试]20150606
查看>>
Javascript_备忘录5
查看>>
Can’t create handler inside thread that has not called Looper.prepare()
查看>>
敏捷开发方法综述
查看>>
Hadoop数据操作系统YARN全解析
查看>>
Django 运行报错 ImportError: No module named 'PIL'
查看>>
修改数据库的兼容级别
查看>>
Windows下同时安装两个版本Jdk
查看>>
uoj#228. 基础数据结构练习题(线段树)
查看>>
JS键盘事件监听
查看>>
ios开发周期之--(向上,向下,四舍五入)取整
查看>>
加油!
查看>>
拦截导弹问题(动态规划)
查看>>
iOS 单元测试(Unit Test 和 UI Test)
查看>>
[linux小技巧]
查看>>
文件下载_中文乱码:"Content-disposition","attachment; filename=中文名
查看>>
HBase 笔记3
查看>>