将之前保存的音频文件作为base64字符串加载

5

我录制并保存了一个音频文件,这个功能正常,可以在应用程序中播放。

然而,在录制完成后,我试图加载它以便将音频传递到JSON对象中,但无法打开它。

我收到以下错误:

The file “audio.m4a” couldn’t be opened because the text encoding of its contents can’t be determined.

我正在进行的是以下这个 API 调用:

do {
     let audioData =  try NSData(contentsOfFile: String(contentsOf: audioURL!))
} catch {
     print error
}

有什么办法可以将音频数据以Base64编码从文件中加载吗?
谢谢。

可能是如何在Swift 3中将音频文件内容加载为base64的重复问题。 - Nazmul Hasan
2个回答

10

您没有解释如何保存文件,所以我只能根据文件扩展名假设您没有将其保存为base64字符串。 请参考问题的第一个答案,以检查是否正确将音频文件保存为base64字符串。 但您仍然可以使用其他方法。首先加载数据:

let audioData =  try Data(contentsOf: audioURL!)

然后将其转换为base64字符串:
let encodedString = audioData.base64EncodedString()

我使用了问题中的部分代码,这样@rubyist就可以更好地理解他应该在自己的代码中进行哪些更改。 - Eugene Laminskiy
谢谢,这很有效。我刚开始学习Swift,正在逐渐掌握它。 - rubyist

5

问题在于您使用了错误的方法。音频数据不是字符串,而是字节的集合(UInt8数组)。要读取您的音频数据,您需要使用Data初始化程序 Data(contentsOf: audioURL) 并使用Data实例方法base64EncodedString将此数据转换为base64字符串。

if let base64String = try? Data(contentsOf: audioURL).base64EncodedString() {
    print(base64String)
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接