# 跑通示例项目 (/zh-CN/realtime-media/rtc-server-sdk/get-started/run-example)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

<_PlatformTabsGroup>
<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="cpp" platform="cpp" />
## 准备开发环境 [#准备开发环境]

本文介绍如何集成 C++ SDK 并跑通声网提供的示例项目。确保你的服务端开发机满足以下要求。

### 硬件环境 [#硬件环境]

**操作系统**

- Ubuntu（18.04 版本及以上）
- CentOS（7.0 版本及以上）

**CPU 架构**

- arm64
- x86-64

如需支持其他架构，请联系 sales@shengwang.cn。

**性能要求**

- CPU：8 核，1.8 GHz 主频 
- 内存：2 GB 或更高。推荐 4 GB 或更高。

**网络要求**

- 服务器接入公网，有公网 IP
- 服务器允许访问 .agora.io 以及 .agoralab.co

### 软件环境 [#软件环境]

- glibc 2.18 或更高版本
- gcc 4.8 或更高版本

以 Ubuntu 20.04.3 LTS 为例，在你的服务端安装以下依赖：

```shell
# 安装 aptitude
sudo apt install aptitude
# 安装 build-essential libx11-dev libxcomposite-dev libxext-dev libxfixes-dev libxdamage-dev cmake
sudo aptitude install libx11-dev libxcomposite-dev libxext-dev libxfixes-dev libxdamage-dev cmake
```

如果你的操作系统为 CentOS，以 CentOS 为例，在你的服务端安装以下依赖：

```shell
sudo yum groupinstall "Development Tools"
sudo yum install wget
sudo yum groupinstall X11
```

## 开通服务 [#开通服务]

参考[开通服务](/zh-CN/realtime-media/rtc-server-sdk/build/enable-service)获取声网 App ID 和 RTC 临时 Token。

## 获取 SDK [#获取-sdk]

声网在 RTC 服务端 SDK 下载包中提供了可运行的示例项目。

联系 sales@shengwang.cn 获取最新 SDK 下载地址。下载 SDK 并解压缩。

## 编译示例项目 [#编译示例项目]

以 x86_64 平台的 SDK 为例，运行以下命令构建示例项目：

```shell
# 切换到示例项目目录
cd agora_rtc_sdk/example
# 构建示例项目
./build.sh
# 同步项目所需的音视频数据
cd out
../sync-data.sh
# 将 SDK 中的库导出到 LD_LIBRARY_PATH
export LD_LIBRARY_PATH=../../agora_sdk:$LD_LIBRARY_PATH
```

## 跑通服务端发流示例项目 [#跑通服务端发流示例项目]

本文以 **sample_send_h264_pcm** 示例项目为例，演示服务端发流效果。

### 运行步骤 [#运行步骤]

运行 **sample_send_h264_pcm** 示例项目。将 `--token` 的参数 `YOUR_RTC_TOKEN` 替换为你的 RTC 临时 Token。将 `--channelId` 的参数替换为你的声网 RTC 频道名，本文设为 `demo_channel`。

```shell
# 运行 sample_send_h264_pcm 示例发送 h264 编码格式的视频和 pcm 格式的音频
./sample_send_h264_pcm --token YOUR_RTC_TOKEN --channelId demo_channel --videoFile test_data/send_video.h264 --audioFile test_data/send_audio_16k_1ch.pcm
```

### 在客户端验证服务端发流 [#在客户端验证服务端发流]

你可以按如下步骤进行验证：

1. 克隆 [API-Examples-Web](https://github.com/Shengwang-Lab/API-Examples-Web) 到本地，在浏览器中打开 `Demo/index.html` 文件。
2. 点击 **basicvideocalling** 下的 **tryitnow**，进入视频通话 demo 界面。
3. 输入你的  App ID、RTC 临时 Token、频道名 `demo_channel` 及任意用户名，点击 **join**。成功加入频道后，你就可以看到和听到实时音视频流了。

![服务端发流验证](https://web-cdn.agora.io/docs-files/1667965332407)

## 跑通服务端收流示例项目 [#跑通服务端收流示例项目]

本文以 **sample_receive_h264_pcm** 示例项目为例，演示服务端收流效果。

### 运行步骤 [#运行步骤-1]

运行 **sample_receive_h264_pcm** 示例项目。将 `--token` 的参数 `YOUR_RTC_TOKEN` 替换为你的 RTC 临时 Token。将 `--channelId` 的参数替换为你的声网 RTC 频道名，例如 `demo_channel`。

```shell
# 运行 sample_receive_h264_pcm 示例接收 h264 编码格式的视频和 pcm 格式的音频
./sample_receive_h264_pcm --token YOUR_RTC_TOKEN --channelId demo_channel
```

运行成功之后，控制台会打印以下信息：

```text
[ APP_LOG_INFO ] Subscribe streams from all remote users
[ APP_LOG_INFO ] Start receiving audio & video data ...
[ APP_LOG_INFO ] Created file received_audio.pcm to save received PCM samples
[ APP_LOG_INFO ] onUserAudioTrackStateChanged: userId 4088243221, state 1, reason 0
[ APP_LOG_INFO ] onUserAudioTrackStateChanged: userId 4088243221, state 2, reason 6
[ APP_LOG_INFO ] onUserInfoUpdated: userId 4088243221, msg 0, val 0
[ APP_LOG_INFO ] onUserInfoUpdated: userId 4088243221, msg 4, val 1
[ APP_LOG_INFO ] onUserInfoUpdated: userId 4088243221, msg 8, val 1
[ APP_LOG_INFO ] onUserInfoUpdated: userId 4088243221, msg 1, val 1
```

### 验证服务端收流 [#验证服务端收流]

你可以按如下步骤进行验证：

1. 克隆 [API-Examples-Web](https://github.com/Shengwang-Lab/API-Examples-Web) 到本地，在浏览器中打开 `Demo/index.html` 文件。
2. 点击 **basicvideocalling** 下的 **tryitnow**，进入视频通话 demo 界面。
3. 输入你的  App ID、RTC 临时 Token、频道名 `demo_channel` 及任意用户名，点击 **join**，开始发送音视频流。

![服务端收流验证](https://web-cdn.agora.io/docs-files/1667965332407)

4. 服务端会收到客户端发送的音视频流：

    ```text
    [ APP_LOG_INFO ] onUserInfoUpdated: userId 436868190, msg 0, val 1
    [ APP_LOG_INFO ] onUserInfoUpdated: userId 436868190, msg 4, val 1
    [ APP_LOG_INFO ] onUserInfoUpdated: userId 436868190, msg 8, val 1
    [ APP_LOG_INFO ] onUserInfoUpdated: userId 436868190, msg 1, val 1
    [ APP_LOG_INFO ] onUserInfoUpdated: userId 436868190, msg 0, val 0
    [ APP_LOG_INFO ] onUserInfoUpdated: userId 436868190, msg 1, val 0
    [ APP_LOG_INFO ] onUserVideoTrackSubscribed: userId 436868190, codecType 1, encodedFrameOnly 1
    [ APP_LOG_INFO ] onUserAudioTrackStateChanged: userId 436868190, state 1, reason 0
    [ APP_LOG_INFO ] onUserAudioTrackStateChanged: userId 436868190, state 2, reason 6
    [ APP_LOG_INFO ] Created file received_video.h264 to save received H264 frames
    [ APP_LOG_INFO ] onUserAudioTrackStateChanged: userId 436868190, state 0, reason 7
    ```

 收到的音视频流会分别存储为 `received_video.h264` 和 `received_audio.pcm` 文件。
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="cpp" platform="java" />
本文介绍如何创建一个简单的 Maven 项目，集成 RTC 服务端 Java SDK，并运行应用。

## 准备开发环境 [#准备开发环境-1]

确保你的服务器满足以下需求。

### 硬件环境 [#硬件环境-1]

**操作系统**

- Ubuntu（18.04 版本及以上）
- CentOS（7.0 版本及以上）

**CPU 架构**

- x86-64

如果你需要在其他架构上集成 SDK，请联系 sales@shengwang.cn。

**性能**

- CPU：8 核 1.8 GHz 或更高配置
- 内存 2 GB。推荐 4 GB 或更高内存。

**网络**

- 服务器接入公网，有公网 IP
- 服务器允许访问 .agora.io 以及 .agoralab.co

### 软件环境 [#软件环境-1]

- [Apache Maven](https://maven.apache.org/download.cgi) 或其他构建工具。本文使用 Apache Maven。
- JDK 8

## 开通服务 [#开通服务-1]

参考[开通服务](/zh-CN/realtime-media/rtc-server-sdk/build/enable-service)获取声网 App ID 和 RTC 临时 Token。

## 创建一个 Maven 项目 [#创建一个-maven-项目]

参考 [Maven in Five Minutes](https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html) 创建 Maven 项目

```shell
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
```

## 集成 SDK [#集成-sdk]

1. 导航至 `my-app` 目录。

    ```shell
    cd my-app
    ```

2. 打开 `pom.xml` 文件并将文件内容替换为以下文本：

   :::info[信息]
   `dependencies` 中的 `version` 字段为 SDK 版本号，需随你集成的 SDK 版本更换。最新的 SDK 版本号可参考[发版说明](/zh-CN/realtime-media/rtc-server-sdk/reference/release-notes)。
   :::

    ```xml
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>agora-rtc-linux-java</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
        <groupId>io.agora.rtc</groupId>
        <artifactId>linux-java-sdk</artifactId>
        <version>4.4.32</version>
        </dependency>
    </dependencies>


    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <build>
        <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.3</version>
            <configuration>
            <createDependencyReducedPom>true</createDependencyReducedPom>
            </configuration>
            <executions>
            <execution>
                <phase>package</phase>
                <goals>
                <goal>shade</goal>
                </goals>
                <configuration>
                <transformers>
                    <transformer
                    implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                    <mainClass>App</mainClass>
                    </transformer>
                </transformers>
                </configuration>
            </execution>
            </executions>
        </plugin>
        </plugins>
    </build>
    </project>
    ```

:::info[信息]
如果你使用其他的集成方式，可以参考 [mvnrepository](https://mvnrepository.com/artifact/io.agora.rtc/linux-sdk)。
:::

## 实现一个 HelloWorld 应用 [#实现一个-helloworld-应用]

1. 导航至 `my-app/src` 并删除 `test` 目录。

    ```shell
    rm -r test
    ```

2. 导航至 `my-app/src/main/java/com/mycompany/app/App.java` 并将内容替换为以下文本。 将 `Your Token` 和  `Your App ID` 替换为你的 RTC 临时 Token 和声网 App ID。

   :::warning[注意]
   连接 RTC 频道的用户 ID 必须和生成 RTC 临时 Token 的用户 ID 一致。在下面的示例代码中，频道名设为 "test_channel"。如果你使用其他频道名生成 Token，则需要将 "test_channel" 替换为你自己使用的频道名。
   :::

    ```java
    import io.agora.rtc.SDK;
    import io.agora.rtc.AgoraRtcConn;
    import io.agora.rtc.AgoraService;
    import io.agora.rtc.AgoraServiceConfig;
    import io.agora.rtc.DefaultRtcConnObserver;
    import io.agora.rtc.RtcConnInfo;

    public class App {

    public static class ConnObserver extends DefaultRtcConnObserver {
        @Override
        public void onConnected(AgoraRtcConn conn, RtcConnInfo rtcConnInfo, int reason) {
        System.out.println("join success");
        }
    }

    public static void main(String[] args) throws Exception {
        String token = "Your Token";
        AgoraService service = new AgoraService();
        AgoraServiceConfig config = new AgoraServiceConfig();
        config.setEnableAudioProcessor(0);
        config.setEnableAudioDevice(0);
        config.setEnableVideo(0);
        config.setContext(0);
        config.setAppId("Your App ID");
        service.initialize(config);

        AgoraRtcConn conn = service.agoraRtcConnCreate(null);

        conn.registerObserver(new ConnObserver());

        conn.connect(token, "test_channel", "1");

        Thread.sleep(2000);
        conn.disconnect();
        conn.destroy();
        service.destroy();
    }
    }
    ```

3. 导航至 `my-app` 目录并创建一个 `lib` 目录，从 Maven 获取 `linux-java-sdk` jar 文件并提取文件。

   :::info[信息]
   `dependencies` 中的 `version` 字段为 SDK 版本号，需随你集成的 SDK 版本更换。最新的 SDK 版本号可参考[发版说明](/zh-CN/realtime-media/rtc-server-sdk/reference/release-notes)。
   :::

    ```shell
    mkdir lib
    cd lib
    wget https://repo1.maven.org/maven2/io/agora/rtc/linux-java-sdk/4.4.32/linux-java-sdk-4.4.32.jar
    jar xvf linux-java-sdk-4.4.32.jar
    ```

4. 导航至 `my-app` 目录。将 `lib/native/linux/x86_64` 目录加入 `LD_LIBRARY_PATH` 。

    ```shell
    export LD_LIBRARY_PATH=lib/native/linux/x86_64/:$LD_LIBRARY_PATH
    ```

5. 构建项目：

    ```shell
    mvn package
    ```

6. 运行应用：

    ```shell
    java -cp target/agora-rtc-linux-java-1.0-SNAPSHOT.jar com.mycompany.app.App
    ```

如果 App 运行成功，控制台会打印以下信息：

```shell
$ java -cp target/agora-rtc-linux-java-1.0-SNAPSHOT.jar com.mycompany.app.App
join success
```
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="cpp" platform="python" />
声网提供开源示例项目演示 Python SDK 的 API 使用示例，以帮助开发者更好地理解和运用 SDK 的功能。本文以跑通发送和接收 PCM 音频数据的示例项目为例，帮助你快速体验音频通话效果。

## 前提条件 [#前提条件]

在体验功能以前，请按照以下要求准备开发环境：

- 已下载 PyCharm 或 Visual Studio Code
- Python 3.10 或以上版本
- 服务器接入公网，有公网 IP。服务器允许访问 `.agora.io` 以及 `.agoralab.co` 域名。
- 操作系统与硬件环境需满足下列要求：

    | 开发平台 | 操作系统版本 | CPU 架构 | 设备性能 |
    | --- | --- | --- | --- |
    | Linux | [run-example-python-markdown-0-1-1 details](#table-slot-run-example-python-markdown-0-1-1) | x86-64 | [run-example-python-markdown-0-1-3 details](#table-slot-run-example-python-markdown-0-1-3) |

    <a id="table-slot-run-example-python-markdown-0-1-1"></a>

    **run-example-python-markdown-0-1-1 details**

    - Ubuntu 18.04 LTS 或以上
    - CentOS 7.0 或以上

    <a id="table-slot-run-example-python-markdown-0-1-3"></a>

    **run-example-python-markdown-0-1-3 details**

    - CPU：8 核，1.8 GHz 主频
    - 内存：2 GB 或以上，推荐 4 GB 或以上

- 一个有效的声网账号以及声网项目。请参考[开通服务](/zh-CN/realtime-media/rtc-server-sdk/build/enable-service)从声网控制台获得 App ID。

## 操作步骤 [#操作步骤]

### 获取示例项目 [#获取示例项目]

声网在 GitHub 中提供了可运行的示例项目。在终端中运行如下命令克隆到本地：

```bash
git clone git@github.com:AgoraIO-Extensions/Agora-Python-Server-SDK.git
```

成功克隆后，你可以在 `Agora-Python-Server-SDK` 的如下路径中找到示例项目。本文以 `example_audio_pcm_send` 和 `example_audio_pcm_receive` 示例项目为例，介绍如何跑通示例项目。

```bash
.
└── agora_rtc
    └── examples
        ├── common  # 通用组件
        │   ├── __init__.py
        │   ├── audio_consumer.py
        │   ├── example_base.py
        │   ├── pacer.py
        │   ├── parse_args.py
        │   ├── path_utils.py
        │   ├── push_audio_encoded_file.py
        │   ├── push_audio_pcm_file.py
        │   ├── push_video_encoded_file.py
        │   └── push_video_yuv_file.py
        ├── example_agora_parameter.py  # 设置私有参数
        ├── example_audio_encoded_receive.py  # 接收已编码音频数据
        ├── example_audio_encoded_send.py  # 发送已编码音频数据
        ├── example_audio_pcm_loopback.py  # 回环测试
        ├── example_audio_pcm_receive.py  # 接收原始音频数据
        ├── example_audio_pcm_receive_and_send.py  # 收发原始音频数据
        ├── example_audio_pcm_send.py  # 发送原始音频数据
        ├── example_pcm_yuv_receive.py  # 接收原始视频和原始音频数据
        ├── example_pcm_yuv_send.py  # 发送原始视频和原始音频数据
        ├── example_pcm_yuv_send_receive.py  # 收发原始视频和原始音频数据
        ├── example_stream_message_receive.py  # 接收流消息
        ├── example_stream_message_send.py  # 发送流消息
        ├── example_video_encoded_receive.py  # 接收已编码视频数据
        ├── example_video_encoded_send.py  # 发送已编码视频数据
        ├── example_video_yuv_receive.py  # 接收 YUV 视频数据
        ├── example_video_yuv_send.py  # 发送 YUV 视频数据
        └── observer  # 设置事件监听
            ├── audio_frame_observer.py
            ├── connection_observer.py
            ├── local_user_observer.py
            ├── video_encoded_frame_observer.py
            └── video_frame_observer.py
```

### 运行服务端发流示例项目 [#运行服务端发流示例项目]

本节以 `example_audio_pcm_send` 示例项目为例，演示服务端发流效果。操作步骤如下：

 1. 在终端中，运行如下命令跑通 `example_audio_pcm_send` 示例项目，发送 PCM 音频数据。你需要对示例代码进行如下修改：
    - 在 `appId` 参数中填写你声网项目的 App ID。
    - 在 `channelId` 参数中填写你的频道名，本节以 `test_example` 为例。
    - 在 `userId` 参数中填写你的用户 ID，本节以 `6` 为例。
    - 在 `audioFile` 参数中填写音频数据文件的存放路径，本节以 `./test_data/demo.pcm` 为例。为方便测试，声网提供了[测试数据](https://download.agora.io/demo/test/test_data_202408221437.zip)，你可以下载并解压至 `Agora-Python-Server-SDK` 路径下使用。
    - 在 `sampleRate` 参数中填写采样率，本节以 `16000` 为例。
    - 在 `numOfChannels` 参数中填写声道数，本节以 `1` 为例。

    ```bash
    python agora_rtc/examples/example_audio_pcm_send.py --appId=0a****************************99 --channelId=test_example --userId=6 --audioFile=./test_data/demo.pcm --sampleRate=16000 --numOfChannels=1
    ```

2. 成功连接频道后，终端会输出如下内容：

    ```
    INFO:common.parse_args:Parsed arguments:Namespace(appId='0a****************************99', token=None, channelId='test_example', connectionNumber='1', userId='6', audioFile='./test_data/demo.pcm', lowdelay=False, videoFile=None, sampleRate=16000, numOfChannels=1, fps=None, width=None, height=None, bitrate=None, message=None, hours='0', mode=1, value=0)
    INFO:common.example_base:------channel_id: test_example, uid: 6
    INFO:common.example_base:connect_and_release: 0, auto_subscribe_audio: 0
    INFO:observer.connection_observer:on_connecting, agora_rtc_conn=<agora.rtc.rtc_connection.RTCConnection object at 0x103c173d0>, local_user_id=0, state=2, internal_uid=0 ,reason=0
    INFO:observer.connection_observer:on_connected, agora_rtc_conn=<agora.rtc.rtc_connection.RTCConnection object at 0x103c173d0>, local_user_id=3997884694, state=3, internal_uid=0 ,reason=1
    ```

3. 成功发送 PCM 音频数据后，终端会输出如下内容：

    ```bash
    INFO:common.push_audio_pcm_file:send pcm: count,ret=1, 0, 3200, 0.1
    INFO:common.push_audio_pcm_file:send pcm: count,ret=2, 0, 3200, 0.1
    ...
    ```

你也可以使用声网实时互动 [Web Demo](https://webdemo-global.agora.io/index.html) 在浏览器中模拟一个客户端接收 PCM 音频数据：

   1. 打开 Web Demo，完成**初始化设置**，App ID 需和你在步骤 1 中填入的 App ID 一致。
   2. 进入**基础语音通话**页面，在 **Channel** 填入与步骤 2 相同的频道名，依次点击 **Create Client**、**Join Channel**。
   3. 成功加入频道后，当频道中有发流用户时，Web Demo 会在 **Step4 Subscribe & Play** 下方的输入框中自动填充发流用户的用户 ID，点击 **Subscribe & Play** 按钮订阅发流用户。

      :::warning[注意]
      体验 Demo 时，你需要先在 Web 端完成加入频道，然后再在服务端运行示例项目连接频道并发流。否则，**Step4 Subscribe & Play** 下方的输入框不会自动填充用户 ID，Web 端无法成功订阅服务端。
      :::

   4. 成功订阅后，你可以听到音频，并且在 Web Demo 的 **Remote Stream:** 下方会显示成功订阅的用户 ID。

### 运行服务端收流示例项目 [#运行服务端收流示例项目]

本节以 `example_audio_pcm_receive` 示例项目为例，演示服务端收流效果。操作步骤如下：

1. 在终端中，运行如下命令跑通 `example_audio_pcm_receive` 示例项目，接收 PCM 音频数据。你需要对示例代码进行如下修改：
    - 在 `appId` 参数中填写你声网项目的 App ID。
    - 在 `channelId` 参数中填写你的频道名，本节以 `test_example` 为例。
    - 在 `userId` 参数中填写你的用户 ID，本节以 `8` 为例。
    - 在 `sampleRate` 参数中填写采样率，本节以 `16000` 为例。
    - 在 `numOfChannels` 参数中填写声道数，本节以 `1` 为例。

    ```bash
    python agora_rtc/examples/example_audio_pcm_receive.py --appId=0a****************************99 --channelId=test_example --userId=8 --sampleRate=16000 --numOfChannels=1
    ```

2. 成功连接频道后，终端会输出如下内容：

    ```bash
    INFO:common.parse_args:Parsed arguments:Namespace(appId='0a****************************99', audioFile=None, bitrate=None, channelId='test_example', connectionNumber='1', fps=None, height=None, hours='0', lowdelay=False, message=None, numOfChannels=1, sampleRate=16000, token=None, userId='8', videoFile=None, width=None)
    INFO:common.example_base:------channel_id: test_example, uid: 8
    INFO:observer.connection_observer:on_connecting, agora_rtc_conn=<agora.rtc.rtc_connection.RTCConnection object at 0x7f419d81f4a8>, local_user_id=6, state=2, internal_uid=0 ,reason=0
    # 成功连接频道
    INFO:observer.connection_observer:on_connected, agora_rtc_conn=<agora.rtc.rtc_connection.RTCConnection object at 0x7f419d81f4a8>, local_user_id=6, state=3, internal_uid=0 ,reason=1
    ```

3. 使用声网实时互动 [Web Demo](https://webdemo-global.agora.io/index.html) 在浏览器中模拟一个发送端发送 PCM 音频数据。打开 Web Demo，完成**初始化设置**，App ID 需和你在步骤 1 中填入的 App ID 一致。
4. 在 Web Demo 中进入**基础语音通话**页面，在 **Channel** 填入与步骤 2 相同的频道名，依次点击 **Create Client**、**Join Channel**。成功加入频道后，服务端会输出如下内容：

    ```bash
    INFO:observer.connection_observer:on_user_joined, agora_rtc_conn=<agora.rtc.rtc_connection.RTCConnection object at 0x7f419d81f4a8>, user_id=45
    INFO:observer.local_user_observer:on_user_info_updated, user_id=45, msg=0,val=1
    INFO:observer.local_user_observer:on_user_info_updated, user_id=45, msg=4,val=1
    ```

5. 在 Web Demo 中点击**Create Track & Publish** 发流。Web 端成功发流后，服务端会输出如下内容，表示成功接收音频数据：

    ```bash
    INFO:observer.audio_frame_observer:on_playback_audio_frame_before_mixing, channelId=test_dys1, uid=45, type=0, samples_per_sec=16000, samples_per_channel=160, bytes_per_sample=2, channels=1, len=320
    INFO:observer.audio_frame_observer:on_playback_audio_frame_before_mixing, file_path=/home/agora/Documents/Agora-Python-Server-SDK-dev-2.0/logs/audio_frame_observer/2024_09_27_17_46_37/test_dys1_45.pcm, len=320
    ```

    :::warning[注意]
    体验 Demo 时，你需要先在服务端完成连接频道，然后再在 Web 端运行示例项目加入频道并发流。否则，服务端无法成功接收 Web 端的音频流。
    :::
<_PlatformProcessedMarker close="true" />
</_PlatformTabsGroup>
