VS中引入并使用WebRTC库

这篇具有很好参考价值的文章主要介绍了VS中引入并使用WebRTC库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、安装开发环境


在Windows下开发应用程序最常用的开发工具还是Visual Studio,你可以使用VS2019,也可以使用VS2022,目前我还是建议大家先用 VS2019,再等个半年、一年的换VS2022比较合适。VS2019的下载地址在这里,将 VS Installer下载好后,在CMD窗口中执行下面的命令即可。

$ PATH_TO_INSTALLER.EXE ^

--add Microsoft.VisualStudio.Workload.NativeDesktop ^

--add Microsoft.VisualStudio.Component.VC.ATLMFC ^

--includeRecommended

当然,正常情况下你在配置WebRTC编译环境时就应该已经将VS安装好了。

2、编译WebRTC


开发环境安装好后,下面我们就该编译WebRTC源码了。WebRTC源码的下载与编译请看这篇文章。

需要注意的是,我们在新项目中引入的WebRTC库,不能直接用下面的命令进行编译:

gn gen out/Default

ninja -C out/Default

而必须明确指明编译出的WebRTC是Debug版本,还是Release版本;是x86版本还是x64版本……

因此,应该使用下面的命令编译WebRTC:

gn gen --target=x64 --ide=vs2019 --args="is_debug=true rtc_enable_protobuf=false is_clang=false target_cpu=\"x64\" enable_iterator_debugging=true use_custom_libcxx=false symbol_level=0 rtc_include_tests=false" out/debug_x64

ninja - C out/debug_x64

上述 gn 中的几个参数含义如下:

  • –target,顾名思义,生成x64版本的WebRTC库

  • –ide,生成VS工程文件

  • –args,编译时的一些配置参数

  • is_debug,为true编译出Debug版本;为false编译出Release版本

  • rtc_enable_protobuf,是否使用protobuf,使用可将其设置为true

  • use_custom_libcxx,WebRTC默认使用的是libc++库,而我们在Windows上使用的是libstdc++库,所以需要将其设置为false

  • symbol_level,编译出的WebRTC库是否带符号表,这个数据量很大,会影响运行速度,所以一般设置为0,表示编译出的WebRTC不带符号表

  • rtc_include_tests,编译WebRTC时是否编译测试用例,如果为false则不编译,这样可以大大加快WebRTC的编译速度

执行上面的命令时,会花一些时间,因此我们需要让子弹飞一会儿……

3、构建自己的应用程序


如果顺利的话,你现在应该已经将WebRTC库编译好了。接下来我们来创建自己的应用程序。

为了方便,你可以将WebRTC examples中的peerconnection_client代码拿出来构建一个新的工程,之后再将前面编译好的WebRTC库引入进来,如果它可以正常运行就达到了我们的目标

为了达到这个目标,首先我们先使用VS创建一个空项目,步骤如下:

  • 第一步,打开Visual Studio,创建新项目

visual studio 2022 webrtc,音视频开发,webrtc,microsoft,windows,Powered by 金山文档
  • 第二步,使用Windows桌面向导创建Windows空项目

visual studio 2022 webrtc,音视频开发,webrtc,microsoft,windows,Powered by 金山文档
  • 第三步,填写项目名称,并将项目与解决方案放在同一目录下

visual studio 2022 webrtc,音视频开发,webrtc,microsoft,windows,Powered by 金山文档
  • 第四步,选择应用程序类型为桌面应用程序

visual studio 2022 webrtc,音视频开发,webrtc,microsoft,windows,Powered by 金山文档
  • 第五步,同时勾选空项目

visual studio 2022 webrtc,音视频开发,webrtc,microsoft,windows,Powered by 金山文档

至此,我们就构建出了一个VS空项目,它里边没有任何文件,如下图所示:

visual studio 2022 webrtc,音视频开发,webrtc,microsoft,windows,Powered by 金山文档

空项目创建好后,紧接着我们来移植peerconnection_client代码到新项目中,步骤如下:

  • 第一步,从WebRTC源码中拷贝peerconnection_client中的代码到新项目的目录中,在我这里是将C:\webrtc\webrtc-checkout\src\exmaples\peerconnection\client目录中的代码拷贝到C:\Users\lichao\sourceMyWebRTCDemo目录下。如下图所示:

visual studio 2022 webrtc,音视频开发,webrtc,microsoft,windows,Powered by 金山文档
visual studio 2022 webrtc,音视频开发,webrtc,microsoft,windows,Powered by 金山文档
  • 第二步,将新项目中的代码到VS项目中

visual studio 2022 webrtc,音视频开发,webrtc,microsoft,windows,Powered by 金山文档

通过以上步骤我们就将peerconnection_client中的代码移植好了。接下来咱们来看重头戏,如何在项目中引入WebRTC库。

4、引入WebRTC库


通常我们引入一个外部库只需要两步,引入库文件和其头文件。不过,对于WebRTC,更准确的说对于peerconnection_client而言,它需要的不仅仅是WebRTC库,还需要将WebRTC依赖的第三方库加进来,这是大家觉得在Windows下使用WebRTC库比较麻烦的原因。

下面咱们就来看一下如何引入WebRTC库吧!

4.1添加依赖的头文件

我们若想将WebRTC头文件引入到项目中,可以通过下面两种方法引入:

  • 方法一,在VS中将WebRTC源码路径添加到附加包含目录中。比如我这里将WebRTC源码下载到了C:\webrtc\webrtc-checkout\src目录下,我只需将该路径添加到:

项目 -> 属性 -> C/C++ -> 常规 -> 附加包含目录

中即可,如下图所示:

visual studio 2022 webrtc,音视频开发,webrtc,microsoft,windows,Powered by 金山文档

这种方法的好处是简单方便,坏处是不便于我们将库文件发布给别人使用。

  • 方法二,我们可以通过这个脚本将WebRTC中的头文件提取出来。之后与方法一一样,将头文件路径添加到附加包含目录中即可。

需要注意的是,这个脚本下载后,要将其放到WebRTC源码目录src的同级目录中,如下图所示:

visual studio 2022 webrtc,音视频开发,webrtc,microsoft,windows,Powered by 金山文档

之后打开Windows控制台,并进入到src的同级目录中,在CMD窗口中执行extract_webrtc_headers.bat脚本,这样就可以将WebRTC头文件提取出来了,如下图所示:

visual studio 2022 webrtc,音视频开发,webrtc,microsoft,windows,Powered by 金山文档

这种方法的优点是方便其他人使用,缺点是抽取头文件需要花一些时间。

除了添加上面的头文件路径外,我们还需要将下面几个路径添加到附加包含项目中:

C:\webrtc\webrtc-checkout\src\third_party\jsoncpp\generated

C:\webrtc\webrtc-checkout\src\third_party\jsoncpp\source\include

C:\webrtc\webrtc-checkout\src\third_party\libyuv\include

C:\webrtc\webrtc-checkout\src\third_party\abseil-cpp

4.2.添加依赖的库

头文件添加好后,接下来咱们来添加WebRTC库文件。WebRTC编译好后,你可以在WebRTC源码目录srcout/debug_x64/obj目录下找到WebRTC.lib文件,这就是编译好的WebRTC库。

我们将它添加到VS中的附加库目录中,具体操作如下:

右键项目 -> 属性 -> 链接器 -> 常规 -> 附加库目录

WebRTC库文件路径添加好后,如下图所示:

visual studio 2022 webrtc,音视频开发,webrtc,microsoft,windows,Powered by 金山文档

接着咱们添加具体的的依赖库,添加依赖库的位置在:

右键项目 -> 属性 -> 链接器 -> 输入 -> 附加依赖项

如下图所示:

visual studio 2022 webrtc,音视频开发,webrtc,microsoft,windows,Powered by 金山文档

具体都依赖哪些依赖项呢?这里我以 M93(4577) 为例,对于这个版本的peerconnection_client来说,它需要下面的依赖库:

  • WebRTC相关的库包括:

third_party/abseil-cpp/absl/flags/marshalling/marshalling.obj

third_party/abseil-cpp/absl/flags/program_name/program_name.obj

third_party/abseil-cpp/absl/flags/flag/flag.obj

third_party/abseil-cpp/absl/flags/flag_internal/flag.obj

third_party/abseil-cpp/absl/flags/commandlineflag/commandlineflag.obj

third_party/abseil-cpp/absl/flags/commandlineflag_internal/commandlineflag.obj

third_party/abseil-cpp/absl/flags/private_handle_accessor/private_handle_accessor.obj

third_party/abseil-cpp/absl/flags/reflection/reflection.obj

third_party/abseil-cpp/absl/flags/parse/parse.obj

third_party/abseil-cpp/absl/flags/usage/usage.obj

third_party/abseil-cpp/absl/flags/usage_internal/usage.obj

third_party/abseil-cpp/absl/flags/config/usage_config.obj

third_party/jsoncpp/jsoncpp/json_reader.obj

third_party/jsoncpp/jsoncpp/json_value.obj

third_party/jsoncpp/jsoncpp/json_writer.obj

test/field_trial/field_trial.obj

test/video_test_common/test_video_capturer.obj

test/platform_video_capturer/vcm_capturer.obj

rtc_base/rtc_json/json.obj

  • 系统相关的库包括:

advapi32.lib

comdlg32.lib

dbghelp.lib

dnsapi.lib

gdi32.lib

msimg32.lib

odbc32.lib

odbccp32.lib

oleaut32.lib

shell32.lib

shlwapi.lib

user32.lib

usp10.lib

uuid.lib

version.lib

wininet.lib

winmm.lib

winspool.lib

ws2_32.lib

delayimp.lib

kernel32.lib

ole32.lib

crypt32.lib

iphlpapi.lib

secur32.lib

dmoguids.lib

wmcodecdspuuid.lib

amstrmid.lib

msdmo.lib

strmiids.lib

4.3添加宏

除了上面讲的需要引入头文件和WebRTC库之外,还需要添加下面这些宏。这些宏的具体含义我有不介绍了,有兴趣的同学可以自己在网上搜索一下。

USE_AURA=1

_HAS_NODISCARD

_HAS_EXCEPTIONS=0

__STD_C

_CRT_RAND_S

_CRT_SECURE_NO_DEPRECATE

_SCL_SECURE_NO_DEPRECATE

_ATL_NO_OPENGL

_WINDOWS

CERT_CHAIN_PARA_HAS_EXTRA_FIELDS

PSAPI_VERSION=2

WIN32

_SECURE_ATL

WINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP

WIN32_LEAN_AND_MEAN

NOMINMAX

_UNICODE

UNICODE

NTDDI_VERSION=NTDDI_WIN10_VB

_WIN32_WINNT=0x0A00

WINVER=0x0A00

_DEBUG

DYNAMIC_ANNOTATIONS_ENABLED=1

WEBRTC_ENABLE_PROTOBUF=0

WEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE

RTC_ENABLE_VP9

WEBRTC_HAVE_SCTP

WEBRTC_ENABLE_AVX2

RTC_ENABLE_WIN_WGC

WEBRTC_NON_STATIC_TRACE_EVENT_HANDLERS=0

WEBRTC_WIN

ABSL_ALLOCATOR_NOTHROW=1

_ENABLE_EXTENDED_ALIGNED_STORAGE

ABSL_FLAGS_STRIP_NAMES=0

HAVE_WEBRTC_VIDEO

添加方法如下:

  • 首先在 VS 中执行下面的操作,

右键项目 -> 属性 -> C/C++ -> 预处理器

  • 之后将上面的宏添加到预处理器中即可。

4.4编译运行

到此为止,我们就将peerconnection_client的代码移植好了,直接点

visual studio 2022 webrtc,音视频开发,webrtc,microsoft,windows,Powered by 金山文档

测试一下吧!此时,编译器有可能报4996的错误,解决该问题办法很简单,只要在

右键项目项 -> 属性 -> C/C++ -> 高级 -> 禁用特定警告

中将 4996 添加进去即可。除此之外,还有可能遇到 /MDd 错误,解决它可以通过在

右键项目项 -> 属性 -> C/C++ -> 代码生成 -> 运行库

中将 /MDd 改为 /MTd 即可。

如果一切顺利,peerconnection_client的连接窗口就展示在你面前了,如下图所示。

visual studio 2022 webrtc,音视频开发,webrtc,microsoft,windows,Powered by 金山文档

此时,你需要先将peerconnection_server程序运行起来,让它侦听 8888 端口;之后在peerconnection_client的连接界面中输入 127.0.0.1,点击连接,如果能进入列表界面就表明OK了。

5、小结


上面我详细的向你介绍了如何将WebRTC中的peerconnection_client代码移植出来,并重点向你讲解了如何在项目中引入WebRTC库。

其重点包括三步:一是添加WebRTC库头文件路径;二是添加WebRTC库路径,及其WebRTC库;三是添加一堆宏。只要将上面三个步骤操作好了,其它的一些问题在网上都能找到答案。

原文https://zhuanlan.zhihu.com/p/604361972

★文末名片可以免费领取音视频开发学习资料,内容包括(FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。

见下方!↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓文章来源地址https://www.toymoban.com/news/detail-788802.html

到了这里,关于VS中引入并使用WebRTC库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • gstreamer中使用webrtc实现音视频对讲

    gstreamer官方源代码中有一个基于webrtc插件实现音视频通话的开源项目,下面介绍在Ubuntu系统中如何搭建环境并使用。 这里省略gstreamer安装,直接安装使用webrtcbin插件使用的相关库,参考官网。系统版本建议高于ubuntu18.04。 首先安装如下相关依赖库。 gstreamer项目编译官方建议

    2024年04月11日
    浏览(43)
  • WebRTC音视频通话-WebRTC视频自定义RTCVideoCapturer相机

    WebRTC音视频通话-WebRTC视频自定义RTCVideoCapturer相机 在之前已经实现了WebRTC调用ossrs服务,实现直播视频通话功能。但是在使用过程中,RTCCameraVideoCapturer类提供的方法不能修改及调节相机的灯光等设置,那就需要自定义RTCVideoCapturer自行采集画面了。 iOS端WebRTC调用ossrs相关,实现

    2024年02月12日
    浏览(59)
  • WebRTC音视频通话-WebRTC推拉流过程中日志log输出

    WebRTC音视频通话-WebRTC推拉流过程中日志log输出 之前实现iOS端调用ossrs服务实现推拉流流程。 推流:https://blog.csdn.net/gloryFlow/article/details/132262724 拉流:https://blog.csdn.net/gloryFlow/article/details/132417602 在推拉流过程中的WebRTC的相关日志log输出可以看到一些相关描述信息。在WebRTC日志

    2024年02月10日
    浏览(55)
  • Visual Studio Community 2022(VS2022)安装图文方法

    直接上步骤: 1,首先可以下载安装一个Visual Studio安装器,叫做Visual Studio installer。这个安装文件很小,很快就安装完成了。 2,打开Visual Studio installer 小软件 3,按照开发需求选择安装的组件: 以下所有图片中的选项,如果不知道要怎么选就选择全部的,也就是把所有的选项

    2024年02月04日
    浏览(54)
  • VS——Visual Studio 2022 社区版——安装

    将下载的文件启动 先修改【安装位置】,选择【全部下载后安装】 【工作负荷】选择 【使用C++桌面开发】 【工作负荷】选择 【使用C++桌面开发】 ,安装详细信息可选默认就可以了,如果你有需要可以自行选择。 【语言包】 点击【安装】,等待 【启动】 登录账号 可以跳

    2024年02月08日
    浏览(48)
  • WebRTC音视频原理

    WebRTC,网页即时通讯(Web Real-Time Communication),是直接在 Web 浏览器内驱动实时通信(语音、视频和任意数据)方法的API。它于2011年6月1日开源并在Google、Mozilla、Opera支持下被纳入万维网联盟的W3C推荐标准,并于 2011 年标准化,是谷歌开源的一款产品。 WebRTC 实现了浏览器快速

    2023年04月08日
    浏览(70)
  • 【WebRTC】音视频通信

    WebRTC对等体还需要查找并交换本地和远程音频和视频媒体信息,例如分辨率和编解码器功能。 交换媒体配置信息的信令通过使用被称为SDP的会话描述协议格式来交换,被称为提议和应答的元数据块 一方发起调用 getUserMedia 打开本地摄像头 媒体协商(信令交换,媒体协商主要

    2024年02月07日
    浏览(54)
  • WebRTC音视频会议底层支撑技术

    WebRTC允许应用使用P2P通信。WebRTC是一个广泛的话题,在本文中,我们将重点讨以下问题。 为什么Web RTC 如此受欢迎? 在P2P连接过程中会发生什么 信号传递 NATs和ICE STUN TURN服务器 VP9视频编解码器 WebRTC APIs 安全 1.为什么Web RTC 如此受欢迎? 开放源代码 它为浏览器提供了端到端

    2024年02月11日
    浏览(57)
  • webRTC一对一音视频对话

    环境 阿里云操作系统: ubuntu 18.4 amd         注意:安全组一定添加对应的入口端口 nodejs -v 18.19.0 npm -v 10.2.3 需要安装的库 package.json 服务器端         webRTC一定要使用https服务器,如果没有ssl证书,可以使用自制证书         1.创建HTTPS服务器                 使用soc

    2024年01月19日
    浏览(57)
  • mediasoup webrtc音视频会议搭建

    拉下源码: https://github.com/versatica/mediasoup-demo 源码里有以下目录其中,app网页的界面终端,broadcasters是广播,也就是他支持我们用ffmpeg推流上去给所有的成员广播,server是流媒体服务器。 源码包含了,https服务器用于浏览器获取界面,信令服务器用于房间管理,和流媒体服务

    2024年02月05日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包