WebRTC iOS:使用 WebRTC 录制远程音频流 [英] WebRTC iOS: Record Remote Audio stream using WebRTC
本文介绍了WebRTC iOS:使用 WebRTC 录制远程音频流的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在开发具有接收器录音功能的音频流应用程序.
I am working on an audio streaming application with recording functionality for a receiver.
我遇到了用户想要在接收器端录制音频流的问题.
I got stuck at the point where the user want to record audio stream on the receiver side.
下面是我的代码初始化
Below is my code Initialisation
var engine = AVAudioEngine()
var recordingFile: AVAudioFile?
var audioPlayer: AVAudioPlayer?
let player = AVAudioPlayerNode()
var isRecording: Bool = false
初始化音频引擎
func initializeAudioEngine() {
let input = self.engine.inputNode
let format = input.inputFormat(forBus: 0)
self.engine.attach(self.player)
let mainMixerNode = self.engine.mainMixerNode
self.engine.connect(input, to:mainMixerNode, format: format)
self.engine.prepare()
do {
try self.engine.start()
self.startRecording()
} catch (let error) {
print("START FAILED", error)
}
}
开始录制
func startRecording() {
self.createRecordingFile()
self.engine.mainMixerNode.installTap(onBus: 0,
bufferSize: 1024,
format: self.engine.mainMixerNode.outputFormat(forBus: 0)) { (buffer, time) -> Void in
do {
self.isRecording = true
try self.recordingFile?.write(from: buffer)
} catch (let error) {
print("RECORD ERROR", error);
}
return
}
}
创建缓冲区
private func createBuffer(forFileNamed fileName: String) -> AVAudioPCMBuffer? {
var res: AVAudioPCMBuffer?
if let fileURL = Bundle.main.url(forResource: fileName, withExtension: "caf") {
do {
let file = try AVAudioFile(forReading: fileURL)
res = AVAudioPCMBuffer(pcmFormat: file.processingFormat, frameCapacity:AVAudioFrameCount(file.length))
if let _ = res {
do {
try file.read(into: res!)
} catch (let error) {
print("ERROR read file", error)
}
}
} catch (let error) {
print("ERROR file creation", error)
}
}
return res
}
停止录制
func stopRecording() {
self.engine.mainMixerNode.removeTap(onBus: 0)
}
我正在尝试使用耳机录音,但它不起作用
I am trying to record using earphone, but It's not working
推荐答案
它会起作用,因为一旦你设置了
Its will work because once you setup
let audiosession = AVAudioSession()
作为 AVAudioSessionCategoryPlayAndRecord 并设置
audiosession.setActive(true)
它将开始记录任何音频转储到设备.
It will start recording whichever audio dump to device.
这篇关于WebRTC iOS:使用 WebRTC 录制远程音频流的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文