ubuntu 使用webrtc_ros 编译linux webrtc库
webrtc_ros 使用WebRTC流式传输ROS图像主题 该节点提供了一个WebRTC对等方,可以将其配置为流ROS图像主题并接收发布到ROS图像主题的流。 该节点托管一个提供简单测试页面的Web服务器,并提供可用于创建和配置WebRTC对等方的Websocket服务器。 有关完整文档,请参见 。 该项目是努力的一部分而发布。
克隆
https://github.com/RobotWebTools/webrtc_ros
catkin_make
报错:
Could not find a package configuration file provided by "webrtc" with any
of the following names:
webrtcConfig.cmake
webrtc-config.cmake
Add the installation prefix of "webrtc" to CMAKE_PREFIX_PATH or set
"webrtc_DIR" to a directory containing one of the above files. If "webrtc"
provides a separate development package or SDK, be sure it has been
installed.
https://github.com/node-webrtc/node-webrtc
安装依赖
bash
sudo apt-get update
sudo apt-get install build-essential libssl-dev libasound2-dev libpulse-dev libjpeg-dev libxv-dev libgtk-3-dev libxtst-dev libwebp-dev
sudo apt-get install libglib2.0-dev
sudo apt-get update 报错时出现同样问题参考:
bash
https://blog.csdn.net/qq_15204179/article/details/134612954?spm=1001.2014.3001.5501
mkdir /webrtc
cd webrtc
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH=$PATH:/home/sukai/3rdparty/webrtc/depot_tools
export DEPOT_TOOLS_PATH=/home/sukai/3rdparty/webrtc/depot_tools
git clone https://github.com/crow-misia/libwebrtc-bin
cd libwebrtc-bin/build
make USE_H264=1 linux-x64
编译时间比较长:
出现这个要耐心等等,不要以为程序进入了死循环,过一段时间会显示进度的.
bash
[0:07:48] Still working on:
[0:07:48] src/third_party
[0:07:48] src/tools
静待编译完成, 最后在libwebrtc-bin目录中有各package目录,其中包含了include lib libwebrtc-linux-x64-h264.tar.xz NOTICE VERSION等几个目录,lib目录中为编译后的 .a库,相关的头文件在include目录中。
/home/sukai/3rdparty/webrtc/libwebrtc-bin/package/include /home/sukai/3rdparty/webrtc/libwebrtc-bin/package/lib
法二:
cd ~
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
sudo vim ~/.bashrc
export PATH="$PATH:~/depot_tools"
source ~/.bashrc
mkdir webrtc-checkout
cd webrtc-checkout
fetch --nohooks webrtc
gclient sync
安装
./build/install-build-deps.sh
法3:使用Cmake模块封装各个子功能
GitHub - aisouard/libwebrtc: :package: Google's WebRTC implementation in a single static library. 或
这个存储库包含一系列CMake脚本,可帮助您将Google的本机WebRTC实现嵌入到您的项目中,就像这样简单:
bash
cmake_minimum_required(VERSION 3.3)
project(sample)
find_package(LibWebRTC REQUIRED)
include(${LIBWEBRTC_USE_FILE})
set(SOURCE_FILES main.cpp)
add_executable(sample ${SOURCE_FILES})
target_link_libraries(sample ${LIBWEBRTC_LIBRARIES})
如果你更喜欢传统的方式,它还会生成一个pkg-config文件:
bash
g++ `pkg-config --cflags LibWebRTC` main.cpp -o main `pkg-config --libs LibWebRTC`
状态
以下表格显示了此项目的当前状态,包括支持的平台和体系结构。
x86 | x64 | arm | arm64 | |
---|---|---|---|---|
Linux | ✔ | ✔ | ||
macOS | ✔ | |||
Windows | ✔ | ✔ |
先决条件
- CMake 3.3或更高版本
- Python 2.7(对于Windows是可选的,因为它将使用在depot_tools安装内的解释器)
Debian和Ubuntu
需要的开发包:
bash
# apt-get install build-essential libglib2.0-dev libgtk2.0-dev libxtst-dev \
libxss-dev libpci-dev libdbus-1-dev libgconf2-dev \
libgnome-keyring-dev libnss3-dev libasound2-dev libpulse-dev \
libudev-dev
GCC和G++ 4.8或更高版本,以支持C++11。
macOS
- OS X 10.11或更高版本
- Xcode 7.3.1或更高版本
Windows
- Windows 7 x64或更高版本
- Visual Studio 2015(带有更新)
编译
克隆存储库,创建一个输出目录,进入其中,然后运行CMake。
bash
git clone https://github.com/aisouard/libwebrtc.git $ cd libwebrtc
mkdir out
cd out
cmake ..
Windows用户在他们的Visual Studio生成器名称中如果要为64位平台构建库,则必须添加Win64后缀;对于32位构建,他们会省略它并相应地定义TARGET_CPU变量。
bash
cmake -G "Visual Studio 14 2015" -DTARGET_CPU=x86 > cmake -G "Visual Studio 14 2015 Win64"
然后,他们将需要打开位于当前输出目录中的libwebrtc.sln并构建ALL_BUILD项目。
Unix用户只需运行以下make命令。
bash
make
# make install
make 报错:待解决
Cloning into 'depot-tools'...
fatal: invalid reference: master
CMake Error at /home/sukai/3rdparty/webrtc/libwebrtc/out/depot_tools/tmp/depot-tools-gitclone.cmake:40 (message):
Failed to checkout tag: 'master'
make[2]: *** [CMakeFiles/depot-tools.dir/build.make:91: depot_tools/src/depot-tools-stamp/depot-tools-download] Error 1
make[1]: *** [CMakeFiles/Makefile2:162: CMakeFiles/depot-tools.dir/all] Error 2
make: *** [Makefile:152: all] Error 2
库将位于当前输出目录的lib文件夹中。include文件夹将包含头文件。CMake脚本将被放置在lib/cmake/LibWebRTC目录中。
调试和发布配置
如果你使用XCode或Visual Studio,你可以在IDE中轻松切换调试和发布配置。调试标志将附加到生成器参数。
否则,你必须将CMAKE_BUILD_TYPE变量定义为Debug。
bash
cmake -DCMAKE_BUILD_TYPE=Debug ..
在项目中使用WebRTC
在编写本README文件时,尚没有检测WebRTC库和头文件的正确方法。在此期间,此CMake脚本生成并声明了一个LibWebRTC包,将非常容易用于您的项目。
你只需包含该包,然后嵌入"use file",它将自动查找所需的库、定义适当的编译标志和包含目录。
bash
find_package(LibWebRTC REQUIRED) include(${LIBWEBRTC_USE_FILE}) target_link_libraries(my-app ${LIBWEBRTC_LIBRARIES})
还提供了一个pkg-config文件,可以通过将LibWebRTC指定为包名称来获取所需的编译器和链接器标志。
bash
pkg-config --cflags --libs LibWebRTC
获取特定修订版本
默认情况下,将获取最新的工作版本,除非您决定通过将其哈希设置为WEBRTC_REVISION CMake变量或将另一个分支头引用设置为WEBRTC_BRANCH_HEAD变量来检索特定的提交。
bash
cmake -DWEBRTC_REVISION=be22d51 ..
cmake -DWEBRTC_BRANCH_HEAD=refs/branch-heads/57 ..
如果两个变量都设置了,它将专注于获取WEBRTC_REVISION中定义的提交。
管理depot_tools
CMake将检索depot_tools存储库的最新修订版。它将获取WebRTC存储库的提交日期,然后将depot_tools检出到与WebRTC的日期最接近的提交,以确保与gclient和其他工具具有高兼容性。
通过定义DEPOT_TOOLS_PATH变量,可以防止此行为。
bash
cmake -DDEPOT_TOOLS_PATH=/opt/depot_tools ..
配置
该库将在同一主机的平台和架构上进行编译和使用。如果需要进行交叉编译,以下是一些可能有用的CMake标志。
- BUILD_DEB_PACKAGE:生成Debian软件包,默认为OFF,仅在Linux下可用。
- BUILD_RPM_PACKAGE:生成Red Hat软件包,默认为OFF,仅在Linux下可用。
- BUILD_TESTS:构建WebRTC单元测试和模拟类,如FakeAudioCaptureModule。
- BUILD_SAMPLE:在sample文件夹中构建一个可执行文件。
- DEPOT_TOOLS_PATH:将此变量设置为您自己的depot_tools目录。这将防止CMake获取与所需的WebRTC修订版本匹配的depot_tools。
- GN_EXTRA_ARGS:将额外的参数添加到gn gen --args参数。
- NINJA_ARGS:执行ninja命令时传递的参数。
- TARGET_OS:目标操作系统,该值将在gn gen命令的--target_os参数中使用。该值必须是
法四:使用纯Shell脚本实现
https://github.com/sourcey/webrtc-builds
这些跨平台构建脚本自动化了构建和打包WebRTC的繁重工作。非常感谢@vsimon为这些脚本奠定了基础。
支持的平台
- OSX: 推荐使用Homebrew。支持构建'mac'和'ios'。
- Windows: 需要安装Visual Studio Community 2015 Update 3或更新版本,并带有bash shell,例如Git for Windows或MSYS。
- Linux: 需要Debian或Ubuntu发行版,并支持apt-get。支持构建'linux'和'android'。
用法
要构建WebRTC的最新版本,只需键入:
bash
# 构建当前平台的最新WebRTC:
./build.sh
# 要编译具有x64和x86库的特定分支,您可以运行:
./build.sh -c x64 -b branch-heads/66
./build.sh -c x86 -b branch-heads/66 -x
# 要交叉编译iOS的x64和x86库,您可以运行(在MacOS上):
./build.sh -c x64 -t ios
./build.sh -c x86 -t ios -x
或使用选项:
bash
Usage:
$0 [OPTIONS]
...
输出包将保存在 {OUTDIR}/webrtcbuilds-<rev>-<sha>-<target-os>-<target-cpu>.<ext>
,其中 <rev>
是提交的修订号, <sha>
是提交的短Git SHA, <target-os>-<target-cpu>
是目标环境的操作系统(linux、mac、win)和 CPU(x64、x86)。
在Windows上使用7-Zip压缩软件,以获得大大优越的输出文件大小。在mac和linux上,输出文件是tar.gz格式。
运行测试
一旦您编译了库,可以运行快速编译测试以确保构建的完整性:
bash
./test/run_tests.sh out/webrtc-17657-02ba69d-linux-x64
进一步阅读
以下链接指向官方的WebRTC相关文档:
- WebRTC Native Code Development
- WebRTC Prerequisite Software
- Chromium Dev: How to Install Depot Tools
- Chromium Source: Windows Build Instructions
- Chromium Source: GN Quick Start
参考内容
编译 WebRTC 库_在 linux 上将 libwebrtc.a 与 c++ 链接时出错_贝克街的流浪猫的博客-CSDN博客 贝贝猫的文章目录_贝贝猫的博客-CSDN博客