ubuntu 使用webrtc_ros 编译linux webrtc库

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.

NodeJS WebRTC

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.

GitHub - BeiKeJieDeLiuLangMao/libwebrtc-m70: :package: Google's WebRTC implementation in a single static library.I changed some things, make it could build M70 webrtc with h264.

这个存储库包含一系列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 库_在 linux 上将 libwebrtc.a 与 c++ 链接时出错_贝克街的流浪猫的博客-CSDN博客 贝贝猫的文章目录_贝贝猫的博客-CSDN博客

相关推荐
不是笨小孩i1 小时前
开源AI图片处理工具HivisionIDPhotos安装与证件照制作指南
ubuntu
二十雨辰1 小时前
[linux]docker基础
linux·运维·docker
饮浊酒2 小时前
Linux操作系统 ------(3.文本编译器Vim)
linux·vim
lihuhelihu2 小时前
第3章 CentOS系统管理
linux·运维·服务器·计算机网络·ubuntu·centos·云计算
矛取矛求2 小时前
Linux系统性能调优技巧
linux
One_Blanks2 小时前
渗透测试-Linux基础(1)
linux·运维·安全
Perishell2 小时前
无人机避障——大疆与Airsim中的角速度信息订阅获取
linux·动态规划·无人机
爱吃喵的鲤鱼3 小时前
linux进程的状态之环境变量
linux·运维·服务器·开发语言·c++
dessler3 小时前
Linux系统-ubuntu系统安装
linux·运维·云计算
荒Huang3 小时前
Linux挖矿病毒(kswapd0进程使cpu爆满)
linux·运维·服务器