Windows下webrtc.lib 的编译及vs工程中使用

一、生成

不支持ffmpeg和openh264的64位debug版:

gn gen --target=x64 --args="is_clang = true use_custom_libcxx = false use_rtti=true rtc_include_tests=false enable_iterator_debugging=true symbol_level=0" --ide=vs2017 out/x64_debug

支持ffmpeg和openh264的64位debug版(支持h264编解码):

gn gen --target=x64 --args="is_clang = true use_custom_libcxx = false use_rtti=true rtc_include_tests=false rtc_libvpx_build_vp9=true enable_iterator_debugging=true symbol_level=0 proprietary_codecs=true use_openh264=true ffmpeg_branding=\"Chrome\"" --ide=vs2017 out/x64_debug

提示done后,会在out/x64_debug目录下生成all.sln,使用vs2017打开就能翻阅webrtc的源码了

二、编译

编译命令:

ninja -C out/x64_debug

编译会使用cang_cl进行编译,速度比较快。

编译完成后,out\x64_debug\obj目录下会生成我们需要的webrtc.lib库,另外还有可能会用到的.obj文件。

查看out\x64_debug\obj目录下的webrtc.ninja文件, 发现webrtc.lib 链接了各个模块的.obj文件生成的:

build obj/webrtc.lib: alink obj/api/libjingle_peerconnection_api/candidate.obj obj/api/libjingle_peerconnection_api/crypto_options.obj obj/api/libjingle_peerconnection_api/data_channel_interface.obj obj/api/libjingle_peerconnection_api/dtls_transport_interface.obj obj/api/libjingle_peerconnection_api/jsep.obj ...

gn 生成的支持h264版本的webrtc.ninja文件中可发现link了ffmpeg和openh264相关的obj:

video_coding/webrtc_h264/h264_decoder_impl.obj obj/modules/video_coding/webrtc_h264/h264_encoder_impl.obj obj/third_party/ffmpeg/ffmpeg_internal/ac3_parser.obj obj/third_party/ffmpeg/ffmpeg_internal/ac3tab.obj ...

三、webrtc.lib的使用

1、使用vs生成空的PeerConnectionClientDemo工程

2、拷贝\examples\peerconnection\client下的文件到工程中

3、添加webrtc 的头文件和库文件

提取头文件的脚本

#!/bin/bash 

  src=`find src/ -name "*.h*"`

  echo $src

  for obj in $src

do

  echo "cp header file $obj"

  cp --parents $obj include/

done

拷贝webrtc.lib、 json.obj、 json_reader.obj、 json_value.obj、 json_writer.obj、field_trial.obj。添加依赖项

#pragma comment(lib, "ws2_32.lib")

#pragma comment(lib, "winmm.lib")

#pragma comment(lib, "secur32.lib")

#pragma comment(lib, "iphlpapi.lib")

#pragma comment(lib, "crypt32.lib")

#pragma comment(lib, "dmoguids.lib")

#pragma comment(lib, "wmcodecdspuuid.lib")

#pragma comment(lib, "amstrmid.lib")

#pragma comment(lib, "msdmo.lib")

#pragma comment(lib, "d3d11.lib")

#pragma comment(lib, "dxgi.lib")

添加预处理器定义

NOMINMAX

WIN32_LEAN_AND_MEAN

WEBRTC_WIN

_CRT_SECURE_NO_WARNINGS

WIN32

编译、运行

把out\x64_debug目录下的dll拷贝到运行目录下


配合out\x64_debug目录下的peerconnection_server.exe 就可以实现视频、语音通话。

Demo 入口:github.com/kwan530/Pee…

如有问题,请联系[email protected].

你可能感兴趣的:(Windows下webrtc.lib 的编译及vs工程中使用)