Windows语音通话SDK集成及功能实现(实时语音通话四)

实时语音通话系列文章四。本篇讲述Windows环境下集成即构科技语音通话SDK,实现语音通话功能流程。

一、SDK集成指引

1、准备环境

请确保开发环境满足以下技术要求:

  • Visual Studio 2013以上版本

    Windows7、Windows8、Windows10或以上版本

    麦克风、摄像头等支持音视频功能的外部设备

2、下载 SDK

请从 ZegoAudioRoom Windows 下载 SDK。

如果要实现播放本地音频、视频文件的功能(可用于播放背景音乐,播放MV,播放直播音效等场景),请下载包含 MediaPlayer 功能的 SDK,请下载 ZegoAudioRoom_MediaPlayer Windows。

3、集成SDK

3.1 SDK目录说明

SDK包含两个目录,每个目录包含的文件如下。

1、include目录—————包含SDK头文件,API具体参数及说明

2、libs目录——————–包含SDK的.lib和.dll文件

3.2 工程设置

将include目录加入到头文件搜索路径

·工程目录选项右键”属性”–>”C/C++”–>”常规”–>在附加包含目录中添加include目录
这里写图片描述
将libs\Release目录加入到库搜索路径

·工程目录选项右键”属性”–>”链接器”–>”常规”–>在附加库目录中添加libs目录
这里写图片描述
指定链接库ZegoAudioRoom.lib

·工程目录选项右键”属性”–>”链接器”–>”输入”–>在附加依赖项中添加ZegoAudioRoom.lib
这里写图片描述
将ZegoAudioRoom.dll复制到二进制运行文件所在目录下。

二、功能实现流程

实时语音场景的典型之一是,同一会话中的成员进行实时语音对话。

以 2 人间的实时语音为例,主要流程如下:
这里写图片描述
1、登录房间

用户间进行实时语音对话前,需要先登录到同一个房间。

AudioLive 中登录相关源码片段演实时语音示如下,仅供参考:

ZegoMainDialog.cpp// 登录房间,成功后将会在OnLoginRoom中回调
AUDIOROOM::LoginRoom(sessionID);void ZegoAudioLive::OnLoginRoom(int errorCode, const QString& roomID)
{if (errorCode == 0){addLogString(QStringLiteral("加入session成功"));if (isManual){ui.m_switchStartPublish->setText(QStringLiteral("开始直播"));ui.m_switchStartPublish->setEnabled(true);}}else{addLogString(QStringLiteral("加入session失败: %1").arg(errorCode));}
}

2、发布直播

房间内成员均可发布直播,用户进入房间成功,默认会自动发布直播。此时 SDK 会自动开始推流,用户无需手动触发。

AudioLive 中手动发布直播相关源码片段演示如下,仅供参考:

ZegoMainDialog.cpp// 用户主动点击发布直播按钮
void ZegoAudioLive::OnButtonClickedPublish()
{if (ui.m_switchStartPublish->text() == QStringLiteral("进入")){...//不能重复点击ui.m_switchStartPublish->setEnabled(false);//获取SessionIDm_sessionID = ui.m_edSessionID->text();//以当前时间去生成流IDQTime currentTime = QTime::currentTime();int ms = currentTime.msec();QString strStreamId;strStreamId = QString(QStringLiteral("s-windows-%1-%2")).arg(m_strEdUserId).arg(ms);m_strPublishStreamID = strStreamId;AUDIOROOM::LoginRoom(m_sessionID.toStdString().c_str());AUDIOROOM::SetManualPublish(isManual);addLogString(QStringLiteral("开始加入session: %1").arg(m_sessionID));}...else if (ui.m_switchStartPublish->text() == QStringLiteral("开始直播")){AUDIOROOM::StartPublish();ui.m_switchStartPublish->setEnabled(false);}}

3、播放直播

房间内成员均可播放直播,登录房间成功后,SDK 会自动拉流播放直播。用户无需手动触发拉流。

4、结束音频直播

音频通话结束后的操作主要是登出房间、清理视图或数据等。开发者可按需调用。

AudioLive 中结束音频直播相关源码片段演示如下,仅供参考:

ZegoMainDialog.cpp// 关闭实时语音通话Dialog
void ZegoAudioLive::OnClose()
{streamList.clear();AUDIOROOM::LogoutRoom();this->close();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/26798.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信原生组件|基于小程序实现音视频通话

1 微信小程序原生推拉流组件功能简介 本文将介绍如何使用微信小程序原生推拉流组件 <live-pusher> 和 <live-player> 进行推拉流&#xff0c;快速实现一个简单的实时音视频通话。 由于微信小程序原生推拉流组件使用起来比较复杂&#xff0c;推荐开发者使用即构封…

Python利用微软Azure免费的语音合成TTS源码分享

我敢保证,用过微软的语音合成后,你就会发现这是世界上最好的语音合成软件。99.99%接近人声自然流程。语调也非常自然,结合其独特的sml标记语言,合成过程中可控制主播声色和音调,以及停顿等各种的内容。 再多的介绍,自己可以百度去了解,本文讲解如何使用免费的方法合成语…

【新知实验室--音视频通话】腾讯云TRTC-实时音视频---多人会议视频通话SDK基础搭建

&#x1f996;我是Sam9029&#xff0c;一个前端 Sam9029的CSDN博客主页:Sam9029的博客_CSDN博客-JS学习,CSS学习,Vue-2领域博主 &#x1f431;‍&#x1f409;&#x1f431;‍&#x1f409;恭喜你&#xff0c;若此文你认为写的不错&#xff0c;不要吝啬你的赞扬&#xff0c;求收…

微软MFC下做speech sdk语音识别,消息响应的版本

网上虽然有很多语音识别的教程&#xff0c;但是很多是却少一些部分&#xff0c;笔者在综合了几篇之后&#xff0c;做成功了语音识别&#xff0c;下面是教程。 网上的语音识别分成几种&#xff0c;把语音识别消息放入队列中的是一种&#xff0c;笔者认为这个效率比较高&#xf…

腾讯云TRTC服务实现小程序语音/视屏会议

腾讯云TRTC服务的入门 TRTC 是腾讯云主打全平台互通的多人音视频通话和低延时互动直播解决方案。TRTC服务有多种客户端的支持&#xff0c;对于IOS、Android、React native等都支持的比较好&#xff0c;我们主要在于 IOS、Android、Web三端进行处理&#xff0c;其中 TRTC Web S…

【VS开发】【智能语音处理】Windows下麦克风语音采集

简介 这是我很早以前的大学毕业设计,忽然间找到贴出来以纪念自己的纯真年代...但是因为CSDN不给面子所以导致短短的一篇文章贴了足足7次..他老提时说文章超过了64K,老大,拜托,那是算上了里面的图片大小吧...:-( 本文简单介绍了声卡的工作原理 , 录音的原理以及数字音频的基本知…

【实时语音转文本】PC端实时语音转文本(麦克风外音系统内部音源)

语音转文字这个功能可以应用在视频动态字幕&#xff0c;语音快速输入&#xff0c;实时记录通话内容&#xff0c;高级应用可以在人工智能&#xff0c;语音识别&#xff0c;智能助手方面&#xff0c;还需要一点机器学习可以做出一些好玩的东西&#xff0c;比如PC端AI助理&#xf…

使用微软的语音识别引擎Microsoft Speech API进行语音控制

以下代码来自&#xff1a;http://mmcheng.net/zh/imagespirit/ 本人仅作提取&#xff1a; SREngine语音识别引擎封装类&#xff1a; #pragma once/************************************************************************/ /* Notice: this project is used to support sp…

微软语音合成(tts)服务申请和调用

1、申请账户&#xff1a; https://azure.microsoft.com/zh-cn/free/ 这里有个视频教程&#xff0c;根据此完成申请流程&#xff1a; https://www.bilibili.com/video/BV15a4y1W7re?vd_sourcebf07f28d37849885d215dc3aea189eba 申请完成后&#xff0c;就可以到这里申请资源&am…

英超引入 AI 球探,寻找下一个足球巨星

By 超神经 内容提要&#xff1a;球探对于很多人来说是一个略显神秘的群体&#xff0c;他们对一个球队的建设和发展至关重要。为了提高球探的工作效率&#xff0c;英超伯恩利足球俱乐部最近启用了 AI 球探。 关键词&#xff1a;AI 球探 计算机视觉 姿态识别 最近&#xff0c;中国…

通过whoscored网站对转会球员的评分来比较五大联赛水平高低

我是一个八年级的学生&#xff0c;上学期学习了Python和包括标准差在内的数据统计方法。参考“怕砍不留名”在soccer.hupu.com上的帖子&#xff0c;并且在爸爸的指导下我尝试对欧洲五大足球联赛&#xff08;英超、德甲、西甲、意甲、法甲&#xff09;水平高低做一个比较。 五大…

看卡塔尔世界杯,diff一下足球比赛与软件开发

diff一下足球比赛与软件开发 吐槽世界杯E组&#xff01;类比软件开发与足球比赛教练与架构师的作用 新技术——半自动越位技术世界杯冠军 吐槽世界杯E组&#xff01; 最近博主看了多场世界杯比赛&#xff0c;看的我心力交瘁&#xff0c;欲哭无泪。 从日本与哥斯达黎加那场比赛开…

一个值得关注的技术公众号「腾讯云开发者」

今天向大家推荐的是腾讯云技术社区的公众号&#xff0c;是腾讯官方推出的技术知识分享阵地&#xff0c;每周公开腾讯最新的技术工程方案&#xff08;如微信、健康码、王者荣耀等知名业务的技术架构&#xff09;、ChatGPT 等行业前沿热点解读、研发经验和工作方法等干货&#xf…

踩坑小总结

本来想总结一下自己工作到现在踩过的坑&#xff0c;实在是太多了&#xff0c;自己之前也年轻不懂事&#xff0c;没有记录的习惯&#xff0c;想到多少写多少吧。 1.前、后端分离框架&#xff1a;刚进入工作的时候采用的是easyuissh的框架&#xff0c;前后端一体&#xff0c;后来…

如何调教一个定制化的ChatGPT私人助理,接入自家知识库

大家好&#xff0c;欢迎来到 Crossin的编程教室 &#xff01; 我在之前的文章里介绍过&#xff0c;如何利用 OpenAI 开放的 API&#xff0c;将 ChatGPT 接入自己开发的程序&#xff1a; 把 ChatGPT 加到你自己的程序里 当时开放的模型还是 text-davinci-003。 文章发布后没多久…

ROS (roslaunch turtle_tf turtle_tf_demo.launch)报错-已解决(利用CHAT-GPT修bug)

在使用古月居的ROS入门21讲时&#xff0c;使用turtle_tf包学习tf功能时出现报错&#xff0c;网上的报错都是由于python版本的问题&#xff0c;修改后而无法解决。最后利用CHAT-GPT的修bug提示&#xff0c;最后发现是ros缓存导致报错。在文章的最后还会提供修改python版本的链接…

chatgpt赋能python:Python代码扫描:如何编写高质量的代码

Python 代码扫描&#xff1a;如何编写高质量的代码 如果你是一位有着10年的 Python 编程经验的工程师&#xff0c;你一定知道写出高质量的 Python 代码是多么的重要。但是&#xff0c;即使你是一名经验丰富的 Python 开发者&#xff0c;你的代码仍然可能存在一些隐藏的漏洞和低…

福成股份很忙:实控人李福成被罚8万,新董事长李良则要打官司

最近&#xff0c;福成股份&#xff08;SH:600965&#xff09;比较忙。 7月6日&#xff0c;河北福成五丰食品股份有限公司&#xff08;下称“福成股份”&#xff09;发布公告称&#xff0c;其近日收到证监会河北监管局&#xff08;下称“河北证监局”&#xff09;的《行政处罚决…

数据结构实验代码 1.单链表;2树的递归遍历

1.单链表 1.1算法描述 1.2代码 #include <stdio.h> #include<malloc.h> typedef char elemtype; typedef struct lnode { elemtype data; struct lnode *next; }linklist; void initlist (linklist *&L)//创建一个表 { L(linklist *)malloc(sizeof(linkli…

数据结构实验课考试 1.单链表;2树的递归遍历

1.单链表 1.1算法描述 1.2代码 1.3代码运行结果 2.树的递归遍历 2.1算法描述 2.2代码 2.3代码运行结果