搜索插件、代码仓与 APP 分类

flutter_audio_waveforms 封面
插件详情v1.2.1+8

flutter_audio_waveforms

一个用于在您的应用中轻松添加音频波形的 UI 库,具有多种自定义选项。

AndroidiOSWebmacOSWindowsLinux
近 30 天下载
26
喜欢数
251
Pub 分数
140

安装插件

flutter pub add flutter_audio_waveforms

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

一个 Flutter 包,可简化将音频波形集成到应用程序中的过程,提供可自定义的音乐和音频播放可视化效果。它支持 Android、iOS、Web、macOS、Windows 和 Linux 多个平台,非常适合跨平台音频应用。开发者可以轻松显示实时或预加载的波形数据,并具有多种样式选项。该库设计简洁且性能优异,即使处理大型音频文件也能实现流畅渲染。特别适用于音乐播放器、语音录制应用和音频分析工具。

适合场景

  • 音乐播放器界面
  • 语音录制可视化
  • 音频分析工具
  • 实时音频监控
  • 声波教育应用
  • 播客播放界面

主要特点

  • 可自定义波形外观
  • 支持实时音频渲染
  • 跨平台兼容性
  • 与音频播放器轻松集成
  • 可配置的线条粗细和颜色
  • 所有平台上的流畅性能

适合对象

  • 开发以音频为中心的应用程序的开发者
  • 需要动态波形视觉效果的UI设计师
  • 用于声学物理的教育软件
  • 移动和桌面音频应用
  • 需要实时音频反馈的应用程序

使用建议

  • 需要对非实时使用进行音频数据预处理
  • 可能会影响非常长的音频文件的性能
  • 仅限波形可视化(无音频处理)
  • 最适合中等至高音频数据频率的应用程序
  • 未针对极高分辨率波形进行优化

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

Pub.dev Badge MIT License Badge

A UI library for easily adding audio waveforms to your apps, with several customization options.

Web Demo - Flutter Audio Waveforms Web Demo

Features

You can use the following available waveform types.

  • Polygon
  • Rectangle
  • Squiggly
  • Curved Polygon


Need to add some gradient to your waveform? Say no more! You get it along with other customization options.


Want an active track for your audio out of the box? You get that too!


Check out the short demo of what package offers here

Getting started

The package gives you the ability to add waveforms and customize them. It's mostly like a UI library for waveforms with an additional ability to show active track for playing audio.

So it relies on you to provide the necessary audio data which it needs to draw the waveform. The data we need is basically a list of points/samples that represents that audio.

You can use this audiowaveform program to get the audio json file which will provide us the samples. After installing this program on your machine, generate the json file for an audio by using this command in your terminal.

audiowaveform -i test.mp3 -o test.json

The generated data needs to be processed following some rules which are necessary to get the waveforms drawn properly. To process the data use this processor.

Once you have the processed data points list then you can just pass it down to any of the waveforms available and get started using them.

Check out this article for detailed introduction on this section.

Usage

Usage of all waveforms available is the same with only exception of having more/less customization options for different waveforms.

 // For a regular waveform
 PolygonWaveform( 
   samples: [],
   height: height,
   width: width, 
 )

 // If you want active track for playing audio, pass [maxDuration] and [elapsedDuration]
 PolygonWaveform( 
   samples: [],
   height: height,
   width: width,
   maxDuration: maxDuration,
   elapsedDuration: elapsedDuration, 
 )

Find detailed example here.

Properties

maxDuration:

Maximum duration of the audio.

elapsedDuration:

Elapsed Duration of the audio.

samples:

List of the audio data samples.

Check the Getting Started section on how to generate this.

height :

Waveform height.

width :

Waveform width.

Customization Options

inactiveColor :

Color of the inactive waveform.

activeColor :

Color of the active waveform.

inactiveGradient :

Gradient of the inactive waveform.

activeGradient :

Gradient of the active waveform.

absolute :

Waveform drawn is one sided either above x-axis or below it depending on what invert is set to.

Defaults to false.

invert :

Flips/inverts the waveform upside down.

Defaults to false.

borderWidth :

Width of the border around waveform.

Available only for RectangleWaveform.

isRoundedRectangle :

If true then rounded rectangles are drawn instead of regular rectangles.

Available only for RectangleWaveform.

isCentered :

If true then rectangles are centered along the Y-axis with respect to their center along their height.
If [absolute] is true then this would've no effect.

Available only for RectangleWaveform.

strokeWidth :

Waveform stroke width.

Available only for SquigglyWaveform, CurvedPolygonWaveform.

inactiveBorderColor:

Border color for inactive waveform.

Available only for RectangleWaveform.

activeBorderColor:

Border color for active waveform.

Available only for RectangleWaveform.

showActiveWaveform:

Whether to show active waveform or not.

Defaults to true.

More customization options coming soon!

Contributing Guide

  • Feature request :
    If you have any new feature in mind from which this package can benefit then please let me know by filing an issue here.

  • Improvements :
    Got any suggestions on improving the package, anything from API to performance then let me know by filing the issue here.

  • Bugs:
    If you happen to come across anything that shoudln't be happening then please file an issue here describing what the bug is and how to reproduce it with attached code and preview if possible.

Additional information

What started as a challenge out of curiosity, is now a package that I hope will be helpful to many of you and it was actually really fun building it.

Learned some good stuff while working on it and I hope to make it much more going forward.

If this package helped you then I would appreciate if you ⭐️ the repo which would be enough for me to keep continue working on it 🤓 and feel free to drop by and say hi anytime.

所属分类

依赖

依赖清单 1 项

源码仓库

使用此插件的项目