当前位置:首页|资讯

鸿蒙前端UI特效技术分享5 -- 音频可视化特效

作者:九弓子发布时间:2024-09-30

通过前面4篇文章的学习,我们已经了解了HarmonyOS应用开发中

的SVG,Canvas,文件操作。

本篇文章我们将实现如何使用Canvas绘制音频可视化效果。

如果你在之前的文章中没有跟着做过,这里强烈建议下载代码仓库,然后切换分支到Step4。

阅读本文最终你将学会:


1.开始前的准备。

音频可视化的过程就是音频播放的过程,我们先来实现音频播放的功能。

在上一节的最后我们实现了音频文件的转存,我们这里直接就可以使用它作为播放源。

在开始之前,我们需要先确定播放能力的api选择。因为我们要实时读取音频数据,所以我们使用HarmonyOS的`AudioRenderer`接口。

这个接口是一个音频渲染器,所以我们需要提前准备好音频数据。

你准备的音频文件需要是wav格式,并且知道它的`采样率`,`声道数`,`采样位数`等信息。

如果不知道,可以使用音频编辑软件查看。

或者直接使用代码仓Step5分支中的`test.wav`文件。

2.实现音频播放

首先我们需要先准备一个功能类用来初始化AudioRenderer相关接口的能力。

在路径`src/main/ets/components/utils/DiyAudioPlayer.ets`新建一个文件。

代码有点多,不过都是官方文档的基础操作,我们这里只是简单的封装了一下。

具体参考官方文档AudioRenderer相关指南的完整示例。

在上方代码中,我们要注意的是,

这里的采样率,通道数,采样格式,编码格式需要和你的音频文件一致。

然后我们回到UI组件中,在上一节中的按钮点击事件中添加播放音频初始化的代码。

我们新增了一个`@State`变量`audioPlayer`,用来保存音频播放的实例。

并且利用它区分Button的显示状态,与点击逻辑。

这个时候我们点击按钮,应该就可以播放音频了。

确认可以播放后,我们就继续修改一下按钮的文字,至少可以暂停。

新增代码如下:

这样我们就可以实现音频的播放和暂停了。下一步我们就来实现音频可视化。

3.实现音频可视化

既然我们要可视化,那我们首先需要一个画面来绘制波形图。

我们决定让它在播放按钮下方,继续在按钮组件内部添加一个Canvas组件。

我们写入了一个与Button组件相同位置和样式的Canvas组件。

设置了临时透明度以确定我们是否正确绘制。

新增代码:

确定可以绘制后,我们就可以在播放器初始化的时候将Canvas传入到播放器中。


更新`DiyAudioPlayer`类:

这样我们在刚才的Canvas组件中就可以看到音频的波形图了。

具体代码可以参考代码仓库中的Step5分支。



4.总结


通过5节文章的学习,我们已经了解了HarmonyOS应用开发中的SVG,Canvas,文件操作,音频播放等基础了解与应用。


但是关于后续优化和更多功能的实现,还有很多可以做的。

比如目前canvas动画刷新并不是最后的优化方案,我们可以使用更多的技末来提高性能。

在ArkUI中提供了Xcomponent通过OpenGL GPU加速的方式来实现更高性能的动画。

我们也可以通过更多的音频处理技术来实现更多的音频效果。

总之,这只是一个开始,希望大家可以继续深入学习,实现更多有趣的功能。



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1