Qt重写webrtc的demo peerconnection

embedded/2025/1/11 15:06:31/

整个demo为:

可以选择多个编码方式:

cmake_minimum_required(VERSION 3.5)project(untitled LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_INCLUDE_CURRENT_DIR ON)set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
include_directories("D:/webrtc/webrtc-checkout/src""D:/webrtc/webrtc-checkout/src/out/release/obj""D:/webrtc/webrtc-checkout/src/third_party/abseil-cpp""D:/webrtc/webrtc-checkout/src/third_party/libyuv/include""D:/webrtc/webrtc-checkout/src/third_party/jsoncpp/source/include""D:/webrtc/webrtc-checkout/src/third_party/jsoncpp/generated"        
)
include_directories(./)
# QtCreator supports the following variables for Android, which are identical to qmake Android variables.
# Check http://doc.qt.io/qt-5/deployment-android.html for more information.
# They need to be set before the find_package(Qt5 ...) call.#if(ANDROID)
#    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
#    if (ANDROID_ABI STREQUAL "armeabi-v7a")
#        set(ANDROID_EXTRA_LIBS
#            ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libcrypto.so
#            ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libssl.so)
#    endif()
#endif()
add_definitions(-D_ITERATOR_DEBUG_LEVEL=2-DUSE_AURA=1-DWEBRTC_USE_H264-D_HAS_EXCEPTIONS=0-D__STD_C-D_CRT_RAND_S-D_CRT_SECURE_NO_DEPRECATE-D_SCL_SECURE_NO_DEPRECATE-D_ATL_NO_OPENGL-D_WINDOWS-DCERT_CHAIN_PARA_HAS_EXTRA_FIELDS-DPSAPI_VERSION=2-DWIN32-D_SECURE_ATL-DWINUWP-D__WRL_NO_DEFAULT_LIB__-DWINAPI_FAMILY=WINAPI_FAMILY_PC_APP-DWIN10=_WIN32_WINNT_WIN10-DWIN32_LEAN_AND_MEAN-DNOMINMAX-D_UNICODE-DUNICODE-DNTDDI_VERSION=NTDDI_WIN10_RS2-D_WIN32_WINNT=0x0A00-DWINVER=0x0A00-DNDEBUG-DNVALGRIND-DDYNAMIC_ANNOTATIONS_ENABLED=0-DWEBRTC_ENABLE_PROTOBUF=0-DWEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE-DRTC_ENABLE_VP9-DHAVE_SCTP-DWEBRTC_LIBRARY_IMPL-DWEBRTC_NON_STATIC_TRACE_EVENT_HANDLERS=0-DWEBRTC_WIN-DABSL_ALLOCATOR_NOTHROW=1-DQT_DEPRECATED_WARNINGS-DQT_NO_KEYWORDS-DHAVE_SCTP-DWEBRTC_VIDEO_CAPTURE_WINRT)
find_package(Qt5 COMPONENTS Widgets Network REQUIRED)
include_directories("D:/webrtc/webrtc-checkout/src/third_party/jsoncpp/source/install/include")
include_directories("D:/webrtc/webrtc-checkout/src/third_party/libyuv/include")
link_directories("D:/webrtc/webrtc-checkout/src/out/release/obj" "D:/webrtc/webrtc-checkout/src/third_party/jsoncpp/source/install/lib")
include_directories("D:/webrtc/webrtc-checkout/src/third_party/abseil-cpp/install/include")
add_executable(untitledmain.cpp conductor.cc defaults.cc peer_connection_client.cc  test_video_capturer.cc vcm_capturer.ccmainwindow.cpp D:/webrtc/webrtc-checkout/src/rtc_base/strings/json.ccmainwindow.hmainwindow.ui)file(GLOB_RECURSE MY_FILES "D:/webrtc/webrtc-checkout/src/third_party/abseil-cpp/install/lib/*.lib")message(${MY_FILES})
target_link_libraries(untitledPRIVATEWS2_32 secur32.lib winmm.lib dmoguids.lib wmcodecdspuuid.lib msdmo.lib Strmiids.lib Iphlpapi.lib ${MY_FILES} )
target_link_libraries(untitled PRIVATE Qt5::Widgets Qt5::Network jsoncpp.lib D:/webrtc/webrtc-checkout/src/out/release/obj/webrtc.lib)

其中h264在cmake中要加上-DWEBRTC_USE_H264,编译时的参数为

gn gen out/release --ide=vs --args="is_debug=true use_custom_libcxx=false rtc_enable_protobuf=false target_cpu=\"x64\" enable_iterator_debugging=true symbol_level=2 is_clang=true rtc_include_tests=true rtc_use_h264=true ffmpeg_branding=\"Chrome\" proprietary_codecs=true"

需要打开webrtc选项。这个demo的下载链接为

https://download.csdn.net/download/qq_42805085/90245215


http://www.ppmy.cn/embedded/153043.html

相关文章

人工智能之基于阿里云快速搭建Llama-3.2-11B-Vision-Instruct

人工智能之基于阿里云快速搭建Llama-3.2-11B-Vision-Instruct 需求描述 基于阿里云搭建图片生成文字模型,模型名称:LLM-Research/Llama-3.2-11B-Vision-Instruct使用上述模型输入图片生成文字,模型路径 业务实现 阿里云配置 阿里云配置如…

for循环暴力解法以及优化练习

这里主要是练习一下用等差数列解决for循环的时间复杂度的一些问题 公式: 等差数列求和公式:(首尾)*项数/2 等差数列项数公式:(尾-首)/公差1 有一组数组比如:1&#xff0c…

通信网络安全分层及关键技术解决

要实现信息化,就必须重视信息网络安全。信息网络安全绝不仅是IT行业的问题,而是一个社会问题,是一个包括多学科的系统安全工程问题,并直接关系到国家安全。因此,知名安全专家沈昌祥院士呼吁,要像重视两弹一…

(超详细)Maven安装配置、以及在IDEA中创建Maven项目

一、登录官网下载Maven Download Apache Maven – Maven 根据自己所需要进行下载,如果是windows系统就下载zip文件,Linux系统就下载gz文件 我下载的版本是3.6.3,下面是网盘链接: 百度网盘链接: https://pan.baidu.com/s/1Ytoprb…

计算机网络之---端口与套接字

总括 端口:是计算机上用于标识网络服务的数字标识符,用于区分不同的服务或应用程序。套接字:是操作系统提供的用于进程间网络通信的编程接口,允许程序通过它来进行数据的发送、接收和连接管理。关系:端口号用于标识服…

基于 Nuxt3 + Obsidian 搭建个人博客

Nuxt是一个用Vue来编写的,可用来创建类型安全、高性能和生产级全栈 Web 应用程序和网站的全栈框架。后端是 Nitro,一个可以被单独使用的Web服务端框架。 作为一个全栈框架,不仅具备了比使用Vue开发SPA客户端更好的开发体验,还能享…

c++程序设计(第3版)系列教程

c程序设计(第3版)系列笔记 预备知识 在c当中,避免字符串被截断的输入为gets(S),但是由于c语言新标准的推行和部分删除,在使用gets(S)时只能通过宏定义#define gets(S) fgets(S,sizeof(S),stdin)处理之后使用。 在c当中,面对难以处…

java1-相对路径与绝对路径

注意注意~开始新部分啦! 开始正式分享java前,先为大家分享一下一个常用的概念---文件的相对路径与绝对路径. 开篇明义: 相对路径是指一个文件或目录相对于当前工作目录的路径。相对路径不包含根目录,而是从当前目录开始计算。 绝对路径是指一个文件或目录从根目录…