gpt4 book ai didi

ios - 在 tableview Swift 3 中保存并显示录制的语音笔记

转载 作者:行者123 更新时间:2023-11-28 08:07:31 24 4
gpt4 key购买 nike

我是 Swift 的新手,所以任何帮助都将不胜感激。我正在创建这个项目来记录、保存记录的数据并在表格 View 中显示数据。现在我只能录制和播放当前的录音。如果我再次按下录音,之前录制的音频将被删除。但我想永久保存录制的音频并显示在表格 View 中。这是我到目前为止得到的。提前致谢!

import UIKit
import AVFoundation

class ViewController: UIViewController, AVAudioPlayerDelegate,
AVAudioRecorderDelegate {


var audioPlayer: AVAudioPlayer?
var audioRecorder: AVAudioRecorder?

@IBOutlet weak var recordAudio: UIButton!
@IBOutlet weak var stopAudio: UIButton!
@IBOutlet weak var playAudio: UIButton!

var arrayData: [FileManager] = []

override func viewDidLoad() {
super.viewDidLoad()

playAudio.isEnabled = false
stopAudio.isEnabled = false

// Creating File Manager

let fileMgr = FileManager.default

let dirPath = fileMgr.urls(for: .documentDirectory, in: .userDomainMask)
let soundFileUrl = dirPath[0].appendingPathComponent("sound.caf")

let recordSettings = [AVEncoderAudioQualityKey: AVAudioQuality.min.rawValue,
AVEncoderBitRateKey: 16,
AVNumberOfChannelsKey: 2,
AVSampleRateKey: 44100.0 ] as [String:Any]

let audioSession = AVAudioSession.sharedInstance()

do {
try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord)

} catch {

print(error.localizedDescription)

}

do {
try audioRecorder = AVAudioRecorder(url: soundFileUrl, settings: recordSettings as [String : Any])

audioRecorder?.prepareToRecord()

} catch {

print(error.localizedDescription)
}
}

@IBAction func recordButton(_ sender: Any) {

if audioRecorder?.isRecording == false {

playAudio.isEnabled = false
stopAudio.isEnabled = true
audioRecorder?.record()
}

}

@IBAction func stopButton(_ sender: Any) {

stopAudio.isEnabled = false
playAudio.isEnabled = true
recordAudio.isEnabled = true

if audioRecorder?.isRecording == true{

audioRecorder?.stop()

} else {

audioPlayer?.stop()

}

}

@IBAction func playButton(_ sender: Any) {

if audioRecorder?.isRecording == false{

stopAudio.isEnabled = true
recordAudio.isEnabled = true

do {
try audioPlayer = AVAudioPlayer(contentsOf: (audioRecorder?.url)!)

audioPlayer!.delegate = self
audioPlayer!.prepareToPlay()
audioPlayer!.play()

} catch {

print(error.localizedDescription)

}
}
}

func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) {
recordAudio.isEnabled = true
stopAudio.isEnabled = false
}

func audioPlayerDecodeErrorDidOccur(_ player: AVAudioPlayer, error: Error?) {
print("Audio Player Error")
}

func audioRecorderDidFinishRecording(_ recorder: AVAudioRecorder, successfully flag: Bool) {

}

func audioRecorderEncodeErrorDidOccur(_ recorder: AVAudioRecorder, error: Error?) {
print("Audio Recorder Error")
}

最佳答案

您只能保存一个视频的原因是您只指定了一个文件名。如果要保留多个视频,则必须使用不同的文件名。您可以要求用户输入视频文件名,然后存储它们。您可以检查是否存在同名视频in this way .

您必须将所有视频文件存储到文档文件夹中,这样当用户关闭并重新打开应用程序时,视频文件仍然存在。一系列视频存储在您手机的内存中,当应用程序关闭时,您将失去所有内容。

将所有视频文件存储在文档文件夹中后,在启动视频 ListView Controller 时,您可以 use this method从文档文件夹中获取视频名称列表,然后在表格 View 中显示名称。

关于ios - 在 tableview Swift 3 中保存并显示录制的语音笔记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44686292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com