Windows C#

最近更新时间:2026-04-24 14:48:00

我的收藏
如何快速在 C# 中接入 Windows RTC Engine,以实现基本音视频通话功能。

环境准备

操作系统:Windows 7 及以上版本。
开发环境:Visual Studio 2019 及以上版本,推荐使用 Visual Studio 2022。
开发工具包:Visual Studio 选择 .NET 桌面开发工具包。

接入指引

步骤 1. 导入 SDK

1. 打开 Visual Studio,新建一个 Windows Forms App (.NET Framework) 项目。在创建项目的向导中,按照提示完成项目创建,单击创建

2. 下载 Windows C# SDK,解压后的 SDK 包含如下文件:



3. 将解压后的 TRTCSDK 文件拷贝到项目 .sln 文件所在目录下。




步骤 2. 配置项目

1. 添加引用
1.1 解决方案资源管理器中,右键点击项目名称,选择添加 > 引用

1.2 在弹出的引用管理器窗口中,单击浏览。

1.3 找到解压后 SDK 文件夹中的.dll 文件,选择需要的程序集进行引用。

1.4. 对如下选中的 TRTC dll 库文件点击确定。


步骤 3. 创建 TRTC 实例

1. Form1.cs 文件中引入 TRTC 命名空间:
using trtc;
2. Form1.cs 文件中获取 TRTC 实例及实现 ITRTCCloudCallback 接口:
注意:
目前 ITRTCCloudCallback 的所有回调都必须实现,否则会出现编译报错。
using System.Windows.Forms;
using trtc;

public partial class Form1 : Form, ITRTCCloudCallback
{
private ITRTCCloud trtcCloud;
public Form1()
{
InitializeComponent();
// 获取 TRTC 实例
trtcCloud = ITRTCCloud.getTRTCShareInstance();
//注册 TRTC 回调
trtcCloud.addCallback(this);
}


// 实现接口方法
public void onError(TXLiteAVError errCode, string errMsg, IntPtr extraInfo)
{
// 监听 "onError" 事件并对相应信息进行打印
MessageBox.Show($"Error: {errCode}, {errMsg}");
}


public void onWarning(TXLiteAVWarning warningCode, string warningMsg, IntPtr extraInfo)
{
// 监听 "onWarning" 事件并对相应信息进行打印
MessageBox.Show($"Warning: {warningCode}, {warningMsg}");
}


public void onEnterRoom(int result)
{
// 监听 "onEnterRoom" 事件并对相应信息进行打印
if (result > 0)
{
MessageBox.Show("Enter room successfully");
}
else
{
MessageBox.Show("Enter room failed");
}
}

public void onExitRoom(int reason)
{
// 监听 "onExitRoom" 事件并对相应信息进行打印
if (reason == 0)
{
MessageBox.Show("Exit current room by calling the 'exitRoom' api of sdk");
}
else if (reason == 1)
{
MessageBox.Show("Kicked out of the current room by server through the restful api");
}
else if (reason == 2)
{
MessageBox.Show("The current room is dissolved by server through the restful api");
}
}
}

步骤 4. 进入房间

设置进房参数 TRTCParam 并调用 enterRoom 即可成功进入房间,通过监听 onEnterRoom 回调确定是否进房成功。
参数
类型
描述
sdkAppId
UInt32
您在 实时音视频控制台 中创建的音频和视频应用程序的 sdkAppId。
userId
String
您指定的用户 ID。
userSig
String
用户签名,请参见 UserSig
strRoomId
String
您指定的房间 ID,通常是唯一的房间 ID,限制长度为 64 字节。
role
直播场景下的角色,仅适用于直播场景(TRTCAppSceneLIVETRTCAppSceneVoiceChatRoom),通话场景下指定该参数是无效的。【推荐取值】默认值:主播(TRTCRoleAnchor)。
//在 `Form1.cs` 文件中添加一个按钮,并为按钮的 `Click` 事件添加以下代码:
private void button1_Click(object sender, EventArgs e)
{
// 将以下 trtcParams 参数修改为自己的参数
TRTCParams trtcParams = new TRTCParams();
trtcParams.sdkAppId = 1400xxxxxx;
trtcParams.userId = "denny";
trtcParams.strRoomId = "123abc";
trtcParams.userSig = "xxx";
trtcParams.role = TRTCRoleType.TRTCRoleAnchor;

// 对于多人视频通话场景,推荐使用 TRTC_APP_SCENE_LIVE
trtcCloud.enterRoom(ref trtcParams, TRTCAppScene.TRTC_APP_SCENE_LIVE);
}

步骤 5. 打开/关闭摄像头并发布视频流

1. 工具箱中,拖动一个 PictureBox 控件到窗体上。
2. 为窗体添加一个 Button 控件,双击该按钮,在生成的 Click 事件处理方法中添加以下代码:
private void button2_Click(object sender, EventArgs e)
{
// 设置本地预览渲染参数
private TRTCRenderParams renderParams = new TRTCRenderParams();
renderParams.fillMode = TRTCVideoFillMode.TRTCVideoFillMode_Fit;
renderParams.mirrorType = TRTCVideoMirrorType.TRTCVideoMirrorType_Disable;
renderParams.rotation = TRTCVideoRotation.TRTCVideoRotation0;
trtcCloud.setLocalRenderParams(renderParams);
// 对前置摄像头采集内容进行本地预览并发布视频流
trtcCloud.startLocalPreview(true, imgLocalVideo);
// 对后置摄像头采集内容进行本地预览并发布视频流
trtcCloud.startLocalPreview(false, imgLocalVideo);
}
如果您需要关闭摄像头采集并停止推送视频流,请调用 stopLocalPreview 关闭摄像头预览并停止推送本地视频信息。
void OnStopLocalPreviewClick() {
trtcCloud.stopLocalPreview();
}

步骤6:打开/关闭麦克风并发布音频流

调用 startLocalAudio 开启麦克风采集,请根据您的需求,选择以下参数中的一个声音质量参数 Quality
void OnStartLocalAudioClick() {
// 开启麦克风采集,设置当前场景为:语音模式
// 具有高的噪声抑制能力,有强有弱的网络阻力
trtcCloud.startLocalAudio(TRTCAudioQuality.TRTCAudioQualitySpeech);
}
void OnStartLocalAudioClick() {
// 开启麦克风采集并发布音频流,设置当前场景为:音乐模式
// 为获得高保真度,低音质损失,建议配合专业声卡使用
trtcCloud.startLocalAudio(TRTCAudioQuality.TRTCAudioQualityMusic);
}
如果您需要关闭麦克风采集并停止推送音频流,请调用 stopLocalAudio 关闭麦克风采集并停止推送本地音频流。
void OnStopLocalAudioClick() {
trtcCloud.stopLocalAudio();
}

步骤7:播放/停止视频流

1. 在进入房间之前对 onUserVideoAvailable 进行监听,当您收到 onUserVideoAvailable(userId, true)通知时,表示该路画面已经有可播放的视频帧到达。
public void onUserVideoAvailable(String userId, bool available) {
}
2. 调用 startRemoteView/stopRemoteView 选择播放停止远端视频画面。
void OnStartRemoteViewClick() {
// imgVideo 为 Windows 的组件PictureBox
trtcCloud.startRemoteView("denny", TRTCVideoStreamType.TRTCVideoStreamTypeBig, imgVideo);
}
3. 调用 stopRemoteView 停止播放远端画面。
void OnStopRemoteViewClick() {
trtcCloud.stopRemoteView("denny", TRTCVideoStreamType.TRTCVideoStreamTypeBig); // 仅停止播放 denny 的视频
trtcCloud.stopAllRemoteView(true); // 停止播放所有远端用户
}

步骤8:播放/停止音频流

调用 muteRemoteAudio 选择播放或停止远端声音。
void OnMuteRemoteAudioClick() {
// 静音
trtcCloud.muteRemoteAudio("denny", true); // 仅静音 denny
trtcCloud.muteAllRemoteAudio(true); // 静音所有远端用户
}
void OnMuteRemoteAudioFalseClick() {
// 取消静音
trtcCloud.muteRemoteAudio("denny", false); // 仅取消静音 denny
trtcCloud.muteAllRemoteAudio(false); // 取消静音所有远端用户
}

步骤9:退出房间

1. 调用 exitRoom 退出当前的房间。
void OnExitClick() {
trtcCloud.exitRoom();
}
2. TRTC SDK 会在退房结束后通过 onExitRoom 回调事件通知您。
public void onExitRoom(int reason) {} // 监听退房结果事件
以上文档介绍了如何在 C# 项目中接入 Windows RTC Engine,实现基本的音视频通话功能。在实际使用时,请根据自己的项目需求进行调整。您可以访问 API 概览 查看所有函数列表及其详细描述。