实时音视频
  • iOS
  • Android
  • macOS
  • Windows
  • HarmonyOS
  • Linux : C++
  • Web
  • 小程序
  • Flutter
  • Electron
  • Unreal Engine
  • Unity3D
  • uni-app
  • React Native
  • Cocos Creator
  • 产品简介
  • 下载
  • 快速开始
    • 跑通示例源码
    • 集成 SDK
    • 实现视频通话
    • 场景化音视频配置
  • 通信能力
  • 房间能力
  • 音频能力
  • 视频能力
  • 直播能力
  • 其他能力
  • 最佳实践
  • 客户端 API
  • 服务端 API
  • 常见错误码
  • 常见问题
  • 文档中心
  • 实时音视频
  • 快速开始
  • 集成 SDK

集成 SDK

更新时间:2023-07-23 16:45

1 准备环境

在开始集成 ZEGO Express SDK 前,请确保开发环境满足以下要求:

  • 任意具有 GLIBC 2.16 或以上版本的 Linux 发行版系统,支持 x86_64, aarch64, armhf, armel 架构。
  • libasound(ALSA)。
  • libv4l2(v4l utils)。
  • CMake 3.7 或以上版本。
  • SDK 依赖 libasound (ALSA) 和 libv4l2 (v4l utils)。
  • CentOS (RHEL/Fedora) 可以通过执行 yum install alsa-lib-devel libv4l 命令安装。
  • Ubuntu (Debian/Deepin) 可以通过执行 apt install libasound2-dev libv4l-dev 命令安装。
  • 其他平台和系统请自行安装。
  • 若需要交叉编译,请参考 如何交叉编译 Linux alsa-lib 依赖库?如何交叉编译 Linux v4l-utils 依赖库? 两篇文档,同时目标机器需安装好 libasound 和 libv4l2 依赖库。

使用 Qt + qmake 集成 SDK 时,请下载 Qt 5.9 ~ 5.15 之间的任意版本,详细信息请参考 Getting Started with Qt

2 集成 SDK

  1. 请通过 下载 文档下载最新版本的 SDK。

    建议参考 跑通示例源码 的工程来集成 SDK。

  2. 解压 SDK,并把 “release/Library“ 目录下的所有内容拷贝到您的工程中。

    • 使用 CMake 集成 SDK 时,请按如下流程导入 SDK

      在您的工程的 “CMakeLists.txt” 文件中引入 SDK。

      cmake_minimum_required(VERSION 3.7)
      project(MyAwesomeProject)
      
      # Add header search path
      include_directories("./libs/zego/include")
      # Add lib search path
      link_directories("./libs/zego")
      # Link SDK
      link_libraries(ZegoExpressEngine rt)
      
      add_compile_options(
      -std=c++11
      )
      
      aux_source_directory(./src SRC_LIST)
      
      add_executable(MyAwesomeProject ${SRC_LIST})
    • 使用 Qt + qmake 集成 SDK 时,请按如下流程导入 SDK

      在您的工程的 “.pro” 文件中添加以下配置,导入 SDK 库与头文件。

      unix {
          contains(QT_ARCH, arm64) {
              INCLUDEPATH += $$PWD/../libs/ZegoExpress/linux/aarch64/include
              DEPENDPATH  += $$PWD/../libs/ZegoExpress/linux/aarch64/include
              LIBS += -L$$PWD/../libs/ZegoExpress/linux/aarch64 -lZegoExpressEngine
          } else:contains(QT_ARCH, arm) {
              INCLUDEPATH += $$PWD/../libs/ZegoExpress/linux/armhf/include
              DEPENDPATH  += $$PWD/../libs/ZegoExpress/linux/armhf/include
              LIBS += -L$$PWD/../libs/ZegoExpress/linux/armhf -lZegoExpressEngine
          } else { # Assume other archs are x86_64
              INCLUDEPATH += $$PWD/../libs/ZegoExpress/linux/x86_64/include
              DEPENDPATH  += $$PWD/../libs/ZegoExpress/linux/x86_64/include
              LIBS += -L$$PWD/../libs/ZegoExpress/linux/x86_64 -lZegoExpressEngine
          }
      }
  3. (可选)Linux 端 SDK 没有屏蔽 SIGPIPE 信号,开发者在实际开发过程中需要根据实际情况,选择是否屏蔽 SIGPIPE 信号。

    大多数情况下,您需要屏蔽此信号,否则,客户端进程在收到此信号后会默认退出。您也可以直接忽略该信号:signal(SIGPIPE,SIG_IGN);

    static void ExceptionSigHandler(int signum)
     {
         char exitSignalStr[1024] = {0};
         sprintf(exitSignalStr,"exception signal : %d",signum);
         log("------------------------------");
         log(exitSignalStr);
         log("------------------------------");
     }
     int main(int argc, const char * argv[]) {    
         signal(SIGPIPE, ExceptionSigHandler);
         // your code
    
         return 0;
     }
本篇目录