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? ...
最新文章
- CCS卸载安装过程及所遇问题
- Linux 常见目录与区别
- proto的介绍和基础使用
- dart --- 环境配置
- 计算机模拟技术在教学上的应用,计算机模拟技术在水利工程学科试验教学中的应用...
- 使用CSS实现无滚动条滚动
- mysql left join和or_Case:MySQL使用left join的时候or改写成union可以提高效率
- keras笔记-mnist数据集上的简单训练
- php重点,php – 课程。重点是什么?
- 6.打包和部署应用 6.1创建可执行的JAR的Spring Boot
- 孙鑫VC学习笔记:第十二讲 (四) 用API函数、CFile类操作文件
- 阶段3 2.Spring_03.Spring的 IOC 和 DI_12 注入集合数据
- 免费推广网站实例(珍藏版)
- 爬虫python下载电影_python爬虫--爬取某网站电影下载地址
- PR卡点插件 Premiere自动卡点自动剪辑插件 音乐鼓点节拍插件BeatEdit v1.0.10.2+使用教程
- redhat安装wine教程_超简单制作多合一系统安装启动U盘的工具
- AAEGan 简介与代码实战
- bug解决:如何解决浏览器显示乱码问题?
- TV(智能电视)app开发,电视wifi连接Android studio 真机调试
- 制作一套适用于Oracle数据库的县及县以上行政区划数据
热门文章
- 斐波那契的几种思路,你都会吗
- org.apache.ibatis.binding.BindingException: Type interface xxx.Mapper is not known to the MapperRegi
- dnf丢失clientbase_LolClientBase.dll下载
- 29-分数求模(逆元)B Jxc军训
- jmeter应用---逻辑控制器(一)
- 液压基础知识01 —— 压力单位换算
- harmonyos域名,有名网域名投资-华为收购Harmonyos.com?其它域名都在谁手上?
- docker容器内部署prometheus
- ZBrush主要干什么工作?ZBrush的发展方向
- STM32F1和STM32F4这两个系列都是单片机达人的心头好,到底那个好