一、生成
不支持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…
如有问题,请联系4755879@qq.com.