# Linux SDK

::: error 说明 IVS SDK 已停止迭代,新设备若需要接入,请使用EVS API进行接入。 :::

介绍

iFLYOS 提供了 Linux SDK 用于快速接入,封装了 IVS API 的交互实现,同时提供树莓派参考实现 (opens new window)。厂商既可以直接使用 Linux SDK,也可以在它的基础上做二次开发。

# 获取SDK方式

请联系技术支持:刘立明 158-5696-1929

# 需提供文件

  1. c/c++编译链,编译器需支持c++11以上。

  2. 包含各种依赖库和头文件的sysroot(什么是sysroot (opens new window)

  3. 提供一个录音可执行程序,程序名固定为ivs-record(程序启动后,通过标准输出,持续输出单路16bit的pcm)。该程序是为了方便我们集成时,可以直接使用录音功能(各个平台的录音方式不一样)

  4. 开发板或开发样机的网络配置说明文档。

# 需提供硬件

  1. 开发板或开发样机

# 要求

# 硬件要求

  • 单核CPU主频不小于1GHz
  • Flash空间不小于128M
  • 内存空间不小于64M
  • 支持浮点运算

# 软件要求

类型 最低版本要求
libcurl.so 7.50.2
nghttp2 1.0
libssl 1.0.2
libcrypto.so 1.8.4
libopus 1.2.1
libportaudio.so v190600_20161030
libsqlite3.so 3.19.3
libgstreamer-1.0.so 1.8.3

# IVS-SDK 依赖库

IVS-SDK依赖的库(包括头文件)有:

  • curl
  • sqlite3
  • libcrypto
  • opus
  • portaudio(播放部分提示音,后期可自行替换)
  • gstreamer-1.0gstreamer-app-1.0(默认播放器,后期可自行替换)

注意

所有依赖需要包含其间接依赖。比如,curl必须支持http2,一般都包含间接对nghttp2ssl的依赖,则需要包含对应的依赖。

# 压缩包文件目录结构(参考)

注意

以下并不是完整的库文件和头文件列表,只是表明应该以此目录结构组织。最终提供的压缩包中应该包含curl(ssl+nghttp2)、alsa、opus、portaudio、sqlite3、libcrypto的所有库包括间接依赖库和头文件。

  • ivs-record # 用于录音的可执行程序
  • compiler # 顶层编译器目录
    • bin
    • ​arm-linux-gnueabihf-gcc # c编译器
    • arm-linux-gnueabihf-g++ # c++编译器
    • 其他 # 比如ar as ld等
    • lib # 一般里面有c、c++标准库
    • include # 一般包含标准头文件
    • 其他
  • sysroot # 顶层sysroot
    • lib # 系统库
    • usr
      • lib # 第三方库
        • libcurl.so
        • libnghttp2.so
        • libssl.so
        • libz.so
        • libcrypto.so
        • libasound.so
        • libnghttp2.so
        • libopus.so
        • libportaudio.so
        • libsqlite3.so
        • libgstreamer-1.0.so
        • libgstapp-1.0.so
        • 其他库
      • include
        • curl
          • curl.h
          • 其他curl头文件
        • openssl
          • ssl.h
          • 其他ssl头文件
        • alsa
          • asoundlib.h
          • 其他alsa头文件
        • opus
          • opus.h
          • 其他opus头文件
        • portaudio.h #portaudio头文件
        • sqlite3.h #sqlite3头文件
        • gstreamer-1.0 #gstramer的头文件
        • 其他头文件
    • 其他sysroot文件

# 常见问题

问:如果不使用默认的PortAudio库采集音频,使用其他方式采集音频,该如何实现?

答:参照PortAudioMicrophoneWrapper的实现,在采集到音频数据时,通过调用 IVS SDK的ivsCommon::ivs::AudioInputStream::Writer::write函数,向 iFLYOS 传送音频数据。

问:如何使用点触式唤醒方式。

答:参照 SampleApp 中的 UserInputManager的Tap操作,最终调用capabilityAgents::aip::AudioInputProcessor::recognize开始交互。

问:账号登录失败,日志中出现Peer certificate cannot be authenticated with given CA certificates错误信息,该如何解决?

答:Linux IVS SDK 通过 HTTPS 访问 iFLYOS 服务,并需要对应的证书信息,默认证书信息在/etc/ssl/certs/目录下,用户也可以通过在iflyosClientSDKConfig.json中修改libcurlUtils.CURLOPT_CAPATH配置指定证书目录,另外设备也需要有同步最新时间的能力,否则证书验证也会失败。

问:闹钟功能失效?

答:请确认设备是否已使用 iFLYOS 账号登录,在关联APP配置后才能使用。

问:Sample Application调用哪个接口进入配网模式?

答:目前不支持配网,设备请自己完成配网后启动sdk。