【发布时间】:2021-04-18 14:20:33
【问题描述】:
您好,我知道这个问题已经被问过几次了,但我在将用户录音上传到 Firebase 方面需要帮助。当用户在应用中录制他们的音频并按下停止按钮时,我希望将录音上传并存储在 Firebase 而不是用户的手机中。
这是录音功能
func startRecording() {
let recordingSession = AVAudioSession.sharedInstance()
do {
try recordingSession.setCategory(.playAndRecord, mode: .default)
try recordingSession.setActive(true)
} catch {
print("Failed to set up recording session")
}
let documentPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
let audioFilename = documentPath.appendingPathComponent("\(Date().toString(dateFormat: "dd-MM-YY_'at'_HH:mm:ss")).m4a")
let settings = [
AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
AVSampleRateKey: 12000,
AVNumberOfChannelsKey: 1,
AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
]
do {
audioRecorder = try AVAudioRecorder(url: audioFilename, settings: settings)
audioRecorder.record()
recording = true
} catch {
print("Could not start recording")
}
}
这是用户停止录制时的功能
func saveRecording() {
let path = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
let directoryContents = try! FileManager.default.contentsOfDirectory(at: path, includingPropertiesForKeys: nil)
for i in directoryContents {
user.answersSent.append(CardModel(fullname: question.fullname, username: question.username, imageURL: question.imageURL, question: question.question, fileURL: i, createdAt: getCreationDate(for: i), colorChoice: question.colorChoice))
}
user.answersSent.sort(by: { $0.createdAt?.compare($1.createdAt!) == .orderedDescending})
}
}
非常感谢您花时间阅读。我花了将近两天的时间试图弄清楚。
【问题讨论】:
-
您询问如何将文件上传到 Firebase 存储,但未包含任何 Firebase 代码。大局是,当您录制时,“文件”要么被写入内存或磁盘。当用户单击停止时,您希望将该文件从内存或磁盘上传到存储。 Firebase 入门指南Uploading files 对此进行了很好的介绍。那么除此之外,还有什么问题?您是否有一些您遇到困难的 Firebase 代码?
标签: swift firebase swiftui avaudiorecorder avkit