2017-04-13 65 views
1

我录制并保存了一个音频文件,它可以正常工作并在应用程序中播放。 然而,在录制之后,我尝试加载它,以便将音频传递到JSON对象,但无法打开它。Swift 3 - 将以前保存的音频文件加载为base64字符串

我得到以下错误:

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

这就是呼叫我做:

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

任何想法如何,我可以加载音频数据从base64编码文件?

谢谢

+0

的可能的复制[如何音频文件的内容加载在SWIFT 3 64基(http://stackoverflow.com/questions/43397957/how-to-load-audio-file-contents-as-a-base64-in-swift-3) –

+0

@NazmulHasan接受任何人?他应该接受第一次发布的答案(我的):) –

回答

3

你没有解释你如何保存你的文件,所以我只能(根据文件扩展名)认为,你是不是将其保存为Base64字符串。 请参阅this问题的第一个答案。检查是否将音频文件正确保存为base64字符串。 但仍然可以使用其他方式。在第一次加载数据:

let audioData = try Data(contentsOf: audioURL!) 

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

let encodedString = audioData.base64EncodedString() 
+0

我已经使用了部分代码,因此@rubyist可以更好地理解他应该在代码中更改哪些内容。 –

+0

谢谢你的作品。我是Swift的新手,所以我只需要熟练掌握它, – rubyist

+0

不客气。没问题 ) –

3

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

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

谢谢你的作品。 – rubyist

相关问题