在 Swift 中使用 EZAudio 框架播放音频文件

Posted

技术标签:

【中文标题】在 Swift 中使用 EZAudio 框架播放音频文件【英文标题】:Play audio file using EZAudio Framework in Swift 【发布时间】:2016-03-31 11:57:16 【问题描述】:

您好,我正在尝试将以下 Objective-C 代码转换为 Swift:

EZAudioFile *audioFile = [EZAudioFile audioFileWithURL:NSURL]; //required type NSURL
[self.player playAudioFile:audioFile];

但我无法让它工作。

let audioFile = EZAudioFile.url(EZAudioFile) //required type EZAudioFile, so I am unable to pass the NSURL of the audio file here.
player.play()

错误是:Cannot convert value of type 'NSURL' to expected argument type 'EZAudioFile'

以上objective-C代码引用自这里:EZAudio Example:Record File

【问题讨论】:

我没有使用过EZAudioFile,但我已经让AVAudioPlayer 在 Swift 中正常工作。这是一些代码(在答案中向下滚动)以供参考。 ***.com/a/32879428/3681880 我也很快做到了。但我坚持使用 EZAudio 的原因是我使用它的一种方法在录制过程中创建波形。我可以使用 AVAudioPlayer 录制、播放音频。所以我认为探索这个框架(EZAudio)来使用它的所有方法会更好。 啊,我明白了。听起来不错。我想知道一些应用程序是如何制作波形的。我希望你能成功。 【参考方案1】:

我没有测试,所以我可能错了,但我认为您没有使用正确的语法:EZAudioFile.url(EZAudioFile) 没有调用您正在考虑的初始化程序。

我看到in the EZAudioFile source 确实有一个音频文件 URL 的初始化程序:

+ (instancetype)audioFileWithURL:(NSURL *)url

所以我的猜测是 Swift 中的语法应该是:

let audioFile = EZAudioFile(audioFileWithURL: yourURL)

另外,它似乎只是普通 URL init 的包装器,应该是这样的:

let audioFile = EZAudioFile(URL: yourURL)

【讨论】:

精准! Xcode 的自动补全功能吸引了我。 Swift 中 [self.player playAudioFile:audioFile]; 的替代品是什么? 应该是similar: self.player.playAudioFile(audioFile) 我想(再次,只是在阅读源代码时猜测,因为我现在无法访问 EZ 安装)。 非常棘手的快速转换。结果是:player = EZAudioPlayer(EZAudioFile:audioFile)。感谢您提供帮助的 cmets!

以上是关于在 Swift 中使用 EZAudio 框架播放音频文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 EZAudio 在 Swift 中获取 FFT 数据?

EZAudio CocoaPods 模块导入错误

EZAudio - 如何使用 EZAudioPlotGL 根据视图大小更改相同的波形大小

iOS - 使用音乐的背景播放功能,使用MediaPlayer框架播放影片(Swift)

在 macOS 的 swift 5 中声明 ExtAudioFileRef 的正确方法

在android中播放音轨中的音频