@IBOutlet var recordingTimeLabel: UILabel!
@IBOutlet var record_btn_ref: UIButton!
@IBOutlet var play_btn_ref: UIButton!
var audioRecorder: AVAudioRecorder!
var audioPlayer : AVAudioPlayer!
var meterTimer:Timer!
var isAudioRecordingGranted: Bool!
var isRecording = false
var isPlaying = false
*在viewDidLoad中检查记录权限
override func viewDidLoad() {
super.viewDidLoad()
check_record_permission()
}
func check_record_permission()
{
switch AVAudioSession.sharedInstance().recordPermission() {
case AVAudioSessionRecordPermission.granted:
isAudioRecordingGranted = true
break
case AVAudioSessionRecordPermission.denied:
isAudioRecordingGranted = false
break
case AVAudioSessionRecordPermission.undetermined:
AVAudioSession.sharedInstance().requestRecordPermission({ (allowed) in
if allowed {
self.isAudioRecordingGranted = true
} else {
self.isAudioRecordingGranted = false
}
})
break
default:
break
}
}
*生成要将录制保存为myRecording.m4a的路径
func getDocumentsDirectory() -> URL
{
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
let documentsDirectory = paths[0]
return documentsDirectory
}
func getFileUrl() -> URL
{
let filename = "myRecording.m4a"
let filePath = getDocumentsDirectory().appendingPathComponent(filename)
return filePath
}
*设置记录器
func setup_recorder()
{
if isAudioRecordingGranted
{
let session = AVAudioSession.sharedInstance()
do
{
try session.setCategory(AVAudioSessionCategoryPlayAndRecord, with: .defaultToSpeaker)
try session.setActive(true)
let settings = [
AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
AVSampleRateKey: 44100,
AVNumberOfChannelsKey: 2,
AVEncoderAudioQualityKey:AVAudioQuality.high.rawValue
]
audioRecorder = try AVAudioRecorder(url: getFileUrl(), settings: settings)
audioRecorder.delegate = self
audioRecorder.isMeteringEnabled = true
audioRecorder.prepareToRecord()
}
catch let error {
display_alert(msg_title: "Error", msg_desc: error.localizedDescription, action_title: "OK")
}
}
else
{
display_alert(msg_title: "Error", msg_desc: "Don't have access to use your microphone.", action_title: "OK")
}
}
9条答案
按热度按时间bcs8qyzn1#
雨燕3
添加框架AVFoundation
在信息列表中添加键值
键=隐私-麦克风用法说明和值=用于使用麦克风
(the如果您不提供值,应用程序将崩溃-请说明您请求权限的原因)**
*导入AV基础和AV音频录制器代理、AV音频播放器代理
*创建用于录制音频和播放音频的按钮,以及用于显示录制定时的标签,并给予出口和操作(如start_recording、play_recording),并声明一些稍后将使用的变量
*在viewDidLoad中检查记录权限
*生成要将录制保存为myRecording.m4a的路径
*设置记录器
*按下按钮start_recording时开始录制,并使用updateAudioMeter显示秒数,如果录制开始,则完成录制
*播放录音
*录制完成时启用播放按钮,播放完成时启用录制按钮
*显示警报的一般化函数
d4so4syb2#
下面是代码。您可以轻松录制。将此代码写在
IBAction
上。它将以recordTest.caf
的名称保存Documents
中的录制内容evrscar23#
@codester答案的swift 2版本。
ippsafx74#
除了之前的答案,我还试着在Xcode 7.2上运行它,但之后我听不到任何声音,通过电子邮件发送文件时也是如此。没有警告或异常。所以我将设置更改为以下内容,并存储为.m4a文件。
之后我就可以听声音了。为了保存文件,我在viewDidLoad上添加了这个来初始化录音机:
创建目录时:
我还添加了用于开始录制、停止和播放的操作
biswetbf5#
Here录音机,界面简单,采用Swift 4.2编写。
kxeu7u2r6#
对于雨燕5,
e1xvtsh37#
使用Swift 4的类文件中的代码
类为AGAudioRecorder
代码为
c9qzyr3d8#
Swift 3代码版本:完整的音频录制解决方案!
wswtfjt79#
简单的2022语法,在iPhone上录制音频。
旧的答案不管用。
需要...
然后
然后
在你的vc中添加
AVAudioRecorderDelegate
。通过回放进行测试:
在您的列表中: