在Ubuntu12.10-32bit上构建、测试WebRTC之Android示例WebRTCDemo(video_engine)

一文解决WebRTC|Android 客户端编译 目录 前言 重要分支描述 准备工作 验证 Other Q&A 参考 前言 之前在Linux服务器上编译过Webrtc,现在需要将部分功能移植到Client端,需要重新编译,本文章将介绍如何编译客户端WebRTC、编译过程中遇到了哪些坑,以及编译前的准备工作。 笔者开始是在MAC上虚拟Docker 编译,因机器性能原因,又重新找了台Win本,重装了双系统,在Ubuntu 上最终编译完成。 WebRTC 版本变更频繁,各版本编译时差异较大,本次笔者基于m84分支,... 阅读详情

参考资料:

http://www.webrtc.org/reference/getting-started

http://www.webrtc.org/reference/getting-started/prerequisite-sw

http://code.google.com/p/webrtc/issues/detail?id=1435

http://code.google.com/p/webrtc/source/browse/trunk/src/video_engine/main/test/android_test/Android.mk?spec=svn2817&r=2817

http://www.verydemo.com/demo_c131_i2918.html

1.废话

笔者是一个不熟悉Linux操作系统的小鸟。为了想跑一跑Google项目WebRTC中的Demo--video_engine,笔者花费了大量的时间和精力在网上查资料并进行尝试。但是由于Google代码更新很快,网上的不少资料都随着时间推移而失效,外加WebRTC项目本身的问题,笔者走了不知道多少弯路,最终勉强才算把Demo跑了起来。在这里我把这一过程做一个简单的分享,希望能给和我一样的小鸟一点帮助,也希望有大高玩点出我的错误,为我指一条明路。Orz..

下面步入正题。


2.获取WebRTC项目代码


2.1安装Depot_tools

整个WebRTC项目的文件都是通过Depot_tools同步下来的,为了得到它需要装两个东西:

sudo apt-get install git-core

sudo apt-get install subversion

待安装完成后就可以克隆Depot_tools了:

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

然后把Depot_tools的路径写到.bashrc里(这样就不用每次打开一个终端都写一次):

gedit ~/.bashrc

在文件最后添加即可

export PATH="$PATH":home/xxx/depot_tools

搞完之后注销一下,再愉快地登陆并打开终端,输入 gclient进行测试。成功的话会有一陀指令说明显示出来,接下来就可以获取WebRTC的trunk了。


2.2获取代码,准备make

在终端里输入

gclient config https://webrtc.googlecode.com/svn/trunk

然后这里有一步比较关键,就是到trunk目录里找到一个名为“ .client ”的文件,编辑它在它的最后添加一行:

target_os = ['android', 'unix']

如果不添加就等着被坑爹吧。接下来你就可以轻松愉快地sync代码啦:

gclient sync

东西很多,等吧。

待完成后,到目录/trunk/third_party/android_tools/下你可以看到sync下来的sdk和ndk,把它们在系统里的路径分别写到环境变量里(可以写到.bashrc中)。

export ANDROID_SDK_ROOT=xxxxxxx/SDK

export ANDROID_NDK_ROOT=xxxxxxx/NDK

注意这里很关键,SDK你可以去官网下,但是,这个NDK请务必使用sync下来的这版,除非你是大神知道自己用其它办法也能实现。

接下来有一个专门为ubuntu准备的脚本,运行它从而可以把编译项目所需的工具安装起来:

 ./build/install-build-deps.sh

又是一阵等待,如果不想等,也可以参考 这里 只安装必不可少的部分。

结束后就可以进入编译环节。


2.3编译WebRTC

首先生成makefile文件:

source ./build/android/envsetup.sh --try-32bit-host

gclient runhooks

注意!如果在runhooks的时候报如下错:

/trunk/third_party/android_tools/ndk//toolchains/arm-linux-androideabi-4.6/prebuilt/linux-i686/bin/*-gcc: not found


则需要进入目录/trunk/third_party/android_tools/ndk//toolchains/arm-linux-androideabi-4.6/prebuilt/把linux-x86改成linux-i686,然后再在ndk-build之前把它改回来,即还原成linux-x86。

然后

make

待make完成后你应该能在trunk/out/debug目录下发现大量 .a格式的文件。


3.build WebRTCDemo

下面为构建WebRTCDemo生成 .so文件

cd webrtc/video_engine/test/android/

ndk-build

成功后会生成libwebrtc-video-demo-jni.so 。


到这里,烦躁的工作就基本结束了,下面只需要把/trunk/webrtc/video_engine/test/android这个项目import到你的eclipse中测试就可以啦。

注意一开始刚导进去的时候项目本身有错误,是因为有几个文件没被包含在里面,你只要到webrtc目录里搜索相应的文件并添加到项目里即可,添加完成后的样子应该是:




 












4 曾遇到的各种错误


错误1.

在ndk-build的时候报错:

Android NDK: Check that jni/../../../../../out/Debug/libvideo_engine_core.a exists  or that its path is correct 

原因是没有按照2.2所述那样添加 target_os = ['android', 'unix'] ,需要按上面所述的步骤推倒重来。其它类似找不到.a的错误也可以尝试如此解决。

错误2.

在ndk-build的时候报错:

Assembler messages: Fatal error: invalid -march= option: `armv7-a'  error 1 ..

或者报错:

arm-linux-androideabi-ld: Syntax error: "(" unexpected ...

原因是NDK的版本不对,请使用trunk/thirdparty/androidtools/里的NDK

错误3.

在ndk-build的时候报错:

make: /home/liuhao/depot_tools/trunk/third_party/android_tools/ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc: Command not found

原因很可能是之前没有按2.3中所述那样没把路径改回来。

错误4.

在runhooks的时候报错:

/bin/sh: 1: /home/liuhao/depot_tools/trunk/third_party/android_tools/ndk//toolchains/arm-linux-androideabi-4.6/prebuilt/linux-i686/bin/*-gcc: not found

原因见2.3

错误5.

在运行demo的时候报错:

Could not find class 'android.graphics.SurfaceTexture

原因是需要至少支持API11。

错误6.

在运行demo的时候报错:

NoClassDefFoundError : org.webrtc.voiceengine.(或者其它class)

解决方法见上述3。
webrtc所有平台下载编译步骤详细说明 阅读详情

相关推荐

webrtc(native C++) + srs 拉流客户端

同时因为VideoRenderer类中也含有窗口类因此需要重新定义,去除其中的窗口类,这个类也就是我们自定义的渲染器,这个类继承自publicrtc::VideoSinkInterface。首先修改void Conductor::AddTracks()函数,在推流阶段这里是把音视频流轨道添加进去,现在需要改动一下,需要添加好接收的流轨道。,其中有个OnFrame函数必须要重写,因为将VideoRenderer类的对象注册进webrtc后,当视频帧来时调用OnFrame函数来获得。这个函数本来是执行以下。

宝安小雨 1765

WebRTC 实现 Android 传屏 demo

WebRTC (Web Real-Time Communications) 是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和音频流或其他任意数据的传输。目前,WebRTC的应用已经不局限在浏览器与浏览器之间,通过官方提供的SDK,我们可以很容易的实现本地应用间的音视频传输。在Android平台上,我们也非常容易的集成WebRTC框架,用非常简洁的代码就能实现强大、可靠的音视频传输功能。

irainsa的博客 971

Android代码-Webrtc-for-Android

This directory contains an example Android client for http://apprtc.appspot.com Prerequisites: Make sure gclient is checking out tools necessary to target Android: your .gclient file should contain a line like: target_os = ['android', 'unix'] Make sure to re-run gclient sync after adding this to download the tools. Env vars need to be set up to target Android; easiest way to do this is to run (from the libjingle trunk directory): . ./build/android/envsetup.sh Note that this clobbers any previo

webrtc入门之客户端连麦demo-apprtc

webrtc很强大,但编译起来比较痛苦,源码和工具链下载下来十几G,源码samples里面提供了androidapp项目,只有源码,没有jar包和so库,所以我编译好webrtc,提取出所需的jar包和so文件,并把里面androidapp弄成android studio项目,可以正常编译运行。这个demo实现webrtc连麦,点对点视频通信,对webrtc初学者还是挺有帮助的。以下是关于这个de

Android_杜小菜_移动开发技术专栏 3359

python cartopy绘制扇形区域图/cartopy绘制北极部分区域

实际上,这个问题原因还是由于投影转换的问题,在set_extend时,绘制的上下边界仍然是方形、未被正确投影的边界,与我们的set_boundary存在冲突,最根本的原因还是在于cartopy对于投影计算的一些缺陷。另外我们需要指出的是:**该方法不适用于极地投影,即NorthPolarStereo,由于NorthPolarStereo本身投影特性只需一个参数,本身并不适合。我们绘制极地投影时,同样也是使用set_boundary绘制圆形边界,那么当我们想要绘制扇形时,可以通过。请根据喜好自行选择,

weixin_43750300的博客 3212

不用SE63逐个翻译!ABAP函数LXE_OBJ_TEXT_PAIR_WRITE批量处理TCODE描述的3种姿势

本文介绍了三种利用ABAP函数LXE_OBJ_TEXT_PAIR_WRITE批量翻译SAP事务码(TCODE)描述的高效方案,旨在替代SE63逐个翻译的低效操作。内容涵盖从基础循环、Excel导入到全自动程序集成的实现方法,帮助开发者显著提升批量翻译效率,并深入解析了SAP翻译体系的核心原理与实战技巧。

weixin_42593130的博客 659

【融云分析】WebRTC 首帧显示优化策略全解析

【融云分析】WebRTC 首帧显示优化策略全解析 音视频实时通话首帧的显示是一项重要的用户体验标准。本文主要通过对接收端的分析来了解和优化视频首帧的显示时间。 流程介绍 发送端采集音视频数据,通过编码器生成帧数据。这数据被打包成 RTP 包,通过 ICE 通道发送到接收端。接收端接收 RTP 包,取出 RTP payload,完成组帧的操作。之后音视频解码器解码帧数据,生成视频图像或音频 PCM 数据。 本文参数调整谈论的部分位于上图中的第 4 步。因为是接收端,所以会收到对方的 Offer 请求。先设置

weixin_44764152的博客 1032

微型纵向加密在新能源场站中的实战部署与运维避坑指南

本文详细解析了微型纵向加密在新能源场站中的实战部署与运维技巧。通过国密算法SM4实现数据加密,确保新能源场站通信安全,同时提供非侵入式部署方案和运维避坑指南,帮助提升网络稳定性和运维效率。

weixin_30505225的博客 596

webrtc工程编译调试实战-源码级调试

在前面的章节中: 如何学webrtc的开源代码,今天我们讲解下如何编译和调试源码. 源码的下载方式参考 : https://blog.csdn.net/webrtc_video/article/details/115007232 目前我们在2021.7.21号更新了一版. webrtc工程编译调试实战环境准备效果展示编译全链接静态库vscode调试环境搭建 环境准备 Center OS 8 / VSCode yum install gcc-c++ gdb cmake make zlib webrtc 源

webrtc_video的博客 1287

穿透鼠标实现后台点击,适用于任何窗口!【后台鼠标】【风雪】

也许你就是被这标题吸引来的,呵呵!好久没发帖了,勾引一下大家的胃口,当然有的人已经猜出原理了!既然来了,都要把原理学回家,不然就没意思了!很多游戏现在都不支持后台消息鼠标,要实现真的不是简单的,什么注入dll啊,什么hook俺也学不懂,那就简简单单另辟蹊径了下面来讲讲原理吧(下面的玩玩可以,用于实际不现实,俺也不藏了,看到这么多人回复,良心过意不去,呵呵)首先,将要点击的窗口上面覆盖的所有窗...

weixin_34129145的博客 1万+

薄膜比拟、开口截面扭转承载力以及风电混塔水平缝张开状态下抗扭承载力推导

风电混塔水平缝张开状态下的抗扭承载力推导,从弹性力学说起

George的博客 873

手把手教你10分钟快速搭建webrtc

先上地址 安卓端: GitHub - logan39522361/webrtc_android: A webrtc android demo. pc端与信令服务器: GitHub - logan39522361/webrtc_signaling_server: A webrtc demo,signaling funcion. 【觉得好的记得star+fork,关注量够的会继续更新多人视频】 webrtc是啥 webrtc的前世今生 大白话就是两大点: 1、webrtc:是由谷歌主导且开源的

kidoo1012的博客 1万+

狗都能看懂的Proximal Policy Optimization(PPO)PPO算法详解

李宏毅老师的PPO算法讲解笔记

个人学习笔记 2万+

【webrtc】demo 测试 peerconnection_server 和 peerconnection_client

文章目录前言启动服务器启动客户端1启动客户端2注意事项总结技术参考 前言 参考 vs2019 下载编译 WebRTC 最新源码 编译完成后进入webrtc-checkout\src\out\project 目录,编译好的库文件和exe都在这个目录下面。 peerconnection_server.exe peerconnection_client.exe 启动服务器 双击 peerconnection_server.exe 启动服务器 控制台显示以下内容表示服务器启动成功 (field_tria

记录分享自己的流媒体开发经验 5054

TASK02【datawhale组队学习】视觉感知与手眼协调,计算机视觉在机器人中应用,手眼标定算法实现,深度估计与3D重建

参考教程AI硬件与机器人技术教程:https://github.com/datawhalechina/ai-hardware-robotics视觉感知与手眼协调,计算机视觉在机器人中应用,手眼标定算法实现,深度估计与3D重建单目深度估计 (Monocular Depth Estimation)DPT 的全称是 Dense Prediction Transformer。

m0_52024881的博客 1191

ppt保存时嵌入字体,但找不到字体使用的位置的解决办法

摘要 当PPT提示无法保存嵌入字体时,可通过VBA代码快速定位使用该字体的文本。具体步骤如下: 按ALT+F11打开VBA编辑器,新建模块并粘贴提供的代码; 运行代码后输入目标字体名称(如“方正兰亭黑简体”); 程序将列出所有使用该字体的幻灯片编号及对应文本内容; 修改这些文本的字体即可解决保存问题。该方法高效精准,适用于排查PPT字体嵌入失败的情况。(150字)

智慧空间实验室 1399

使用 SimpleWebRTC 构建 WebRTC 视频聊天应用程序

Building a WebRTC Video Chat Application with SimpleWebRTC 机翻 原文:Building a WebRTC Video Chat Application with SimpleWebRTC - SitePoint 随着 WebRTC 的出现以及浏览器实时处理对等通信的能力不断提高,构建实时应用程序比以往任何时候都容易。在本教程中,我们将了解SimpleWebRTC以及它如何在实现 WebRTC 时让我们的生活更轻松。在整篇文章中,我们将构建一..

爱孜文 2134

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

webrtc回声消除线程android,android WebRTC 示例demo源码(回音消除)

【实例简介】有相关文档和测试demo,回音消除等处理,学习WebRTC、回音消除的同学可以好好参考【实例截图】【核心代码】/** Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.** Use of this source code is governed by a BSD-style license* th...

weixin_33532631的博客 760

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

RTCStartupDemo:一款极其简单的 WebRTC 入门项目

如今越来越多的公司投身到 WebRTC 的开发和应用之中,同时也有越来越多的开发者对 WebRTC 技术感兴趣。相对于单向传输的直播和播放器,支持“实时+双向” 音视频通话的 WebRTC 项目显然要庞大和复杂很多很多。由于 WebRTC 官方没有提供服务器的实现,自己从 0 搭建一套开源的 WebRTC 服务器、跑通并且读懂官方的 AppRTCDemo 代码还是需要很费一些...

weixin_33889665的博客 555

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Google 多源码管理工具 gclient

本文根据gclient帮助整理。google的chromium项目是用gclient来管理源码的checkout, update等。 gclient是google专门为这种多源项目编写的脚本,它可以将多个源码管理系统中的代码放在一起管理。甚至包括将Git和svn代码放在一起。gclient的sync,update等命令很容易学习和使用,不再多说,重点说明下和gclient密切相关的两类文件.gcli

cabbage2008的专栏 1710

WebRTC源码环境搭建

获取depot_tools WebRTC代码都是用depot_tools工具来管理,所以第一步就是要获取这个工具。在/chromium目录里面运行: git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git 这样depot_tools工具就下载到了/webrtc/depot_tools目录里面,然后...

luansxx的专栏 1739

Ubuntu11.10编译chromium for android

官网: http://dev.chromium.org/developers/how-tos/get-the-code http://code.google.com/p/chromium/wiki/AndroidBuildInstructions 按照官网: http://dev.chromium.org/developers/how-tos/get-the-code Bootstrap

jaylinzhou的专栏 3477

基于WebRTC M53 的Android库编译流程

WebRTC编译流程,主要参考webrtc.org的编译帮助说明整理

BlueMug的博客 1005
上一篇: How to install gcc-arm-linux-gnueabihf on Ubuntu 12.04
下一篇: GYP工具Generate Your Projects
Escene2021
博客等级 码龄16年 84粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值