如何快速在 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 | |
userId | String | 您指定的用户 ID。 |
userSig | String | |
strRoomId | String | 您指定的房间 ID,通常是唯一的房间 ID,限制长度为 64 字节。 |
role | 直播场景下的角色,仅适用于直播场景(TRTCAppSceneLIVE 和 TRTCAppSceneVoiceChatRoom),通话场景下指定该参数是无效的。【推荐取值】默认值:主播(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_LIVEtrtcCloud.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 的组件PictureBoxtrtcCloud.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); // 仅静音 dennytrtcCloud.muteAllRemoteAudio(true); // 静音所有远端用户}
void OnMuteRemoteAudioFalseClick() {// 取消静音trtcCloud.muteRemoteAudio("denny", false); // 仅取消静音 dennytrtcCloud.muteAllRemoteAudio(false); // 取消静音所有远端用户}
步骤9:退出房间
1. 调用
exitRoom 退出当前的房间。void OnExitClick() {trtcCloud.exitRoom();}
2. TRTC SDK 会在退房结束后通过 onExitRoom 回调事件通知您。
public void onExitRoom(int reason) {} // 监听退房结果事件
以上文档介绍了如何在 C# 项目中接入 Windows RTC Engine,实现基本的音视频通话功能。在实际使用时,请根据自己的项目需求进行调整。您可以访问 API 概览 查看所有函数列表及其详细描述。