这就是我定义myrecorder和myplayer的方式
var myrecorder:AVAudioRecorder!
var myplayer : AVAudioPlayer!
这是在viewDidLoad()
中设置myrecorder的代码override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
filepath = "\(getDocumentsDirectory())/001.caf"
print(filepath)
try! session.setCategory(AVAudioSessionCategoryPlayAndRecord)
//define settings
let recordSettings: [String: AnyObject] = [
AVFormatIDKey: NSNumber(unsignedInt: kAudioFormatMPEG4AAC),
AVEncoderAudioQualityKey : AVAudioQuality.Medium.rawValue,
AVSampleRateKey: 44100.0,
AVNumberOfChannelsKey: 2,
]
myrecorder = try! AVAudioRecorder(URL: NSURL(fileURLWithPath: filepath), settings: recordSettings)
myrecorder.delegate = self
myrecorder.prepareToRecord()
}
我有按钮来控制记录和停止,我得到了文件001.caf。我可以播放声音文件,但我认为文件不够好。
@IBAction func Play() {
try! myplayer = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: filepath))
myplayer.volume = 0.5
myplayer.play()
print("Playing...")
}
播放成功,没有任何错误或崩溃。只有一个问题,播放时没有任何声音。
我认为我在录制阶段错过了一些东西,但我无法找到它。请帮忙。
答案 0 :(得分:0)
问题在于在此行中实例化的AVAudioPlayer。
gem install nokogiri -v 1.6.2.1 -- --use-system-libraries
一旦播放功能完成,此实例myplayer将被解除分配。
在另一个函数(例如Viewdidload)中实例化AVAudio播放器,以便即使在控件离开播放功能后它仍然存在。
答案 1 :(得分:-1)
好的,最后我发现了问题。
您可以使用AVAudioSessionCategoryPlayAndRecord。
录制时,您必须使用AVAudioSessionCategoryRecord,并在播放时使用AVAudioSessionCategoryPlayback。并且在播放和录制时来回设置会话。
AVAudioSessionCategoryPlayAndRecord用于同时播放和录制时,例如进行语音聊天时...