Para obtener el contenido y las erratas más recientes, consulte el libro en línea "Guía de estudio de WebRTC" escrito por el autor .
En los artículos anteriores, el autor introdujo algunos conocimientos previos sobre el establecimiento de conexiones WebRTC, pero no todos. Tuvimos que crear un cliente WebRTC para comprender mejor los detalles de la conexión. Dado que el autor es un desarrollador de Android, este artículo se compilará para Android de acuerdo con el documento oficial Para conocer el método de compilación de iOS, consulte este enlace .
entorno de construcción
La compilación para Android debe usar el entorno de desarrollo de Linux; para Windows, puede usar el entorno WSL . El autor usa macOS, aunque es un sistema similar a Unix como Linux, no se puede compilar directamente a Android. Pero no importa, podemos construir fácilmente un entorno de desarrollo de Linux con la ayuda de vagrant .
En primer lugar, necesitamos descargar e instalar VirtualBox ; luego ejecutar brew install vagrant
la instalación de vagrant y reiniciar el terminal después de que se complete la instalación para que surta efecto. Luego ejecuta el siguiente comando:
# 创建并切换到 ~/vagrant 目录
$ mkdir ~/vagrant && cd "$_"
# 初始化虚拟机(目前系统为 Ubuntu 18.04 LTS 64-bit)
$ vagrant init hashicorp/bionic64
# 启动这个虚拟机
$ vagrant up
# 通过 ssh 连接到这个虚拟机
$ vagrant ssh
Todas las operaciones posteriores se realizarán en la máquina virtual vagabunda. Si desea salir de la máquina virtual, simplemente escriba cerrar sesión.
Obtener el código fuente
Primero, necesitamos clonar depot_tools localmente. Todos sabemos que WebRTC es parte del proyecto Chromium, y depot_tools es una colección de herramientas de mejora del flujo de trabajo de git diseñadas para organizar y administrar la enorme base de código de Chromium. Simplemente ejecute el siguiente comando:
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
Luego agregue el siguiente comando a ~/.bashrc
e ingrese para source ~/.bashrc
recargar bash. Entre ellos, /path/to/
debe reemplazarlo con la ruta de depot_tools:
export PATH=/path/to/depot_tools:$PATH
Luego ejecute el siguiente comando, todo el proceso toma alrededor de 40 minutos, tenga paciencia
# 创建并切换到 ~/webrtc(也可以是自定义路径)
$ mkdir ~/webrtc && cd "$_"
# 拉取并同步 WebRTC 的最新代码
$ fetch --nohooks webrtc_android
$ gclient sync
El código descargado contiene la rama normal de WebRTC y la rama de Android. La rama de Android contiene el SDK y el NDK (unos 8 GB), mientras que todo el código tiene unos 16 GB. Este código se puede usar tanto para el desarrollo de Android como para el desarrollo normal de Linux. Debido a que WebRTC usa Ninja como su sistema de compilación, solo necesita generar diferentes configuraciones de compilación en diferentes rutas (por supuesto, este es otro tema).
Creo que ha realizado todos los procesos anteriores. En este punto, debería estar en la rama maestra de WebRTC, pero generalmente no usamos la maestra directamente, sino que debe cambiar a la última versión de lanzamiento. Toda la información sobre el lanzamiento se puede obtener aquí . En el momento de escribir este artículo, la última versión es m85 (branch-heads/4183)
# 下载的代码位于 ~/webrtc/src
$ cd ~/webrtc/src
# 创建一个新的分支 m85(注意一定要 sync)
$ git checkout -b m85 branch-heads/4183
$ gclient sync
Todas las operaciones posteriores se ~/webrtc/src
realizarán en el directorio (consulte los siguientes pasos para actualizar al código más reciente:
# 切换到 master 分支
$ git checkout master
$ git pull origin master
$ gclient sync
# 切换回你自己的分支(有冲突的话自己解决)
$ git checkout my-branch
$ git merge master
Compilar el código fuente
Ejecute el siguiente comando para instalar y compilar las dependencias necesarias para compilar WebRTC. Tarda unos 60 minutos, tenga paciencia.
# 安装编译 WebRTC 所需的依赖
$ ./build/install-build-deps.sh
$ ./build/install-build-deps-android.sh
# -h 可以查看有哪些编译参数
$ ./tools_webrtc/android/build_aar.py -h
# 直接执行脚本,使用默认参数进行编译
$ ./tools_webrtc/android/build_aar.py
Como se muestra en la figura, el resultado compilado libwebrtc.aar se encuentra ~/webrtc/src
en el directorio por defecto, incluyendo .so de cuatro arquitecturas de armeabi-v7a, arm64-v8a, x86 y x86_64 (puede usar -h para ver cómo compilar solo el paquete de la arquitectura especificada).
Manifestación
Ejecute cp libwebrtc.aar /vagrant
y copie libwebrtc.aar en /vagrant
el directorio, que es el directorio de archivos compartidos entre la máquina virtual vagabunda y el host. Para este artículo, el directorio correspondiente a la máquina host (macOS) es ~/vagrant
el directorio donde configuramos el entorno al principio.
WebRTC ofrece oficialmente una demostración llamada AppRTC, pero el proceso de importarlo a Android Studio es muy engorroso y tiene dependencias complicadas. Aquí, el autor proporciona una versión ordenada de mthli/YaaRTC , los lectores pueden reemplazarla app/libs/libwebrtc.aar
con su propio aar compilado para realizar pruebas.
Los lectores pueden visitar https://appr.tc en el lado del navegador y luego ingresar el mismo número de habitación en YaaRTC para unirse. Siempre que el video bidireccional sea exitoso, significa que compilamos libwebrtc.aar no hay problema
Guía de compilación WebRTC original-Conocimiento
★La tarjeta de presentación al final del artículo puede recibir materiales de aprendizaje de desarrollo de audio y video de forma gratuita, incluidos (FFmpeg, webRTC, rtmp, hls, rtsp, ffplay, srs) y hojas de ruta de aprendizaje de audio y video, etc.
¡vea abajo!