在webrtc中新建一个工程

在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

参考:
邱国禄

猜你喜欢

转载自blog.csdn.net/weixin_43466192/article/details/124711690