V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
juice123
V2EX  ›  2018

如何利用 tucodec,搭建完整的 windows 版音视频通信系统

  •  
  •   juice123 · 2018-01-13 15:16:41 +08:00 · 1463 次点击
    这是一个创建于 2287 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前两天介绍了如何搭建 iOS、Android 版音视频通信,本文就简单讲解一下如何在 Windows 系统上搭建音视频通讯系统。

    一、准备:

    1、首先在图鸭官网: http://tucodec.com 进行注册,获得 SDK 中所需要的 APPKey、AppSecret.

    点击 SDK 下载按钮跳转到下载界面,选择下载 Windows 中所需 SDK 和 Demo。 我们提供的版本是 vs2013 版本和 vs2015 版本的 SDK 及相应的 WinDemo。

    2、下载 visual studio 开发工具并安装,因为 vs2013 和 vs2015 自带的一些库和编译选项有些许不同,所以必须选择与 SDK 匹配的 VS 工具进行开发。

    3、安装完成后双击打开图 3 中的 WinDemo.sln ,便可以看到如图 4 的工程界面,把生成类型调整为 Debug/x86,然后编译 WinDemo 项目。

    4、在 vs 中点击“本地调试器”即可运行本 demo,main 函数的两个参数已在工程配置选项中赋予

    或者手动将 opencv 和 Tucodec_SDK_Windows 的 bin 目录下的文件拷贝到 exe 所在的目录。然后在该文件夹下打开“命令提示符”或者“ Windows PowerShell ”,在命令行下面赋予 WinDemo.exe 两个参数,分别是自己的 ID 和对方的 ID,然后运行即可。

    5、SDK 相关说明在《 Windows 端 VoIP SDK 使用说明》一文,已经做了详细介绍,本文接下来主要介绍 WinDemo 的代码结构,方便开发者理清开发流程。

    二、WinDemo 介绍

    总的来说,Windows 端的音视频通信系统主要包括音视频采集、音视频播放和 VoIP 负责的音视频传输三个模块。利用图鸭科技提供的 SDK 及由图鸭科技公司开源的转发服务器代码( http://www.tucodec.com ),开发者可以搭建自己的音视频通信服务器。因此,开发者主要面对的问题就是 Windows 端的音视频采集与播放问题,也是本文着重介绍的地方。

    1、视频采集和播放

    有经验的开发者看到压缩包内的 opencv 目录便知道了在本 Demo 中对视频的处理借助了 opencv 的帮助,其优点是可以非常方便的进行视频采集和播放,为开发者屏蔽了与 Windows 硬件交互的诸多繁杂任务。Demo 中的 CVideoCap 和 CVideoRender 两个类就是利用了 opencv 库进行视频的采集和渲染。

    当然,opencv 有一个比较大的缺点儿就是耗费系统资源比较多,如果电脑配置一般的话会发现开启 opencv 渲染视频后电脑的 CPU 负荷会出现大幅上涨。所以如果想把我们的 SDK 用于产品研发的话,推荐自己实现客户端的采集和播放功能,常用的有 DirectShow,SDL,DirectX SDK 等官方提供的 SDK。

    2、音频采集和播放

    由于 opencv 不能完成音频相关的处理任务,所以 Demo 中使用了微软提供的 Windows MultiMedia 相关 API 完成音频采集和渲染功能,详见 Demo 中的 CAudioCap 和 CAudioRender 两个类。

    3、CVoipManager 类

    这个类封装了音视频操作与 VoIP 之间的交互,是整个 Demo 的核心部分。

    部分方法和属性介绍:

    m_clientNetwork:ClientNetwork 实例,负责转发服务器的登录

    m_voip:TYVoip 实例,负责打通数据传输

    m_voipCallback:TYVoip 中的接口实现,是 voip 的视频回调接口,客户端从这个类中获得 voip 传过来的视频数据

    m_selfID:本地的 usrID

    m_sessionID:会话 ID

    m_audioCap,m_audioRender,m_videoCap,m_videoRender:音视频采集渲染

    m_ac,m_ai,m_vc,m_vi:音视频格式配置

    m_nodeList:添加的通信节点列表

    LoginServer:登录转发服务器(转发服务器需要提前配置好),因为是通过转发服务器做数据传输或 P2P 打洞,所以在添加对方为节点的时候要保证两者都是在线状态,当然这个在登录模块做了处理,如果对方还没上线会一直请求下去。

    AddNote:添加一个通信节点

    RemoveNote:移除一个通信节点

    StartVoipTransmit:开始音视频采集和渲染以及传输

    EndVoipTransmit:结束音视频采集和渲染以及传输

    三、效果展示

    1、自己登陆 ID 为 1,添加节点为 2,但 2 未上线的情况

    只能看到本地视频回路已被打开,控制台打印信息主要有:

    login success:表示登陆转发服务器成功

    add node 2:表示添加节点 2

    get p2p addr of uid:2 fail:是在请求添加 2 节点,但是 2 节点还没有上线

    2、本地 ID 为 1,添加节点 2,且节点 2 已上线

    就完成了 Windows 端的音视频通信。

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5594 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 02:51 · PVG 10:51 · LAX 19:51 · JFK 22:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.