WebRTC的C/C++ API
来源:互联网 发布:扁平插画 知乎 编辑:程序博客网 时间:2024/06/02 04:23
WebRTC 的音频引擎封装了音频设备的统一接口, 使用者不用关心代码是 Windows, Mac OS X, Linux , iOS 或者 Android 等平台. 这也是一件非常棒的事情, 这个封装如果抽取出来, 就是一个优秀的跨平台音频接口(Audio API).
这里提供一个示例, 讲解如何使用 WebRTC 的 C/C++ API 进行录音和播放声音. 首先, 引入头文件:
#include "webrtc/modules/audio_device/include/audio_device.h"
初始化, 并列出所有的录音设备(有几个麦克风):
webrtc::AudioDeviceModule *audio;
audio = webrtc::CreateAudioDeviceModule(0, webrtc::AudioDeviceModule::kPlatformDefaultAudio);
audio->Init();
num = audio->RecordingDevices();
printf("Input devices: %d\n", num);
for(int i=0; i<num; i++){
char name[webrtc::kAdmMaxDeviceNameSize];
char guid[webrtc::kAdmMaxGuidSize];
int ret = audio->RecordingDeviceName(i, name, guid);
if(ret != -1){
printf(" %d %s %s\n", i, name, guid);
}
}
接着, 选中一个麦克风, 初始化后开始录音:
ret = audio->SetRecordingDevice(0);
ret = audio->InitRecording();
AudioTransportImpl callback(audio);
ret = audio->RegisterAudioCallback(&callback);
ret = audio->StartRecording();
不过, 在开始录音之前, 你需要注册一个回调类, 然后在回调方法中把录音得到的数据保存起来. 需要注意的是, 这个回调是在一个单独的线程中执行的, 要注意多线程安全问题.
回调函数 webrtc::AudioTransport::RecordedDataIsAvailable() 并没有什么特殊的, 就是拿到一段 10ms 的音频采样(samples) 进行处理.
播放声音的API和录音的API基本类似.
这里有一个完整的示例代码, 甚至还包括了 VAD(静音检测)
这里提供一个示例, 讲解如何使用 WebRTC 的 C/C++ API 进行录音和播放声音. 首先, 引入头文件:
#include "webrtc/modules/audio_device/include/audio_device.h"
初始化, 并列出所有的录音设备(有几个麦克风):
webrtc::AudioDeviceModule *audio;
audio = webrtc::CreateAudioDeviceModule(0, webrtc::AudioDeviceModule::kPlatformDefaultAudio);
audio->Init();
num = audio->RecordingDevices();
printf("Input devices: %d\n", num);
for(int i=0; i<num; i++){
char name[webrtc::kAdmMaxDeviceNameSize];
char guid[webrtc::kAdmMaxGuidSize];
int ret = audio->RecordingDeviceName(i, name, guid);
if(ret != -1){
printf(" %d %s %s\n", i, name, guid);
}
}
接着, 选中一个麦克风, 初始化后开始录音:
ret = audio->SetRecordingDevice(0);
ret = audio->InitRecording();
AudioTransportImpl callback(audio);
ret = audio->RegisterAudioCallback(&callback);
ret = audio->StartRecording();
不过, 在开始录音之前, 你需要注册一个回调类, 然后在回调方法中把录音得到的数据保存起来. 需要注意的是, 这个回调是在一个单独的线程中执行的, 要注意多线程安全问题.
回调函数 webrtc::AudioTransport::RecordedDataIsAvailable() 并没有什么特殊的, 就是拿到一段 10ms 的音频采样(samples) 进行处理.
播放声音的API和录音的API基本类似.
这里有一个完整的示例代码, 甚至还包括了 VAD(静音检测)
阅读全文
0 0
- WebRTC的C/C++ API
- ORACLE 的C API
- libhdfs 的C API
- C#api
- 详细的MySQL C API
- 详细的MySQL C API
- mysql c api的使用
- mysql C API的使用
- MySQL的C语言API
- lua的c api 总结
- lua的c api 总结
- java 调用C的API
- redis的C/C++ API
- Alchemy(C/C++)API
- 打开 WebRTC 的日志(native api)
- ffmpeg的api-example.c的编译
- mongodb的C的API使用
- [C/C++]Windows操作Path的API函数
- Flex 布局教程:实例篇
- 1002. 写出这个数 (20)
- 找工作的一些经历
- 给定一个任意的大写字母A~Z,转换为小写字母。
- SDUT-2144 图结构练习——最小生成树
- WebRTC的C/C++ API
- CTreeCtrl 控件使用总结
- java环境配置
- 数组去重复数以及排序问题
- 模态和非模态对话框的创建
- linux设备驱动uevent详解,高通平台battery上报电量实例
- JZOJ5373【NOIP2017提高A组模拟9.17】信仰是为了虚无之人
- mysql如何用一条sql语句实现不存在就插入,存在的话则更新
- 三维重建概述二