zoukankan      html  css  js  c++  java
  • webRTC peerconnection_client demo创建VS工程

      编译了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的使用

  • 相关阅读:
    LeetCode12: 整数转罗马数字
    LeetCode11:盛最多水的容器
    LeetCode09:判断回文数
    LeetCode08:字符串转换成整数
    LeetCode04:寻找中位数
    LeetCode03:无重复字符的最长子串
    《JAVA编程思想》第四版 PDF 下载 中文版和英文版 高清PDF扫描带书签
    XML
    异常
    委托和匿名方法和Lambda表达式
  • 原文地址:https://www.cnblogs.com/CoderTian/p/7828926.html
Copyright © 2011-2022 走看看