#swift #agora.io
Вопрос:
Я создаю приложение для аудиовызова из образца, который есть у AgoraKit, и пытаюсь добавить в него функцию записи, но у меня возникла проблема. Мои файлы записей каждый раз пусты. AgoraKit создает файл записи, но, похоже, он не может заполнить его данными.
func initializeAgoraEngine() {
// Initializes the Agora engine with your app ID.
agoraKit = AgoraRtcEngineKit.sharedEngine(withAppId: AppID, delegate: self)
let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let audioURL = documentsDirectory.appendingPathComponent("agorasdk.log")
agoraKit.setLogFile(audioURL.path)
}
func joinChannel() {
// Allows a user to join a channel.
agoraKit.joinChannel(byToken: Token, channelId: "demoChannel", info: nil, uid: nil) { [unowned self] (sid, uid, elapsed) -> Void in
// Joined channel "demoChannel"
self.agoraKit.setEnableSpeakerphone(true)
UIApplication.shared.isIdleTimerDisabled = true
let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let audioURL = documentsDirectory.appendingPathComponent("audio.aac")
let config = AgoraAudioRecordingConfiguration()
config.filePath = audioURL.path
config.recordingQuality = .medium
config.recordingPosition = .mixedRecordingAndPlayback //tried other options no luck
config.recordingSampleRate = 16000//tried 32000 and 44100
let result = agoraKit.startAudioRecording(withConfig: config) //result always 0 according to documentation that is success
}
}
В конце концов, я вызываю stopAudioRecording (), и он также возвращает 0. Так что, согласно документации, все хорошо, но файл пуст.
Ответ №1:
Я только что попробовал это локально, и для меня это работает нормально, вот моя настройка, каталог документов, который я использую, немного отличается, но не понимаю, почему это что-то изменит:
AgoraRtcEngine_iOS (3.5.0.3)
let documentsDirectory = try! FileManager.default.url(
for: .documentDirectory,
in: .userDomainMask, appropriateFor: nil,
create: true
)
let baseDirectory = documentsDirectory.appendingPathComponent(
"Audio/", isDirectory: true
)
try! FileManager.default.createDirectory(
atPath: baseDirectory.path,
withIntermediateDirectories: true
)
let audioURL = baseDirectory.appendingPathComponent(
"test.aac", isDirectory: false
)
// start recording is the same as your settings
Я также добавил эти свойства в Info.plist, чтобы немного упростить просмотр файлов: