Файл локальной записи пуст [agora.io] Свифт

#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, чтобы немного упростить просмотр файлов:

Свойства Info.plist