# 图传功能介绍及说明

## 一、发送端

1. 首先打开Sigmafree软件，选择单机仿真，进入主界面后，点击设置按钮，如下图所示：

<figure><img src="/files/PESGSn38xLOmv5ABrlxt" alt=""><figcaption></figcaption></figure>

2. 进入设置界面后，找到仿真设置->输入指令

<figure><img src="/files/jcnmROc4XMmVd2coAszU" alt=""><figcaption><p>指令输入按钮</p></figcaption></figure>

3. 输入win+r，输入指令cmd打开终端管理员，输入wsl->ifconfig查询本机wsl的ip

<figure><img src="/files/qZr86v3x8aYBt86duUnz" alt=""><figcaption></figcaption></figure>

4. 点击输入指令后，将下面的发送端指令复制进去

***

{% tabs %}
{% tab title="Shell" %}

```sh
appsrc name=src caps=video/x-raw,width=(int)640,height=(int)480,format=(string)BGRA,framerate=(fraction)60/1 
! videoconvert 
! nvh264enc preset=4 max-bitrate=5000 zerolatency=true ! video/x-h264,stream-format=byte-stream 
! h264parse 
! rtph264pay config-interval=-1 pt=96 
! udpsink host=**172.23.32.138** port=14552 buffer-size=40960000 sync=true
```

{% endtab %}
{% endtabs %}

\*\*注意：\*\*上述指令中的udpsink host需要更换成自己的子系统的ip

***

<figure><img src="/files/ojywf9u7uVBTk27My4pi" alt=""><figcaption><p>输入指令</p></figcaption></figure>

当然，熟悉Gstreamer的同学可以自己根据自己的需求修改命令。

5. 在修改完成后，点击确定->保存并返回，回到主界面，点击开始仿真，进入仿真界面后，点击右下角的相机标志，成功后，相机标志上的×会变成 ✔

<figure><img src="/files/NCN6aVTBpZsm86yMGnt7" alt=""><figcaption><p>启动按钮位置</p></figcaption></figure>

## 二、接收端

为了方面用户的使用，Sigma将代码开发移动到了windows端，让用户可以在一台电脑上实现图传等功能。（当然，在Linux远端该代码同样适用）。这里，我们直接在子系统中提供了可以使用的参考例程。

1. 以本地为例，首先，打开VScode，点击左下角的远程连接按钮，连接 WSL子系统，（需要给VSCode先安装需要的WSL插件）

<figure><img src="/files/hoQ3E6MjAlmVYAN34kmz" alt=""><figcaption><p>链接WSL子系统</p></figcaption></figure>

2. 连接成功后，点击Open Folder->code->sigma-sdk，打开后依次点击下图中的1->2->3

<figure><img src="/files/CtLdDAnC8G9jUhpMbwH0" alt=""><figcaption><p>连接成功后，点击Open Folder->code->sigma-sdk</p></figcaption></figure>

此时，你就能接收到来自Sigma软件的图像。

<figure><img src="/files/tuLSQABPtIYX3vsEiBAi" alt=""><figcaption><p>接收图像效果图</p></figcaption></figure>

## 三、指令解释

Sigma的图传功能是基于GStreamer框架实现的视频流传输，使用方便，功能强大。Sigma的图传最主要的组成部分就是其收发指令，下面对其收发指令进行简单解释。

### 1 发送端指令

**appsrc:** 这个元素用于从应用程序中生成视频数据。在这里，它被命名为 src，并且设置了视频流的属性，包括宽度为 640 像素、高度为 480 像素、格式为 BGRA（Blue-Green-Red-Alpha）以及帧率为 60 帧每秒。

**videoconvert:** 这个元素用于在不同的视频格式之间进行转换。

**nvh264enc:** 这个元素是一个 NVIDIA GPU 实现的 H.264 编码器。它将视频数据编码为 H.264 格式，以便更有效地传输和存储。preset: 这是编码器的预设参数，控制编码器的速度和质量之间的权衡。在这里，预设级别设置为 4。

**max-bitrate:** 这个参数设置了编码器的最大比特率，即视频流的最大数据传输速率，这里设置为 5000 比特每秒。

**zerolatency:** 这个参数设置为 true，表示编码器优化了延迟，以便更快地传输视频数据。

**video/x-h264,stream-format=byte-stream:** 这个元素指定了输出的视频格式为 H.264，并且设置了输出数据的格式为字节流。h264parse: 这个元素用于解析 H.264 数据流。rtph264pay: 这个元素将 H.264 数据流封装成 RTP 包，以便通过网络传输。

**config-interval:** 这个参数设置了发送 SPS（Sequence Parameter Set）和 PPS（Picture Parameter Set）的间隔。在这里，设置为 -1 表示每个 IDR 帧都发送一次 SPS 和 PPS。

**pt:** 这是 RTP 包的有效负载类型，这里设置为 96。

**udpsink:** 这个元素用于通过 UDP 协议发送数据到指定的 IP 地址和端口。在这里，指定的 IP 地址是 172.23.32.138，端口号是 14552，并设置了接收缓冲区的大小为 40960000 字节。

**sync=true:** 这个参数设置为 true，表示要与时钟同步，即保持视频数据的同步播放。

这个配置的作用是将从 appsrc 产生的视频数据经过编码、封装，然后通过 UDP 协议发送到指定的 IP 地址和端口。

### 1 接收端指令

**udpsrc:** 这个元素用于从指定端口接收 UDP 数据包。

**port:** 这个参数指定了 udpsrc 元素监听的端口号为 14552。

**buffer-size:** 这个参数设置接收缓冲区的大小为 409600 字节。

**application/x-rtp,encoding-name=H264,payload=96:** 这个元素指定了接收的数据格式为 RTP 包，并且指定了编码类型为 H.264，有效负载类型为 96。

**rtph264depay:** 这个元素用于解包 RTP 包中的 H.264 数据。

**h264parse:** 这个元素用于解析 H.264 数据流。avdec\_h264: 这个元素是一个 H.264 视频解码器，用于将 H.264 编码的视频流解码为原始的视频帧数据。

**videoconvert:** 这个元素用于在不同的视频格式之间进行转换。

**capsfilter caps=\\"video/x-raw,format=BGR\\":** 这个元素用于设置输出视频的格式，这里将视频格式设置为 BGR（Blue-Green-Red）。

**videoconvert:** 这个元素再次进行视频格式转换，以确保输出的视频格式与后续处理器兼容。

**appsink:** 这个元素用于从 GStreamer 流中获取数据，并传递给应用程序进行处理。

**sync=false:** 这个参数设置为 false，表示不需要与时钟同步，即不需要保持视频数据的同步播放。

**\*\*注意：\*\*发送端和接收端指令的相关参数需保持严格对应，不然将无法通过管道接收到图像。**

&#x20;


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bit-sigma.gitbook.io/tutorials-for-sigma-free/sigma-free-fang-zhen-xi-tong-jian-jie/jin-jie-gong-neng-shi-yong/tu-chuan-gong-neng-jie-shao-ji-shuo-ming.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
