FDWaveformView

FDWaveformView 是一种在你的应用中显示音频波形的简单方法。它是一个很好的可视化工具,可以用来展示正在播放的音频文件,或者选择文件中的某个位置。

🐣 虚拟小费罐: https://amazon.com/hz/wishlist/ls/EE78A23EEGQB

用法

要使用它,可以使用 Interface Builder 或以编程方式添加一个 FDWaveformView,然后像这个例子一样加载你的音频。 注意:如果你的音频文件没有文件扩展名,请参阅这个 Stack Overflow 问题

let thisBundle = Bundle(for: type(of: self))
let url = thisBundle.url(forResource: "Submarine", withExtension: "aiff")
self.waveform.audioURL = url

特性

设置播放进度以突出显示波形的某个部分

self.waveform.progressSamples = self.waveform.totalSamples / 2

放大以仅显示波形的一部分,当然,放大将平滑地重新渲染以逐步显示更多细节

self.waveform.zoomStartSamples = 0
self.waveform.zoomEndSamples = self.waveform.totalSamples / 4

启用手势用于放大、平移或拖动

self.waveform.doesAllowScrubbing = true
self.waveform.doesAllowStretch = true
self.waveform.doesAllowScroll = true

支持动画来改变属性

UIView.animate(withDuration: 0.3) {
    let randomNumber = arc4random() % self.waveform.totalSamples
    self.waveform.progressSamples = randomNumber
}

通过绘制比屏幕上看到的更多像素来创建抗锯齿波形。 此外,如果调整我(自动布局)的大小,我将根据需要渲染更多细节以避免像素化。

支持 iOS12+ 和 Swift 5。

包含单元测试,待办事项:在 GitHub Actions 上运行这些测试

安装

使用 Swift Package Manager 将其添加到您的项目中。 在 Xcode 中,只需:File > Swift Packages > Add Package Dependency... 就完成了。 下面显示了传统项目的替代安装选项。

贡献