Ran*_*PhD 5 avfoundation ios swift3
我正在尝试使用 swift3 播放麦克风音频输入而不进行录音。我可以使用以下代码录制音频:
let session = AVAudioSession.sharedInstance()
try! session.setCategory(AVAudioSessionCategoryPlayAndRecord, with:AVAudioSessionCategoryOptions.defaultToSpeaker)
try! audioRecorder = AVAudioRecorder(url: filePath!, settings: [:])
audioRecorder.delegate = self
audioRecorder.isMeteringEnabled = true
audioRecorder.prepareToRecord()
audioRecorder.record()
Run Code Online (Sandbox Code Playgroud)
然后在拾取录制文件后最终播放:
audioPlayerNode.play()
Run Code Online (Sandbox Code Playgroud)
但我想跳过录制步骤并直接从麦克风输入播放到音频输出(在本例中为播放器节点)。然后它的功能就像一个真正的麦克风。我可以直接执行此操作还是需要存在临时文件?我梳理了 AVFoundation 文档,但似乎无法掌握直接路线。任何想法或建议表示赞赏。谢谢你!
您可以使用 执行此操作AVAudioEngine,但您会听到反馈:
import AVFoundation
class ViewController: UIViewController {
let engine = AVAudioEngine()
override func viewDidLoad() {
super.viewDidLoad()
let input = engine.inputNode!
let player = AVAudioPlayerNode()
engine.attach(player)
let bus = 0
let inputFormat = input.inputFormat(forBus: bus)
engine.connect(player, to: engine.mainMixerNode, format: inputFormat)
input.installTap(onBus: bus, bufferSize: 512, format: inputFormat) { (buffer, time) -> Void in
player.scheduleBuffer(buffer)
}
try! engine.start()
player.play()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1194 次 |
| 最近记录: |