【问题标题】:ios Native webrtc : How to record remote audio stream as wav file on client side.ios Native webrtc:如何在客户端将远程音频流录制为 wav 文件。
【发布时间】:2018-11-28 19:37:06
【问题描述】:
我正在 webrtc 上进行试验,我的目标是在不使用媒体服务器的情况下将远程音频流存储为本地文件,我知道 aecdump,但我没有找到合适的方法或博客在 iOS 中解压缩。
我正在使用 googleWebrtc 原生框架。
谢谢。
【问题讨论】:
标签:
ios
webrtc
audio-streaming
audiounit
audio-processing
【解决方案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);