任何一个帮助我在Iphone中同时录制和播放音频。同时录制和播放音频
10
A
回答
9
您可以从AVFoundation框架中获得使用。它有AVAudioPlayer播放音频文件和AVAudioRecorder进行录制。 您必须记住,录音机只会使用麦克风进行录音。 因此,同时播放音频文件并录制它取决于麦克风如何感知播放的音频。
15
您可以使用Audio Unit RemoteIO或Audio Queue API在iOS设备(第一代触控除外)上同时播放和录制。这些是较低级别的API,您必须自己处理传出和传入PCM样本的传入缓冲区。
请参阅Apple的aurioTouch示例应用程序以获取示例代码。
+0
任何目标C或swift代码可用? – 2015-12-25 06:45:24
2
请检查是否有录音和播放aurioTouch苹果的示例代码同时
0
希望这有助于一些人......我做了记录音频的应用程序,从说像Pandora这样的应用程序,并可以播放音频。运行/播放音频应用程序,运行AudioMic,录制,关闭音频应用程序,返回并播放AudioMic录制的音频。好极了!
0
要录制的游戏在iOS中的音频文件,你可以使用AVFoundation框架。使用下面的swift代码来录制和播放音频。 请记住,录音机将使用麦克风录制音频,因此请在设备上测试此代码。
import UIKit
import AVFoundation
extension String {
func stringByAppendingPathComponent(path: String) -> String {
let nsSt = self as NSString
return nsSt.stringByAppendingPathComponent(path)
}
}
class ViewController: UIViewController, AVAudioPlayerDelegate, AVAudioRecorderDelegate{
var audioPlayer : AVAudioPlayer!
var audioRecorder : AVAudioRecorder!
@IBOutlet var recordButton : UIButton!
@IBOutlet var playButton : UIButton!
@IBOutlet var stopButton : UIButton!
override func viewDidLoad() {
super.viewDidLoad()
self.recordButton.enabled = true
self.playButton.enabled = false
self.stopButton.enabled = false
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
//MARK: UIButton action methods
@IBAction func playButtonClicked(sender : AnyObject){
let dispatchQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
dispatch_async(dispatchQueue, {
if let data = NSData(contentsOfFile: self.audioFilePath())
{
do{
self.audioPlayer = try AVAudioPlayer(data: data)
self.audioPlayer.delegate = self
self.audioPlayer.prepareToPlay()
self.audioPlayer.play()
}
catch{
print("\(error)")
}
}
});
}
@IBAction func stopButtonClicked(sender : AnyObject){
if let player = self.audioPlayer{
player.stop()
}
if let record = self.audioRecorder{
record.stop()
let session = AVAudioSession.sharedInstance()
do{
try session.setActive(false)
}
catch{
print("\(error)")
}
}
}
@IBAction func recordButtonClicked(sender : AnyObject){
let session = AVAudioSession.sharedInstance()
do{
try session.setCategory(AVAudioSessionCategoryPlayAndRecord)
try session.setActive(true)
session.requestRecordPermission({ (allowed : Bool) -> Void in
if allowed {
self.startRecording()
}
else{
print("We don't have request permission for recording.")
}
})
}
catch{
print("\(error)")
}
}
func startRecording(){
self.playButton.enabled = false
self.recordButton.enabled = false
self.stopButton.enabled = true
do{
let fileURL = NSURL(string: self.audioFilePath())!
self.audioRecorder = try AVAudioRecorder(URL: fileURL, settings: self.audioRecorderSettings() as! [String : AnyObject])
if let recorder = self.audioRecorder{
recorder.delegate = self
if recorder.record() && recorder.prepareToRecord(){
print("Audio recording started successfully")
}
}
}
catch{
print("\(error)")
}
}
func audioFilePath() -> String{
let path = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0]
let filePath = path.stringByAppendingPathComponent("test.caf") as String
return filePath
}
func audioRecorderSettings() -> NSDictionary{
let settings = [AVFormatIDKey : NSNumber(int: Int32(kAudioFormatMPEG4AAC)), AVSampleRateKey : NSNumber(float: Float(16000.0)), AVNumberOfChannelsKey : NSNumber(int: 1), AVEncoderAudioQualityKey : NSNumber(int: Int32(AVAudioQuality.Medium.rawValue))]
return settings
}
//MARK: AVAudioPlayerDelegate methods
func audioPlayerDidFinishPlaying(player: AVAudioPlayer, successfully flag: Bool) {
if flag == true{
print("Player stops playing successfully")
}
else{
print("Player interrupted")
}
self.recordButton.enabled = true
self.playButton.enabled = false
self.stopButton.enabled = false
}
//MARK: AVAudioRecorderDelegate methods
func audioRecorderDidFinishRecording(recorder: AVAudioRecorder, successfully flag: Bool) {
if flag == true{
print("Recording stops successfully")
}
else{
print("Stopping recording failed")
}
self.playButton.enabled = true
self.recordButton.enabled = false
self.stopButton.enabled = false
}
}
我已经测试过的Xcode 7.0 &这段代码的iOS 9
相关问题
- 1. 同时录制音频和播放iPod?
- 2. 同时播放和录制音频
- 3. 同时录制和播放音频
- 4. 同时录制音频和播放音频
- 5. Android同时播放音频和录制音频
- 6. 录制音频并同时播放
- 7. 录制和播放音频
- 8. 音频记录和同时播放
- 9. 同时录制音频和播放声音 - C# - Windows Phone 8.1
- 10. 同时在iphone上播放音频和录制视频
- 11. 同时录制视频和播放音频文件
- 12. 在播放声音时录制音频
- 13. iPhone:同时播放音频和视频
- 14. 同时播放HTML5视频和音频
- 15. 在J2ME中同时播放和录制音频?
- 16. 在iOS中同时录制和播放音频
- 17. 使用音频播放视频后录制音频和视频
- 18. 如何录制音频和播放C#
- 19. 使用libgdx录制和播放音频
- 20. 使用iPod录制和播放音频
- 21. 在iPhone上录制音频和播放
- 22. 音频录制和播放VC++
- 23. 用AVAssetWriter录制和播放音频
- 24. 在iphone中录制和播放音频
- 25. 错误在录制和播放音频
- 26. iOS - 录制音频和播放
- 27. Avfoundation - 同时播放和录制视频(以及音频和预览)
- 28. Android线程和音频同时播放
- 29. 同时播放和录制
- 30. 录制视频/音频时播放系统声音
给我更多的描述。录音应该由麦克风完成?如何精确地进行同步等。也许你应该看看苹果示例代码aurioTouch。 – Vanya 2010-11-18 13:55:14