先上图

帮亲戚做个小软件,选用FMX,因为画面不会像vcl那样在图片多的时候闪烁。还能添加动画

但是MediaPlayer播放音乐视频真是不给力,视频没想到好办法。音频方面想到之前万一的Bass.ll的教程

尝试用FMX做下试试

结果发现Bass也是跨开台,Github上有个老外做了个收音机

下面是从万一博客上拷贝的代码,按照fmx的稍做了点修改

begin

  if not OpenDialog1.Execute then
Exit; BASS_StreamFree(hs); hs := BASS_StreamCreateFile(False, PChar(OpenDialog1.FileName), , , BASS_UNICODE);
if hs < BASS_ERROR_ENDED then
begin
Caption := '打开失败:' + hs.tostring;
end
else
Caption :=OpenDialog1.FileName;
end

这个是打开文件,新版的支持UNICODE

const
w = ;
var
i,di: Integer;
begin
if BASS_ChannelIsActive(hs) <> BASS_ACTIVE_PLAYING then Exit; BASS_ChannelGetData(hs, @FFTData, BASS_DATA_FFT1024); Image1.Bitmap.SetSize(Round(Image1.Width),Round(Image1.Height));
Image1.Bitmap.Canvas.BeginScene;
Image1.Bitmap.Canvas.Clear(talphacolors.Black); for i := to Length(FFTData) - do
begin
di := Trunc(Abs(FFTData[i]) * ); if di > Image1.Height then di := Round(Image1.Height);
if di >= FFTPeacks[i] then FFTPeacks[i] := di else FFTPeacks[i] := FFTPeacks[i] - ;
if di >= FFTFallOff[i] then FFTFallOff[i] := di else FFTFallOff[i] := FFTFallOff[i] - ;
if (Image1.Height - FFTPeacks[i]) > Image1.Height then FFTPeacks[i] := ;
if (Image1.Height - FFTFallOff[i]) > Image1.Height then FFTFallOff[i] := ; with Image1.Bitmap.Canvas do
begin
Fill.Color :=talphacolors.red;
FillRect(RectF(i * (w + ), Image1.Height - FFTFallOff[i], i * (w + ) + w, Image1.Height),,,AllCorners, );
end; end;
Image1.Bitmap.Canvas.EndScene;
end;

这个是绘制波形的,其他函数直接copy万一博客的代码就可以用

用Fmx调用Bass.dll的更多相关文章

  1. c# 调用c++DLL方法及注意事项

    引用命名空间 using System.Runtime.InteropServices 调用方法: 一.静态加载 用DllImprot方式来加载c++DLL.如下格式: //对应c++方法 //voi ...

  2. 在.net中调用Delphi dll的Pchar转换

    Pchar是非托管代码,要在.net中调用Delphi dll中的功能,请使用MarshalAs属性告知.net调用PInvoke去转换.net中标准的string类型.如果Delphi dll是De ...

  3. Java调用第三方dll文件的使用方法 System.load()或System.loadLibrary()

    Java调用第三方dll文件的使用方法 public class OtherAdapter { static { //System.loadLibrary("Connector") ...

  4. C#调用C++ DLL类方法

    C++的优势在于高效灵活,C#的优势在于简单易用,两者结合起来对项目开发来说是件好事,而且C++不容易反编译,也保障了代码的安全性,如果一些核心算法使用C#编写,那么保密就是一个问题. C++生成的D ...

  5. paip.java 调用c++ dll so总结

    paip.java 调用c++ dll so总结 ///////JNA (这个ms sun 的) 我目前正做着一个相关的项目,说白了JNA就是JNI的替代品,以前用JNI需要编译一层中间库,现在JNA ...

  6. C#调用C++ DLL 文件

    说来惭愧,都注册一年多了,却没有发表过一篇正式的博文,中间很多学习的过程也没有记录下来.如今到了一个新的环境,也有了学习的机会,一定要把每天的收获记录一下. 要做的东西需要引用C++编写的DLL,刚开 ...

  7. LR调用动态链接库DLL

    什么是动态库? 动态库一般又叫动态链接库(DLL),是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库. 动态链接提供了一种方法 ,使进程可以 ...

  8. C#调用C++ Dll

    现在项目基本都是旁边C++的哥们做好dll扔给我,然后我调用.好久之前晚上down了一份c#调用c++dll的方法,出处早已经遗忘.闲来无事,放上来好了.原作者看到后可以留言,我会把您链接放上的,帮了 ...

  9. 【JNI】OPUS压缩与解压的JNI调用(.DLL版本)

    OPUS压缩与解压的JNI调用(.DLL版本) 一.写在开头: 理论上讲,这是我在博客园的第一篇原创的博客,之前也一直想找个地方写点东西,把最近做的一些东西归纳总结下,但是一般工程做完了一高兴就把东西 ...

随机推荐

  1. 关于StringBuffer和StringBuilder

    StringBuffer 字符串特点:字符串是常量:它们的值在创建之后不能更改. 字符串的内容一旦发生了变化,那么马上会创建一个新 的对象. 注意: 字符串的内容不适宜频繁修改,因为一旦修改马上就会创 ...

  2. python中的collections

    python中有大量的内置模块,很多是属于特定开发的功能性模块,但collections是属于对基础数据的类型的补充模块,因此,在日常代码中使用频率更高一些,值得做个笔记,本文只做主要关键字介绍,详细 ...

  3. Jquery-zTree的用法

    [部分函数和属性介绍] 核心:zTree(setting, [zTreeNodes]) 这个函数接受一个JSON格式的数据对象setting和一个JSON格式的数据对象zTreeNodes,从而建立 ...

  4. 第一次使用UML的感觉

    刚开始接触的时候,其实我内心是拒绝的,因为感觉这种软件之前接触过,觉得就是相当于思维导图那种的. 可当自己使用的时候,觉得大纲总体上是类似是规划方向的,可是细节却让人深思,用什么图标,特别是用什么线, ...

  5. leetcode 137[转]

    没思路.网上找到的. 1. 将每一个int看成32位数,统计每一位出现的次数对3取余,所以需要开辟一个32大小的数组来统计每一位出现的次数 2. 对第一种思路进行简化,模拟3进制: three two ...

  6. XMLFeedSpider例子

    from scrapy import log from scrapy.contrib.spiders import XMLFeedSpider from myproject.items import ...

  7. FMDB 排它锁

    -------------------------------------基本操作------------------------------------- #import "ViewCon ...

  8. JMeter中HTTP Cookie 管理器使用

    案例: 在一次做公司OA系统的时候,发现录制脚本无法回放成功,通过定位,是因为登录的过程中存在重定向,导致登录接口的状态没有自动带入重定向页面 解决方法: 加入HTTP Cookie 管理器使用 现象 ...

  9. 批发零售车销门店扫描打印一体移动销售POS机-移动终端销售O2O新模式

    应用领域 终端及移动解决方案 方案概述 通过手持终端对数据进行采集并分析及汇总.利用WIFI网络和专用终端,实时上报终端的各种销量数据,如订单数据.销量数据.库存数据.补货数据.调货数据等. 业务价值 ...

  10. 代替jquery $.post 跨域提交数据的N种形式

    跨域的N种形式: 1.直接用jquery中$.getJSON进行跨域提交 优点:有返回值,可直接跨域: 缺点:数据量小: 提交方式:仅get (无$.postJSON) $.getJSON(" ...