ios Native webrtc: Как записать удаленный аудиопоток в виде wav-файла на стороне клиента.

Я экспериментирую с webrtc. Моя цель - сохранить удаленный аудиопоток в виде локального файла без использования медиасервера, я знаю об aecdump, но не могу найти подходящий метод или блог для распаковки в iOS.

Я использую нативный фреймворк googleWebrtc. Благодарю.

1 ответ

Да Во-первых, чтобы получить путь к каталогу IOS, вы должны создать свой собственный файл объекта c.

my_ios_wav.mm

      #import <Foundation/Foundation.h>
#include <string.h>

    #import "sdk/objc/helpers/NSString+StdString.h"
    
    #include "rtc_base/checks.h"
    
    namespace webrtc{
    std::string myIOSPath() {
      @autoreleasepool {
        NSString* tempDir = NSTemporaryDirectory();
        if (tempDir == nil)
            tempDir = @"/tmp";
        return [NSString stdStringForString:tempDir];
      }
    }
}

После этого создайте статическую функцию в классе, у вас есть данные, которые вы хотите записать.

      static webrtc::WavWriter* my_funtion()
{
  const std::string outfilewav = webrtc::myIOSPath() + "wavtest1.wav";
  static webrtc::WavWriter *my_wav_pointer(new
  webrtc::WavWriter(outfilewav, 48000,1,webrtc::WavFile::SampleFormat::kInt16));
  return my_wav_pointer;
}

После этого вызовите эту статическую функцию, в которой вы хотите передать данные в файл wav для записи, например:

       my_funtion()->WriteSamples(audio_frame->data(), number_of_frames);
Другие вопросы по тегам