WebRTC的C/C++ API
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相关推荐
- WebRTC学习之路---API及SignalServer
一.API 有些浏览器获取音视频设备的权限要求不高,比如Chrome浏览器:不过狐火相对就比较高了,要想在诸如火狐或者MAC的浏览器中获取设备名称,可以在允许浏览器访问摄像头之后,再去显示(Promi ...
- html5视频录制,在HTML5视频录制方面,我们为什么选WebRTC而不选Media Recorder API
作者:Pipe(原文链接) 翻译:刘通 原标题:Why we chose WebRTC over Media Recorder API for HTML5 Video Recording 通过这篇文章 ...
- WebRTC 教程一:WebRTC信令、架构和 API 入门
本文主要介绍了 WebRTC 是什么,其和 Websocket 的异同,WebRTC 信令,架构和 API 入门. What is WebRTC WebRTC: Web Real Time Commu ...
- 使用WebRTC搭建前端视频聊天室——数据通道篇
转自 使用WebRTC搭建前端视频聊天室--数据通道篇 在两个浏览器中,为聊天.游戏.或是文件传输等需求发送信息是十分复杂的.通常情况下,我们需要建立一台服务器来转发数据,当然规模比较大的情况下,会扩 ...
- WebRTC学习笔记
http://blog.chinaunix.net/uid-24567872-id-3961702.html 1. WebRTC学习 1.1 WebRTC现状 本人最早接触WebRTC是在 ...
- WebRTC详解-zz
1.WebRTC目的 WebRTC(Web Real-Time Communication)项目的最终目的主要是让Web开发者能够基于浏览器(Chrome\FireFox\...) 轻易快捷开发出丰富 ...
- 【Webkit Blog翻译】深入研究WebRTC | 内有福利
"本文译自A Closer Look Into WebRTC" 我们在最近的一篇WebKit博客中宣布了对High Sierra平台和iOS中Safari的WebRTC支持.现在, ...
- WebRTC基本介绍
WebRTC基本介绍 目录 什么是WebRTC WebRTC框架 1. 什么是WebRTC WebRTC,名称源自网页即时通信(英语:Web Real-Time Communication)的缩写,是 ...
- voip和rtc_为什么开发WebRTC与VoIP开发不一样?(上)
作者:Tsahi Levent-Levi(原文链接) 翻译:刘通 原标题:Why Developing With WebRTC is Different than VoIP Development? ...
最新文章
- C#时间格式化(Datetime)用法详解
- shell转换特殊的格式(%b)到时间戳 08/Dec/2016
- JavaScript-2(数组与字符串的方法)
- FreeMarker 一二事 - 静态模板的使用与生成
- [工具]-文件明文导出工具
- Google在Android P中隐藏了真棒的按应用自动旋转功能
- 开发环境很重要,需要学习如何自己搭建开发环境
- 千头万绪:从一道面试题看数据库性能和安全的方方面面
- win10删除开机密码_讲解win10忘记开机密码
- wireshark 分析过滤数据
- 第二十九篇、UICollectionView瀑布流
- Numpy.fromfunction用法
- 嘿,程序猿,你该学点经济学了!
- 记一次从 git pull 出现 Untracked FilesPervent Merge
- python处理word替换_python替换word中的关键文字(使用通配符)
- 《爱乐之城》:两个追梦人令人唏嘘又动容的爱情故事
- vmstat命令详解!看了很多vmstat的详解,自己总结的
- poi word转html 根号,#根号分治,树上倍增#洛谷 3591 [POI2015]ODW
- mysql中utf8和utf8mb4的详解用法与区别
- 空间射线与三角形相交算法的两种实现
热门文章
- python jsonpath库_Python爬虫(十六)_JSON模块与JsonPath
- 在DNG-SDK基础上写DNG(RAW to DNG)
- re学习笔记(93)攻防世界 - mobile进阶区 - Illusion
- 步步高java短信恢复,步步高智能手机忘记短信密码如何处理
- 单载波 NOMA (SC NOMA) - 可以支持多少用户
- windows server 2012 r2打造工作站链接 和 RTSS画面防止撕裂方法(包括笔记本独显撕裂,视频撕裂等)...
- Android 8.1/9.0 MTK Camera源码分析之录像快门声音控制流程
- 怎么重启php程序,php重启
- NRF52832学习笔记(5)——SPI(主机)接口使用
- video + canvas = magic--html-canval前段渲染