Skip to main content

在 reCamera 上使用 C&C++ 开发

环境配置

reCamera 资源有限,没有配置 C 代码的编译环境。如果您想使用 C/C++ 在 reCamera 上开发应用程序,您需要配置交叉编译环境(在另一台 Linux 上编译 C/C++ 程序,然后将编译后的文件传输到 reCamera 终端执行)。如果您使用的是 Windows,可以安装 Windows Subsystem for Linux (WSL) 来运行 Linux(Ubuntu、OpenSUSE、Kali、Debian 或 Arch Linux)。

步骤 1:在另一台 Linux 上配置构建环境

sudo apt update
sudo apt install build-essential

mkdir recamera && cd recamera

wget https://github.com/Seeed-Studio/reCamera-OS/releases/download/0.2.1/sg2002_reCamera_0.2.1_emmc_sdk.tar.gz
tar -xzvf sg2002_reCamera_0.2.1_emmc_sdk.tar.gz

#Note: This tool is over 10GB in size. Please be aware of your disk space.
git clone https://github.com/sophgo/host-tools.git --depth=1
git clone https://github.com/Seeed-Studio/sscma-example-sg200x.git

export SG200X_SDK_PATH=$PWD/sg2002_recamera_emmc
export PATH=$PWD/host-tools/gcc/riscv64-linux-musl-x86_64/bin:$PATH

步骤 2:在 Linux 上编译示例程序或您想要运行的程序。注意创建的 "build" 目录必须位于项目的根目录中("build" 应与 "CMakeLists.txt" 在同一级别)。 首先检查交叉编译工具

(base) se@stu:~/recameraos$ riscv64-unknown-linux-musl-gcc -v
Using built-in specs.
COLLECT_GCC=riscv64-unknown-linux-musl-gcc
COLLECT_LTO_WRAPPER=/home/se/recameraos/host-tools/gcc/riscv64-linux-musl-x86_64/bin/../libexec/gcc/riscv64-unknown-linux-musl/10.2.0/lto-wrapper
Target: riscv64-unknown-linux-musl
Configured with: /mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/./source/riscv/riscv-gcc/configure --target=riscv64-unknown-linux-musl --with-gmp=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/build-Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/lib-for-gcc-x86_64-linux --with-mpfr=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/build-Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/lib-for-gcc-x86_64-linux --with-mpc=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/build-Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/lib-for-gcc-x86_64-linux --with-libexpat-prefix=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/build-Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/lib-for-gcc-x86_64-linux --with-libmpfr-prefix=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/build-Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/lib-for-gcc-x86_64-linux --with-pkgversion='Xuantie-900 linux-5.10.4 musl gcc Toolchain V2.6.1 B-20220906' CXXFLAGS='-g -O2 -DTHEAD_VERSION_NUMBER=2.6.1 ' --prefix=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1 --with-sysroot=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/sysroot --with-system-zlib --enable-shared --enable-tls --enable-languages=c,c++ --disable-libmudflap --disable-libssp --disable-libquadmath --disable-libsanitizer --disable-nls --disable-bootstrap --src=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/./source/riscv/riscv-gcc --enable-multilib --with-abi=lp64d --with-arch=rv64gcxthead 'CFLAGS_FOR_TARGET=-O2 -mcmodel=medany' 'CXXFLAGS_FOR_TARGET=-O2 -mcmodel=medany'
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 10.2.0 (Xuantie-900 linux-5.10.4 musl gcc Toolchain V2.6.1 B-20220906)
cd $HOME/recamera/sscma-example-sg200x/solutions/helloworld
mkdir build && cd build
cmake ..
make

您可以通过输入 file helloworld 来查看文件属性。

绿色的 "helloworld"(与程序文件夹同名)是编译后的可执行文件。

步骤 3:在这一步中,我们将把编译后的可执行文件传输到 reCamera 的 Linux 终端运行。 首先,我们需要登录到 reCamera 终端。您可以使用如下所示的网页版本。

或者,您可以使用远程访问软件(例如 MobaXterm)连接到 reCamera。

然后,在您的 Linux 上输入以下代码(需要密码):

sudo scp helloworld recamera@{recamera_IP}:/home/recamera/

可执行文件已成功传输。

步骤 4:在 reCamera 终端上执行您的可执行文件。

./helloworld

执行成功。

更多使用 C&C++ 构建的演示

使用 reCamera 捕获流媒体视频

我们为 reCamera 提供了更多 C/C++ 演示。您可以从 GitHub 克隆它们:https://github.com/Seeed-Studio/sscma-example-sg200x。您可能已经在"步骤 1"中克隆了它。

Video_demo 是一个示例应用程序,演示如何使用 reCamera 捕获视频帧,以不同格式保存它们,并通过 RTSP(实时流协议)流式传输视频。 您可以按照"步骤 2"进行编译,按照"步骤 3"将其上传到 reCamera 终端。 注意:在 reCamera 终端上执行程序之前,您需要登录到 reCamera 工作区(http://192.168.42.1/#/workspace)并终止 Flow,因为此程序会消耗大量缓存资源。

您需要以超级用户权限运行程序以防止内存分配失败。

sudo ./video_demo

成功执行的输出如上所示。 输出参数注释:

  1. 视频被初始化并配置为三个具有不同格式和帧率的通道:
    • 通道 0:RGB888 格式,1920x1080 分辨率,10 FPS
    • 通道 1:NV21 格式,1920x1080 分辨率,5 FPS
    • 通道 2:H.264 格式,1920x1080 分辨率,30 FPS
  2. 根据通道:
    • 对于通道 0通道 1:帧分别以 RGB 和 NV21 格式保存。
    • 对于通道 2:帧通过 RTSP 流式传输。

要查看和保存 RTSP 流,您可以下载 VLC 媒体播放器并连接到网络流:rtsp://192.168.42.1:8554/live0。

RTSP 流的延迟大约在 2 秒以内。

应用程序无限期运行直到被中断(Ctrl C)。应用程序设置信号处理程序,在接收到终止信号(SIGINT、SIGTERM)时优雅退出。

此示例作为使用 reCamera 进行视频处理和流式传输的基本介绍。用户可以修改代码并根据其特定需求进行调整,尝试不同的视频格式和流式传输配置。

更多详情,请参考我们的 GitHub 仓库


技术支持与产品讨论

感谢您选择我们的产品。我们在这里为您提供不同的支持,以确保您使用我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...