編譯了webRTC Windows源碼之后,想使用編譯出來的庫寫一個demo出來,但是又不知到怎么下手。就想通過源碼中帶的示例peerconnection_client和peerconnection_server來學webRTC peerconnection API的使用方法。
為了更方便的調試和了解webRTC庫的使用,就萌生了把peerconnection_client和編譯出來的webRTC的靜態庫,創建一個VS工程的想法。經過兩天的努力,終於可以運行起來了。
環境:
win10+VS2015+webRTC 58
1.創建空的Win32項目
2.將peerconnection_client的源碼添加到工程中
這里需要注意的是我們應當把工程中源文件依賴的的
conductor.h
defaults.h
flagdefs.h
main_wnd.h
peer_connection_client.h
等頭文件,從
#include "webrtc/examples/peerconnection/client/main_wnd.h"
....
改為
#include "main_wnd.h" ....
否則一會我們把webRTC源碼添加到工程中來的時候,會依賴到源碼里面原來的頭文件
3.把webRTC源碼拷貝到工程源碼目錄下
因為demo里面依賴了webRTC的頭文件,現在對webRTC源碼還不是很熟悉的情況下,不太方便把依賴到的頭文件拆分出來,所以就把源碼拷貝進來了。
除此之外,還需要把webRTC源碼中libYUV和json的頭文件一起拷貝過來
這里我吧webRTC源碼中的examples目錄刪除掉了
4.添加windows頭文件和宏定義
在main.cc中包含Windows.h
在項目屬性-->C/C++-->預處理器-->預處理器定義中添加宏定義
WEBRTC_WIN
WIN32_LEAN_AND_MEAN
NOMINMAX
WIN32
這里需要注意,我編譯的webRTC庫是x64 debug的,所以工程也創建的x64 debug的
5.添加編譯的webRTC靜態庫和demo依賴的Windows庫到工程中
完成上面幾個步驟,編譯一下我們的工程,報的錯誤應該都是鏈接問題了,下面我們就添加webRTC編譯出來的庫和demo依賴的windows庫到工程中
拷貝webRTC靜態庫到工程源碼目錄
然后在項目屬性-->連接器-->附加庫目錄,添加libs目錄
項目屬性-->連接器-->輸入-->附加依賴項,添加庫的依賴
ana_config_proto.lib
ana_debug_dump_proto.lib
audio.lib
audioproc_debug_proto.lib
audioproc_protobuf_utils.lib
audioproc_unittest_proto.lib
audio_coder.lib
audio_coding.lib
audio_conference_mixer.lib
audio_device.lib
audio_encoder_interface.lib
audio_format_conversion.lib
audio_frame_manipulator.lib
audio_frame_operations.lib
audio_mixer_impl.lib
audio_network_adaptor.lib
audio_processing.lib
audio_processing_sse2.lib
bitrate_controller.lib
boringssl_asm.lib
builtin_audio_decoder_factory.lib
builtin_audio_decoder_factory_internal.lib
bwe_simulator_lib.lib
call.lib
channel_transport.lib
chart_proto.lib
cng.lib
command_line_parser.lib
common_audio.lib
common_audio_sse2.lib
common_video.lib
congestion_controller.lib
desktop_capture.lib
desktop_capture_differ_sse2.lib
dl.lib
event_log_visualizer_utils.lib
expat.lib
field_trial_default.lib
file_player.lib
file_recorder.lib
frame_editing_lib.lib
g711.lib
g722.lib
gmock.lib
gtest.lib
ilbc.lib
isac.lib
isac_c.lib
isac_common.lib
isac_fix.lib
legacy_encoded_audio_frame.lib
level_indicator.lib
libjingle_peerconnection.lib
libjingle_peerconnection_api.lib
libjpeg.lib
libsrtp.lib
libstunprober.lib
libvpx.lib
libvpx_yasm.lib
libyuv_internal.lib
media_file.lib
metrics_default.lib
neteq.lib
neteq_unittest_proto.lib
opus.lib
ortc.lib
pacing.lib
pcm16b.lib
primitives.lib
protobuf_full.lib
protoc_lib.lib
red.lib
reference_less_video_analysis_lib.lib
remote_bitrate_estimator.lib
rent_a_codec.lib
rtc_base.lib
rtc_base_approved.lib
rtc_event_log_impl.lib
rtc_event_log_parser.lib
rtc_event_log_proto.lib
rtc_event_log_source.lib
rtc_media.lib
rtc_media_base.lib
rtc_numerics.lib
rtc_p2p.lib
rtc_pc.lib
rtc_stats.lib
rtc_task_queue.lib
rtc_task_runner.lib
rtp_rtcp.lib
simd.lib
simd_asm.lib
system_wrappers.lib
usrsctp.lib
utility.lib
video.lib
video_capture.lib
video_capture_internal_impl.lib
video_capture_module.lib
video_coding.lib
video_coding_utility.lib
video_processing.lib
video_processing_sse2.lib
video_quality_analysis.lib
voice_engine.lib
webrtc.lib
webrtc_common.lib
webrtc_h264.lib
webrtc_i420.lib
webrtc_opus.lib
webrtc_vp8.lib
webrtc_vp9.lib
winsdk_samples.lib
yasm_utils.lib
ws2_32.lib
msdmo.lib
dmoguids.lib
wmcodecdspuuid.lib
boringssl.dll.lib
Winmm.lib
Secur32.lib
strmiids.lib
這里面有webRTC庫的依賴和windows庫的依賴,可能有一些webRTC庫沒有使用到,這里先放進來,以后再拆分。
現在編譯運行,會報下面的錯誤,因為boringssl是鏈接的動態庫
我們把編譯webRTC生成的boringssl.dll拷貝到我們的工程生成的可執行文件目錄下
然后Ctrl+F5運行工程
配合peerconnection_server運行一下,注意這里需要台電腦來運行peerconnection_client
后面的計划就是分析一下peerconnection_server和peerconnection_client來學習webRTC peerconnection API的使用