【问题标题】:Loading a previously saved audio file as base64 string将以前保存的音频文件加载为 base64 字符串
【发布时间】:2017-09-10 00:50:17
【问题描述】:

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

我收到以下错误:

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 编码的文件中加载音频数据吗?

谢谢

【问题讨论】:

标签: ios swift swift3


【解决方案1】:

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

let audioData =  try Data(contentsOf: audioURL!)

然后转成base64字符串:

let encodedString = audioData.base64EncodedString()

【讨论】:

  • 我已经使用了问题中的部分代码,所以@rubyist 可以更好地理解他应该在他的代码中更改什么。
  • 谢谢你的作品。我是 Swift 新手,所以我刚刚开始掌握它,
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    • 2016-12-03
    • 2021-12-28
    • 1970-01-01
    • 2014-06-11
    • 1970-01-01
    相关资源
    最近更新 更多