当前位置:   article > 正文

ubuntu 使用webrtc_ros 编译linux webrtc库_webrtc ros

webrtc ros

           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

安装依赖

  1. sudo apt-get update
  2. sudo apt-get install build-essential libssl-dev libasound2-dev libpulse-dev libjpeg-dev libxv-dev libgtk-3-dev libxtst-dev libwebp-dev
  3. sudo apt-get install libglib2.0-dev

sudo apt-get update 报错时出现同样问题参考:

https://blog.csdn.net/qq_15204179/article/details/134612954?spm=1001.2014.3001.5501

  1. mkdir /webrtc
  2. cd webrtc
  3. git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
  4. export PATH=$PATH:/home/sukai/3rdparty/webrtc/depot_tools
  5. export DEPOT_TOOLS_PATH=/home/sukai/3rdparty/webrtc/depot_tools

  1. git clone https://github.com/crow-misia/libwebrtc-bin
  2. cd libwebrtc-bin/build
  3. make USE_H264=1 linux-x64

编译时间比较长:

 出现这个要耐心等等,不要以为程序进入了死循环,过一段时间会显示进度的.

  1. [0:07:48] Still working on:
  2. [0:07:48] src/third_party
  3. [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

法二:

  1. cd ~
  2. git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
  3. sudo vim ~/.bashrc
  4. export PATH="$PATH:~/depot_tools"
  5. source ~/.bashrc
  6. mkdir webrtc-checkout
  7. cd webrtc-checkout
  8. fetch --nohooks webrtc
  9. 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实现嵌入到您的项目中,就像这样简单:

  1. cmake_minimum_required(VERSION 3.3)
  2. project(sample)
  3. find_package(LibWebRTC REQUIRED)
  4. include(${LIBWEBRTC_USE_FILE})
  5. set(SOURCE_FILES main.cpp)
  6. add_executable(sample ${SOURCE_FILES})
  7. target_link_libraries(sample ${LIBWEBRTC_LIBRARIES})

如果你更喜欢传统的方式,它还会生成一个pkg-config文件:

g++ `pkg-config --cflags LibWebRTC` main.cpp -o main `pkg-config --libs LibWebRTC`

状态

以下表格显示了此项目的当前状态,包括支持的平台和体系结构。

x86x64armarm64
Linux
macOS
Windows

先决条件

  • CMake 3.3或更高版本
  • Python 2.7(对于Windows是可选的,因为它将使用在depot_tools安装内的解释器)
Debian和Ubuntu

需要的开发包:

  1. # apt-get install build-essential libglib2.0-dev libgtk2.0-dev libxtst-dev \
  2. libxss-dev libpci-dev libdbus-1-dev libgconf2-dev \
  3. libgnome-keyring-dev libnss3-dev libasound2-dev libpulse-dev \
  4. 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。

  1. git clone https://github.com/aisouard/libwebrtc.git $ cd libwebrtc
  2. mkdir out
  3. cd out
  4. cmake ..

Windows用户在他们的Visual Studio生成器名称中如果要为64位平台构建库,则必须添加Win64后缀;对于32位构建,他们会省略它并相应地定义TARGET_CPU变量。

cmake -G "Visual Studio 14 2015" -DTARGET_CPU=x86 > cmake -G "Visual Studio 14 2015 Win64"

然后,他们将需要打开位于当前输出目录中的libwebrtc.sln并构建ALL_BUILD项目。

Unix用户只需运行以下make命令。

  1. make
  2. # 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。

cmake -DCMAKE_BUILD_TYPE=Debug ..

在项目中使用WebRTC

在编写本README文件时,尚没有检测WebRTC库和头文件的正确方法。在此期间,此CMake脚本生成并声明了一个LibWebRTC包,将非常容易用于您的项目。

你只需包含该包,然后嵌入"use file",它将自动查找所需的库、定义适当的编译标志和包含目录。

find_package(LibWebRTC REQUIRED) include(${LIBWEBRTC_USE_FILE}) target_link_libraries(my-app ${LIBWEBRTC_LIBRARIES})

还提供了一个pkg-config文件,可以通过将LibWebRTC指定为包名称来获取所需的编译器和链接器标志。

 pkg-config --cflags --libs LibWebRTC

获取特定修订版本

默认情况下,将获取最新的工作版本,除非您决定通过将其哈希设置为WEBRTC_REVISION CMake变量或将另一个分支头引用设置为WEBRTC_BRANCH_HEAD变量来检索特定的提交。

  1. cmake -DWEBRTC_REVISION=be22d51 ..
  2. cmake -DWEBRTC_BRANCH_HEAD=refs/branch-heads/57 ..
  3. 如果两个变量都设置了,它将专注于获取WEBRTC_REVISION中定义的提交。
  4. 管理depot_tools
  5. CMake将检索depot_tools存储库的最新修订版。它将获取WebRTC存储库的提交日期,然后将depot_tools检出到与WebRTC的日期最接近的提交,以确保与gclient和其他工具具有高兼容性。
  6. 通过定义DEPOT_TOOLS_PATH变量,可以防止此行为。
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的最新版本,只需键入:

  1. # 构建当前平台的最新WebRTC:
  2. ./build.sh
  3. # 要编译具有x64和x86库的特定分支,您可以运行:
  4. ./build.sh -c x64 -b branch-heads/66
  5. ./build.sh -c x86 -b branch-heads/66 -x
  6. # 要交叉编译iOS的x64和x86库,您可以运行(在MacOS上):
  7. ./build.sh -c x64 -t ios
  8. ./build.sh -c x86 -t ios -x

或使用选项:

  1. Usage:
  2. $0 [OPTIONS]
  3. ...

输出包将保存在 {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格式。

运行测试

一旦您编译了库,可以运行快速编译测试以确保构建的完整性:

./test/run_tests.sh out/webrtc-17657-02ba69d-linux-x64

进一步阅读

以下链接指向官方的WebRTC相关文档:

参考内容

编译 WebRTC 库_在 linux 上将 libwebrtc.a 与 c++ 链接时出错_贝克街的流浪猫的博客-CSDN博客 贝贝猫的文章目录_贝贝猫的博客-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/797588
推荐阅读
相关标签
  

闽ICP备14008679号