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);