在webrtc中新建一个工程:
在/home/yqw/temp/webrtc_all/webrtc-checkout_render/src/examples/peerconnection目录下建立文件夹client_srs,把.h和.cc文件放入这个文件夹。
打开src\examples\BUILD.gn,在657行左右:
if (is_linux || is_chromeos || is_win) {
#####################yqw 新增界限
rtc_executable("srsconductor") {
testonly = true
sources = [
"peerconnection/client_srs/srsconductor.h",
"peerconnection/client_srs/srsconductor.cc",
"peerconnection/client_srs/main.cc",
]
deps = [
"../api:audio_options_api",
"../api:create_peerconnection_factory",
"../api:libjingle_peerconnection_api",
"../api:media_stream_interface",
"../api:scoped_refptr",
"../api/audio:audio_mixer_api",
"../api/audio_codecs:audio_codecs_api",
"../api/video:video_frame",
"../api/video:video_rtp_headers",
"../api/video_codecs:video_codecs_api",
"../media:rtc_media_base",
"../p2p:rtc_p2p",
"../pc:video_track_source",
"../rtc_base:checks",
"../rtc_base:net_helpers",
"../rtc_base:threading",
"../rtc_base/third_party/sigslot",
"../system_wrappers:field_trial",
"../test:field_trial",
"../test:platform_video_capturer",
"../test:rtp_test_utils",
"//third_party/abseil-cpp/absl/memory",
"//third_party/abseil-cpp/absl/types:optional",
]
if (is_win) {
sources += [
"peerconnection/client_srs/flag_defs.h",
"peerconnection/client_srs/main.cc",
"peerconnection/client_srs/main_wnd.cc",
"peerconnection/client_srs/main_wnd.h",
]
configs += [ "//build/config/win:windowed" ]
deps += [
"../media:rtc_media_base",
"../rtc_base:win32",
]
}
if (is_linux || is_chromeos) {
cflags = [ "-Wno-deprecated-declarations" ]
libs = [
"X11",
"Xcomposite",
"Xext",
"curl",#这里为笔者另外添加的依赖库
"Xrender",
]
}
deps += [
"../api:libjingle_peerconnection_api",
"../api/audio_codecs:builtin_audio_decoder_factory",
"../api/audio_codecs:builtin_audio_encoder_factory",
"../api/video:video_frame",
"../api/video:video_rtp_headers",
"../api/video_codecs:builtin_video_decoder_factory",
"../api/video_codecs:builtin_video_encoder_factory",
"../media:rtc_audio_video",
"../modules/audio_device",
"../modules/audio_processing",
"../modules/audio_processing:api",
"../modules/video_capture:video_capture_module",
"../pc:libjingle_peerconnection",
"../pc:peerconnection",
"../rtc_base",
"../rtc_base:rtc_base_approved",
"../rtc_base:rtc_json",
"../test:video_test_common",
"//third_party/abseil-cpp/absl/flags:flag",
"//third_party/abseil-cpp/absl/flags:parse",
"//third_party/libyuv",
]
}
######################yqw 新增界限
rtc_executable("peerconnection_client") {
testonly = true
sources:自己添加的文件记录在这里,笔者这个新加的工程依赖项按照peerconnection_client添加的,并新增了curl库,因此需要安装curl,切忌ubunut20自带的curl虽然可以编译,但执行起来会出现推流问题,因此执行:
sudo apt-get install curl
deps:添加依赖库
另外如果是ubuntu在48行还需添加:
if (is_linux || is_chromeos || is_win) {
deps += [
":peerconnection_server",
":stunserver",
":turnserver",
":srsconductor",#这里为笔者新建的项目
]
if (current_os != "winuwp") {
deps += [ ":peerconnection_client" ]
}
}
然后在src目录下打开终端:
gn gen out/linux
ninja -C out/linux/ srsconductor
然后在src/out/linux目录下看到srsconductor已经生成,执行:
./srsconductor
参考:
邱国禄