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

rub*_*ist 3 ios swift swift3

我录制并保存了一个音频文件,这可以在预期的应用中播放和播放.但是,在录制之后,我尝试加载它,这样我就可以将音频传递给JSON对象,但无法打开它.

我收到以下错误:

The file “audio.m4a” couldn’t be opened because the text encoding of its contents can’t be determined.
Run Code Online (Sandbox Code Playgroud)

这是我正在制作的电话:

do {
     let audioData =  try NSData(contentsOfFile: String(contentsOf: audioURL!))
} catch {
     print error
}
Run Code Online (Sandbox Code Playgroud)

有关如何从base64编码中的文件加载音频数据的任何想法?

谢谢

Eug*_*kiy 7

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

let audioData =  try Data(contentsOf: audioURL!)
Run Code Online (Sandbox Code Playgroud)

然后将其转换为base64字符串:

let encodedString = audioData.base64EncodedString()
Run Code Online (Sandbox Code Playgroud)


Leo*_*bus 5

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

if let base64String = try? Data(contentsOf: audioURL).base64EncodedString() {
    print(base64String)
}
Run Code Online (Sandbox Code Playgroud)