gpt4 book ai didi

ios - AVAudioRecorder swift 2

转载 作者:技术小花猫 更新时间:2023-10-29 10:33:06 28 4
gpt4 key购买 nike

我的 AVAudioRecorder 工作正常,但自升级到 swift 2 后,我似乎无法弄清楚如何正确配置它。我一直收到一条错误消息,提示无法调用 AVAudioRecorder 初始值设定项,但我提供的参数对我来说是正确的。

var recordSettings = [AVSampleRateKey : NSNumber(float: Float(44100.0)),
AVFormatIDKey : NSNumber(int: Int32(kAudioFormatMPEG4AAC)),
AVNumberOfChannelsKey : NSNumber(int: 1),
AVEncoderAudioQualityKey : NSNumber(int: Int32(AVAudioQuality.Medium.rawValue))]


var recordingURL: NSURL? = nil
var audioRecorder:AVAudioRecorder!


func directoryURL() -> NSURL? {

let fileManager = NSFileManager.defaultManager()
let urls = fileManager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
let documentDirectory = urls[0] as NSURL
let soundURL = documentDirectory.URLByAppendingPathComponent("sound.m4a")
return soundURL
}

@IBAction func recordPressed(sender: AnyObject) {

let audioSession: AVAudioSession = AVAudioSession.sharedInstance()

do {
try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord)
} catch _ {
}

do {
try audioSession.setActive(true)
} catch _ {
}

var error: NSError?

audioRecorder = AVAudioRecorder(URL: recordingURL, settings: recordSettings, error: &error)

if let e = error {

print(e.localizedDescription, terminator: "")
}
else
{
audioRecorder.record()
self.stopButton.enabled = true
self.playButton.enabled = false
self.recordButton.enabled = false

}


}

最佳答案

directoryURL 是正确的,但它似乎被误认为是 recordingURLrecordSettings 也是连贯的。让我提供一个工作版本。

swift 3

var audioRecorder:AVAudioRecorder!

let recordSettings = [
AVSampleRateKey : NSNumber(value: Float(44100.0)),
AVFormatIDKey : NSNumber(value:Int32(kAudioFormatMPEG4AAC)),
AVNumberOfChannelsKey : NSNumber(value: Int32(1)),
AVEncoderAudioQualityKey :
NSNumber(value: Int32(AVAudioQuality.medium.rawValue))]

override func viewDidLoad() {
super.viewDidLoad()

let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord)
try audioRecorder = AVAudioRecorder(url: directoryURL()!,
settings: recordSettings)
audioRecorder.prepareToRecord()
} catch {}
}

func directoryURL() -> URL? {
let fileManager = FileManager.default
let urls = fileManager.urls(for: .documentDirectory, in: .userDomainMask)
let documentDirectory = urls[0] as URL
let soundURL = documentDirectory.appendingPathComponent("sound.m4a")
return soundURL
}

@IBAction func doRecordAction(_ sender: AnyObject) {
if !audioRecorder.isRecording {
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setActive(true)
audioRecorder.record()
} catch {}
}
}

@IBAction func doStopAction(_ sender: AnyObject) {
audioRecorder.stop()
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setActive(false)
} catch {}
}

旧版:Swift 2

var audioRecorder:AVAudioRecorder!

let recordSettings = [AVSampleRateKey : NSNumber(float: Float(44100.0)),
AVFormatIDKey : NSNumber(int: Int32(kAudioFormatMPEG4AAC)),
AVNumberOfChannelsKey : NSNumber(int: 1),
AVEncoderAudioQualityKey :
NSNumber(int: Int32(AVAudioQuality.Medium.rawValue))]

override func viewDidLoad() {
super.viewDidLoad()

let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord)
try audioRecorder = AVAudioRecorder(URL: self.directoryURL()!,
settings: recordSettings)
audioRecorder.prepareToRecord()
} catch {}
}

func directoryURL() -> NSURL? {
let fileManager = NSFileManager.defaultManager()
let urls = fileManager.URLsForDirectory(.DocumentDirectory,
inDomains: .UserDomainMask)
let documentDirectory = urls[0] as NSURL
let soundURL = documentDirectory.URLByAppendingPathComponent("sound.m4a")
return soundURL
}

@IBAction func doRecordAction(sender: AnyObject) {
if !audioRecorder.recording {
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setActive(true)
audioRecorder.record()
} catch {}
}
}

@IBAction func doStopAction(sender: AnyObject) {
audioRecorder.stop()
let audioSession = AVAudioSession.sharedInstance()

do {
try audioSession.setActive(false)
} catch {}
}

► 在 GitHub 上找到此解决方案以及有关 Swift Recipes 的更多详细信息.

关于ios - AVAudioRecorder swift 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32342486/

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