一肿轨、生成
不支持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后,會(huì)在out/x64_debug目錄下生成all.sln,使用vs2017打開就能翻閱webrtc的源碼了
二悠栓、編譯
編譯命令:
ninja -C out/x64_debug
編譯會(huì)使用cang_cl進(jìn)行編譯原在,速度比較快硝全。
編譯完成后农猬,out\x64_debug\obj目錄下會(huì)生成我們需要的webrtc.lib庫(kù)却音,另外還有可能會(huì)用到的.obj文件改抡。
查看out\x64_debug\obj目錄下的webrtc.ninja文件, 發(fā)現(xiàn)webrtc.lib 鏈接了各個(gè)模塊的.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文件中可發(fā)現(xiàn)link了ffmpeg和openh264相關(guān)的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 的頭文件和庫(kù)文件
提取頭文件的腳本
#!/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。添加依賴項(xiàng)
#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")
添加預(yù)處理器定義
NOMINMAX
WIN32_LEAN_AND_MEAN
WEBRTC_WIN
_CRT_SECURE_NO_WARNINGS
WIN32
編譯酬土、運(yùn)行
把out\x64_debug目錄下的dll拷貝到運(yùn)行目錄下
配合out\x64_debug目錄下的peerconnection_server.exe 就可以實(shí)現(xiàn)視頻荆忍、語(yǔ)音通話。
Demo 入口:github.com/kwan530/Pee…
如有問題撤缴,請(qǐng)聯(lián)系4755879@qq.com.