WebRTC开发者社区为开发者提供最新最全的WebRTC资料
目录
  • 首页
  • WebRTC概念与基础
  • WebRTC项目与应用
  • WebRTC教程资料
  • WebRTC开发资源
  • WebRTC源码分析
  • WebRTC服务端开发
  • WebRTC网络与通信
  • WebRTC编码与解码
  • WebRTC问题与缺陷
  • WebRTC-Androd端开发
  • WebRTC-RFC文档
  • WebRTC音频处理
  • WebRTC-Mediasoup
  • FFMpeg音视频处理
  • H264编解码基础
  • openCV相关

交叉编译ARM平台WebRTC库

2019-12-05 11:23:04
 
 

    前两天收到一个经过处理的webRTC源码,主要包含AEC,NS,AGC,VAD四项主要功能。要将其编译成一个ARM平台下库供Android APP使用。

    怎么说呢,相当坑,源码好像是从GitHub上翻出来了,大牛精简抽离后,x86下可至今编译,但ARM下就需要下点功夫了。改起来相当累啊,耗时一个半工作日搞定,成果如下,请品鉴。

configure时为了好看,连接符可能不太标准。ANDROID_NDK的需自行设定。仅有脚本还不行,源码中还需做些微修改,这里就不再上传了,都是基本的编译问题,很简单。

  1.  
    #!/bin/sh
  2.  
     
  3.  
    // ndk
  4.  
    export ANDROID_NDK="/var/sdk/android-ndk-r14b"
  5.  
     
  6.  
    export SDK_VERSION=19
  7.  
    export ARCH=arm
  8.  
     
  9.  
    if [ "$ARCH" = "arm64" ]
  10.  
    then
  11.  
    export PLATFORM_PREFIX="aarch64-linux-android-"
  12.  
    export HOST="aarch64"
  13.  
    export PLATFORM_VERSION=4.9
  14.  
    else
  15.  
    export PLATFORM_PREFIX="arm-linux-androideabi-"
  16.  
    export HOST="arm"
  17.  
    export PLATFORM_VERSION=4.9
  18.  
    fi
  19.  
     
  20.  
    export PREFIX=$ANDROID_NDK/platforms/android-${SDK_VERSION}/arch-${ARCH}/usr
  21.  
    export EPREFIX=$ANDROID_NDK/toolchains/${PLATFORM_PREFIX}${PLATFORM_VERSION}/prebuilt/linux-x86_64
  22.  
     
  23.  
    export SYSROOT=$ANDROID_NDK/platforms/android-${SDK_VERSION}/arch-${ARCH}
  24.  
    export TOOLCHAIN=$ANDROID_NDK/toolchains/${PLATFORM_PREFIX}${PLATFORM_VERSION}/prebuilt/linux-x86_64
  25.  
    export PATH=$PATH:$TOOLCHAIN/bin/
  26.  
    #export LIBS=$ANDROID_NDK/platforms/android-${SDK_VERSION}/arch-${ARCH}/usr/lib
  27.  
    export STRIP=$TOOLCHAIN/bin/${PLATFORM_PREFIX}strip
  28.  
    export CC=$TOOLCHAIN/bin/${PLATFORM_PREFIX}gcc
  29.  
    export LD=$TOOLCHAIN/bin/${PLATFORM_PREFIX}ld
  30.  
    export AR=$TOOLCHAIN/bin/${PLATFORM_PREFIX}ar
  31.  
    export CXX=$TOOLCHAIN/bin/${PLATFORM_PREFIX}c++
  32.  
    export CROSS_PREFIX=$TOOLCHAIN/bin/${PLATFORM_PREFIX}
  33.  
    export NM=$TOOLCHAIN/bin/${PLATFORM_PREFIX}nm
  34.  
     
  35.  
    echo "export finished, start to configure"
  36.  
    # below cmd should be executed manually
  37.  
    ./configure --prefix=$PREFIX --enable-shared --host=arm-linux --enable-neon \
  38.  
    --with-sysroot=$SYSROOT --prefix=$PREFIX --exec-prefix=$EPREFIX \
  39.  
    LDFLAGS="-L$SYSROOT/usr/lib" CFLAGS="-mcpu=cortex-a8 -mfloat-abi=softfp \
  40.  
    -mfpu=neon --sysroot=$SYSROOT -O3 \
  41.  
    -I/var/sdk/android-ndk-r14b/sources/cxx-stl/stlport/stlport/ \
  42.  
    -I/var/sdk/android-ndk-r14b/sources/cxx-stl/gnu-libstdc++/4.9/ \
  43.  
    -DWEBRTC_POSIX -DWEBRTC_LINUX -DWEBRTC_THREAD_RR -DWEBRTC_CLOCK_TYPE_REALTIME \
  44.  
    -DWEBRTC_ANDROID -DWEBRTC_ARCH_ARM -DNDEBUG" \
  45.  
    CXXFLAGS="-mcpu=cortex-a8 -mfloat-abi=softfp -mfpu=neon -std=c++11 -O3 \
  46.  
    --sysroot=$SYSROOT \
  47.  
    -I/var/sdk/android-ndk-r14b/sources/cxx-stl/stlport/stlport/ \
  48.  
    -I/var/sdk/android-ndk-r14b/sources/cxx-stl/gnu-libstdc++/4.9/ \
  49.  
    -DWEBRTC_POSIX -DWEBRTC_LINUX -DWEBRTC_THREAD_RR \
  50.  
    -DWEBRTC_CLOCK_TYPE_REALTIME -DWEBRTC_ANDROID -DWEBRTC_ARCH_ARMi -DNDEBUG" \
  51.  
    HAVE_ARM=1 HAVE_ARMV7=1 HAVE_NEON=1
     
     
    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
    本文链接:https://blog.csdn.net/xy_kok/article/details/81384935

 

By:rasp | WebRTC教程资料 |

  • 分类目录

    • WebRTC概念与基础 (252)
    • WebRTC项目与应用 (33)
    • WebRTC教程资料 (38)
    • WebRTC开发资源 (13)
    • WebRTC源码分析 (19)
    • WebRTC服务端开发 (27)
    • WebRTC网络与通信 (43)
    • WebRTC编码与解码 (15)
    • WebRTC问题与缺陷 (2)
    • WebRTC-Androd端开发 (2)
    • WebRTC-RFC文档 (1)
    • WebRTC音频处理 (6)
    • WebRTC-Mediasoup (2)
    • FFMpeg音视频处理 (3)
    • H264编解码基础 (10)
    • openCV相关 (1)
  • 最新文章

    • TensorFlow 中的通信机制 ——Rendezvous(二)gRPC 传输
    • 详解|SRT编码器中Rendezvous模式详解
    • 完整SIP/SDP媒体协商概论-ICE初始offer发送详解
    • 完整SIP/SDP媒体协商概论-ICE初始offer发送详解
    • WebRTC - ICE 过程简述
    • Webrtc delay-base-bwe代码分析(2): InterArrival模块
    • 从janus中学习webrtc的ice简单交换过程
    • WebRTC PeerConnection 建立连接过程介绍
    • P2P技术详解(三):P2P技术之STUN、TURN、ICE详解(转载)
    • WebRTC ICE 状态与提名处理
    • licode服务端总结
    • libnice调用流程分析
    • libnice调用流程分析
    • licode 学习总结
    • Licode—基于webrtc的SFU/MCU实现
    • ncnn_example
    • opencv-rtsp运动检测
    • WebRTC 基于GCC的拥塞控制(上)
    • WebRTC 基于GCC的拥塞控制(下)
    • LearningWebRTC: 拥塞控制LearningWebRTC: 拥塞控制
    • WebRTC入门(三)---- 目录结构
    • WebRTC之带宽控制部分学习(1) ------基本demo的介绍
    • webrtc视频流程
    • webrtc nack实现原理
    • webrtc QOS方法一(NACK实现)
    • webrtc源码之nack&&rtx详解
    • webrtc的rtp重传代码分析
    • webrtc QOS方法一(NACK实现)
    • WebRTC基于TransportCC和Trendline Filter的发送端码率估计(Sendside-BWE)
    • WebRTC中丢包重传NACK实现分析
  • 链接

    • WebRTC官网
    • xSky 实验室
    • 树莓派技术圈
    • 声网 Agora
    • WebRTC中文网
    • web性能权威指南
    • WebRTC官网
    • webrtc在线源码
    • webrtc在线源码
    • webrtc
    • webrtc示例
    • LiveVideoStack
    • 雷霄骅(leixiaohua1020)的专栏
  • 开源项目


Powered By xblog Copyright 0xsky.com All Rights Reserved.

Copyright WebRTC.ren All Rights Reserved.