webrtc lib 编译及定制化开发资源

2024-02-25 23:18

本文主要是介绍webrtc lib 编译及定制化开发资源,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

webrtc 拉取及编译,使用了国内镜像源,直接避免直接git clone time out

https://blog.csdn.net/jsf921942722/article/details/102934186?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EOPENSEARCH%7Edefault-17.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EOPENSEARCH%7Edefault-17.control

Webrtc代码获取 ,适用于VPN代理配置git代理# 设置代理
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.19:1080'# 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy配置HTTP代理sudo apt-get install privoxy
# 修改配置
sudo vim /etc/privoxy/config#添加
forward-socks5   /               127.0.0.1:1080 .#重启
sudo /etc/init.d/privoxy restart安装depot_toolsA tutorial introduction to the Chromium depot_tools git extensions.# 下载
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
# 添加到环境变量
export PATH=$PATH:/home/frank/webrtc/depot_tools1:创建boto.cfg文件
2:配置如下内容[Boto]proxy=127.0.0.1proxy_port=8118
3: 设置环境变量NO_AUTH_BOTO_CONFIGexport NO_AUTH_BOTO_CONFIG=/home/frank/webrtc/boto.cfg安装依赖项export http_proxy=http://127.0.0.1:8118/
export https_proxy=http://127.0.0.1:8118/
wget https://cs.chromium.org/chromium/src/build/install-build-deps.shsudo install-build-deps.sh
sudo install-build-deps-android.sh下载代码mkdir webrtc_android && cd webrtc_android
fetch --nohooks webrtc_android
gclient sync 
# gclient sync --nohooks --with_branch_heads编译代码gn gen out/Debug --args='target_os="android" target_cpu="arm"'
ninja -C out/Debug#To build for ARM64: use target_cpu="arm64"
#To build for 32-bit x86: use target_cpu="x86"
#To build for 64-bit x64: use target_cpu="x64"

webrtc lib 接口

https://github.com/flutter-webrtc/libwebrtc

  • 将webrtc源码下载到webrtc中,请参考上面连接
cd webrtc/src
git clone https://github.com/cloudwebrtc/libwebrtc.git
  • 修改 webrtc 的 src/BUILD.gn 文件并将 libwebrtc 添加到 group("default")。
diff --git a/BUILD.gn b/BUILD.gn
索引 bfe6d02ab9..2c0eaaa631 100644
--- a/BUILD.gn 
+++ b/BUILD.gn 
@@ -30,6 +30,7 @@ if (!build_with_chromium) {testonly = 真深度 = [":webrtc",
+       "//libwebrtc:libwebrtc",]如果(rtc_build_examples){deps += [“示例”]
  • 编译
ninja -C out/Default libwebrtc

生成libwebrtc.so库文件,可以用于嵌入式环境


关于webrtc的定制化开发

交叉编译的脚本参考

   ./build/install-build-deps.sh --arm./build/linux/sysroot_scripts/install-sysroot.py --arch=armgn gen out/Default --args='target_os="linux" target_cpu="arm"'ninja -C out/Default libwebrtc
#32位arm
./build/linux/sysroot_scripts/install-sysroot.py --arch=armgn gen out/linux_Arm --args='target_os="linux" target_cpu="arm" arm_arch="armv7-a" arm_tune="cortex-a7" arm_version=7 arm_optionally_use_neon=true arm_fpu="neon-vfpv4" is_clang=false is_debug=false is_nacl_glibc=true libyuv_use_neon=true rtc_build_with_neon=true rtc_include_internal_audio_device=false rtc_include_pulse_audio=false rtc_libvpx_build_vp9=false rtc_use_gtk=false strip_debug_info=true treat_warnings_as_errors=false use_aura=false use_dbus=false use_gold=true use_goma=false use_lld=false use_ozone=false use_udev=false rtc_build_examples=false rtc_build_tools=false rtc_include_tests=false use_glib=false rtc_use_x11 = false arm_float_abi="softfp" rtc_use_pipewire=false  use_custom_libcxx=false rtc_use_h264=true proprietary_codecs=true rtc_enable_protobuf=false use_rtti=true rtc_build_json=true  ffmpeg_branding="Chrome"  use_openh264=true use_custom_libcxx_for_host=false'gn gen out/linux_Arm --args='target_os="linux" target_cpu="arm" arm_arch="armv7-a" arm_tune="cortex-a7" arm_version=7 arm_optionally_use_neon=true arm_fpu="neon-vfpv4" is_clang=false is_debug=false is_nacl_glibc=false arm_float_abi="softfp" libyuv_use_neon=true rtc_build_with_neon=true rtc_include_internal_audio_device=false rtc_include_pulse_audio=false rtc_libvpx_build_vp9=false rtc_use_gtk=false strip_debug_info=true treat_warnings_as_errors=false use_aura=false use_dbus=false use_gold=true use_goma=false use_lld=false use_ozone=true use_udev=false rtc_build_examples=false rtc_build_tools=false rtc_include_tests=false rtc_use_x11 = false use_custom_libcxx=false rtc_use_h264=true proprietary_codecs=true rtc_use_pipewire=false rtc_enable_protobuf=false use_rtti=true rtc_build_json=true  ffmpeg_branding="Chrome"  use_openh264=true use_custom_libcxx_for_host=false'

ninja -C out/linux_Arm libwebrtc

在嵌入式设备中实现webrtc的第三种方式

https://www.cnblogs.com/Johness/p/implement-webrtc-in-embedded-system-sec-1.html

amazon-kinesis提供的设备端sdk

https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c

基于 WebRTC 实现自定义编码分辨率发送

https://blog.csdn.net/netease_im/article/details/113011821?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-1&spm=1001.2101.3001.4242

交叉编译需要根据硬件平台的类型变更编译工具链,另外webrtc只支持V4L2_BUF_TYPE_VIDEO_CAPTURE,不支持

V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE,如需要添加支持需更改

webrtc/src/modules/video_capture/linux/device_info_linux.cc中的

int32_t DeviceInfoLinux::FillCapabilities(int fd) 函数实现

webrtc/src/modules/video_capture/linux/video_capture_linux.cc中

int32_t VideoCaptureModuleV4L2::StartCapture(

const VideoCaptureCapability& capability)

bool VideoCaptureModuleV4L2::AllocateVideoBuffers()

bool VideoCaptureModuleV4L2::DeAllocateVideoBuffers()

bool VideoCaptureModuleV4L2::CaptureThread(void* obj)

这几个函数的实现,增加对mplane的支持

如果需要对接自己硬件平台的编解码mpp等

WebRTC Android端软件/硬件编解码的策略

https://blog.csdn.net/sonysuqin/article/details/82954939

https://blog.csdn.net/tanningzhong/article/details/78672546?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-4.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-4.control

https://blog.csdn.net/chenshukui8300/article/details/100920286?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control

WebRTC的视频解码原理简析

https://blog.csdn.net/fanyun_01/article/details/88936945?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-11.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-11.control

OBS studio is a very popular stable open source live streaming software, with some H264 encoder integrated, such as

  • obs_x264, software;
  • INTEL obs_qsv11, hardware;
  • AMD amd_amf_h264, hardware;
  • NVIDIA ffmpeg_nvenc, hardware.

https://github.com/sonysuqin/WebRTCOBSEncoder

网易云信博客,里面有很多webrtc的应用研究

https://mp.sohu.com/profile?xpt=MTAwMzQ2NDAyOTAxMzg2MDM1MkBzb2h1LmNvbQ==&_f=index_pagemp_2&spm=smpc.content.author.3.1622686810643uK8epT7

这篇关于webrtc lib 编译及定制化开发资源的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/746996

相关文章

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO

雷动WEBRTC产品

http://www.rtcpower.com/html/leidongwebrtc.html ; 1.前言      WebRTC是一项在浏览器内部进行实时视频和音频通信的技术,是谷歌2010年以6820万美元收购Global IP Solutions公司而获得一项技术。WebRTC实现了基于网页的视频会议,标准是WHATWG 协议,目的是通过浏览器提供简单的javascript就可以

Apple quietly slips WebRTC audio, video into Safari's WebKit spec

转自:http://www.zdnet.com/article/apple-quietly-slips-webrtc-audio-video-into-safaris-webkit-spec/?from=timeline&isappinstalled=0 http://www.zdnet.com/article/apple-quietly-slips-webrtc-audio-video-

Windows环境利用VS2022编译 libvpx 源码教程

libvpx libvpx 是一个开源的视频编码库,由 WebM 项目开发和维护,专门用于 VP8 和 VP9 视频编码格式的编解码处理。它支持高质量的视频压缩,广泛应用于视频会议、在线教育、视频直播服务等多种场景中。libvpx 的特点包括跨平台兼容性、硬件加速支持以及灵活的接口设计,使其可以轻松集成到各种应用程序中。 libvpx 的安装和配置过程相对简单,用户可以从官方网站下载源代码

PDFQFZ高效定制:印章位置、大小随心所欲

前言 在科技编织的快节奏时代,我们不仅追求速度,更追求质量,让每一分努力都转化为生活的甜蜜果实——正是在这样的背景下,一款名为PDFQFZ-PDF的实用软件应运而生,它以其独特的功能和高效的处理能力,在PDF文档处理领域脱颖而出。 它的开发,源自于对现代办公效率提升的迫切需求。在数字化办公日益普及的今天,PDF作为一种跨平台、不易被篡改的文档格式,被广泛应用于合同签署、报告提交、证书打印等各个

PHP7扩展开发之函数方式使用lib库

前言 首先说下什么是lib库。lib库就是一个提供特定功能的一个文件。可以把它看成是PHP的一个文件,这个文件提供一些函数方法。只是这个lib库是用c或者c++写的。 使用lib库的场景。一些软件已经提供了lib库,我们就没必要再重复实现一次。如,原先的mysql扩展,就是使用mysql官方的lib库进行的封装。 在本文,我们将建立一个简单的lib库,并在扩展中进行封装调用。 代码 基础

PHP7扩展开发之对象方式使用lib库

前言 上一篇文章,我们使用的是函数方式调用lib库。这篇文章我们将使用对象的方式调用lib库。调用代码如下: <?php $hello = new hello(); $result = $hello->get(); var_dump($result); ?> 我们将在扩展中实现hello类。hello类中将依赖lib库。 代码 基础代码 这个扩展,我们将在say扩展上增加相关代码。sa

Golang test编译使用

创建文件my_test.go package testsimport "testing"func TestMy(t *testing.T) {t.Log("TestMy")} 通常用法: $ go test -v -run TestMy my_test.go=== RUN TestMyTestMy: my_test.go:6: TestMy--- PASS: TestMy (0.

什么是Lib

概念 LIB有两种: 一种是静态库,比如C-Runtime库,这种LIB中有函数的实现代码,一般用在静态连编上,它是将LIB中的代码加入目标模块(EXE或者DLL)文件中,所以链接好了之后,LIB文件就没有用了。一种LIB是和DLL配合使用的,里面没有代码,代码在DLL中,这种LIB是用在静态调用DLL上的,所以起的作用也是链接作用,链接完成了,LIB也没用了。至于动态调用DLL的话,根本用不

C++/《C/C++程序编译流程》

程序的基本流程如图:   1.预处理        预处理相当于根据预处理指令组装新的C/C++程序。经过预处理,会产生一个没有宏定义,没有条件编译指令,没有特殊符号的输出文件,这个文件的含义同原本的文件无异,只是内容上有所不同。 读取C/C++源程序,对其中的伪指令(以#开头的指令)进行处理将所有的“#define”删除,并且展开所有的宏定义处理所有的条件编译指令,如:“#if”、“