在 reCamera 上使用 C&C++ 开发
环境配置
Recamera 资源有限,没有配置 C 代码的编译环境。如果您想在 recamera 上使用 C/C++ 开发应用程序,需要配置交叉编译环境(在另一台 Linux 上编译 C/C++ 程序,然后将编译后的文件传输到 recamera 终端执行)。如果您使用的是 Windows,可以安装 Windows 子系统 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.1.5/reCameraOS_sdk_v0.1.5.tar.gz
tar -xzvf reCameraOS_sdk_v0.1.5.tar.gz
git clone https://github.com/sophgo/host-tools.git
git clone https://github.com/Seeed-Studio/sscma-example-sg200x.git
export SG200X_SDK_PATH=$HOME/recamera/sg2002_recamera_emmc/
export PATH=$HOME/recamera/host-tools/gcc/riscv64-linux-musl-x86_64/bin:$PATH
步骤2:编译实例程序或您想要在Linux上运行的程序。注意创建的"build"目录必须位于项目的根目录中("build"应该与"CMakeLists.txt"处于同一级别)。
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

成功执行的输出如上所示。 输出参数说明:
- 视频已初始化并配置为三个不同格式和帧率的通道:
- 通道 0:RGB888 格式,1920x1080 分辨率,10 FPS
- 通道 1:NV21 格式,1920x1080 分辨率,5 FPS
- 通道 2:H.264 格式,1920x1080 分辨率,30 FPS
- 根据通道不同:
- 对于通道 0 和通道 1:帧分别以 RGB 和 NV21 格式保存。
- 对于通道 2:帧通过 RTSP 流式传输。
要查看和保存 RTSP 流,您可以下载 VLC 媒体播放器并连接到网络流:rtsp://192.168.42.1:8554/live0。

RTSP 流的延迟大约在 2 秒以内。
应用程序会无限期运行直到被中断(Ctrl C)。应用程序设置了信号处理程序,在接收到终止信号(SIGINT、SIGTERM)时优雅退出。
此示例作为使用 recamera 进行视频处理和流式传输的基础介绍。用户可以修改代码并根据其特定需求进行调整,尝试不同的视频格式和流式传输配置。
更多详细信息,请参考我们的 GitHub 仓库。
技术支持与产品讨论
感谢您选择我们的产品。我们在这里为您提供不同的支持,以确保您使用我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。