视频云技术小编 2021-02-26 27浏览量
本章节为您介绍了 Unity Demo 的集成操作步骤。
您需要开通阿里云 RTC 服务并在控制台成功创建应用,具体操作请参见入门概述。
获取 Token,详情请参见服务端生成 Token。
平台 | 文件或文件夹 | 项目路径 |
Android | /Android/AliRtcCwrapper.aar | /Assets/Plugins/Android |
/Android/AliRTCSdk.jar | /Assets/Plugins/Android | |
/Android/alivc-core-rtc.aar | /Assets/Plugins/Android | |
/Android/Sophonsdk.aar | /Assets/Plugins/Android | |
/Android/utdid4all-1.5.0-proguard.jar | /Assets/Plugins/Android | |
/Android/webrtclib.aar | /Assets/Plugins/Android | |
iOS | /iOS/AliRTCSdk.framework | /Assets/Plugins/iOS |
/iOS/libAliRTCSdkCInterface.a | /Assets/Plugins/iOS | |
macOS | /macOS/AliRTCSdkCWrapper.bundle | /Assets/Plugins/macOS |
Windows | /x86/AliRTCSdk.dll | /Assets/Plugins/x86 |
/x86/AliRTCSdkCWrapper.dll | /Assets/Plugins/x86 | |
/x64/AliRTCSdk.dll | /Assets/Plugins/x64 | |
/x64/AliRTCSdkCWrapper.dll | /Assets/Plugins/x64 |
文件 | 项目路径 |
/Scripts/AliRtcEngine.cs | /Assets/Scripts |
/Scripts/IAliRtcEngineBase.cs | /Assets/Scripts |
/Scripts/VideoDisplaySurface.cs | /Assets/Scripts |
private ArrayList permissionList = new ArrayList(); void Start () { #if (UNITY_2018_3_OR_NEWER && UNITY_ANDROID) permissionList.Add(Permission.Microphone); permissionList.Add(Permission.Camera); #endif } void Update () { #if (UNITY_2018_3_OR_NEWER && UNITY_ANDROID) CheckPermission(); #endif } private void CheckPermission() { #if (UNITY_2018_3_OR_NEWER && UNITY_ANDROID) foreach (string permission in permissionList) { if (Permission.HasUserAuthorizedPermission(permission)) { } else { Permission.RequestUserPermission(permission); } } #endif }
string extra = ""; IAliRtcEngine mRtcEngine = IAliRtcEngine.GetEngine (extra); mRtcEngine.OnJoinChannelNotify = onJoinChannelNotify; mRtcEngine.OnPublishNotify = onPublishNotify; mRtcEngine.OnSubscribeNotify = onSubscribeNotify; mRtcEngine.OnRemoteUserOnLineNotify = onRemoteUserOnLineNotify; mRtcEngine.OnRemoteUserOffLineNotify = onRemoteUserOffLineNotify; mRtcEngine.OnRemoteTrackAvailableNotify = onRemoteTrackAvailableNotify; mRtcEngine.OnSubscribeChangedNotify = onSubscribeChangedNotify; mRtcEngine.OnLeaveChannelResultNotify = onLeaveChannelResultNotify; mRtcEngine.SetAutoPublish(true, true);
""
。GameObject go = GameObject.Find("LocalVideoCube"); VideoDisplaySurface surface = go.GetComponent<VideoDisplaySurface>(); surface.SetUserId(""); surface.SetVideoTrack(AliRTCVideoTrack.VIDEO_TRACK_CAMERA); surface.SetEnable(true); mRtcEngine.SetLocalViewConfig(true); mRtcEngine.ConfigExternalVideoRendering(true); mRtcEngine.StartPreview();
mRtcEngine.JoinChannel(authInfo, "userName"); private void onJoinChannelNotify (int errorCode) { if (errorCode == 0) { Debug.Log("加入频道成功"); } else { Debug.Log("加入频道失败"); } }
private void onSubscribeChangedNotify (string userId, int audioTrack, int videoTrack) { if (videoTrack == (int)AliRTCVideoTrack.VIDEO_TRACK_CAMERA) { GameObject go = GameObject.Find("RemoteVideoCube"); if (!ReferenceEquals(go, null)) { VideoDisplaySurface surface = go.GetComponent<VideoDisplaySurface>(); surface.SetUserId(userId); surface.SetVideoTrack(AliRTCVideoTrack.VIDEO_TRACK_CAMERA); surface.SetEnable(true); } } else if (videoTrack == (int)AliRTCVideoTrack.VIDEO_TRACK_NONE) { GameObject go = GameObject.Find("RemoteVideoCube"); if (!ReferenceEquals(go, null)) { VideoDisplaySurface surface = go.GetComponent<VideoDisplaySurface>(); surface.SetEnable(false); } } }
mRtcEngine.StopPreview(); GameObject go = GameObject.Find("LocalVideoCube"); VideoDisplaySurface surface = go.GetComponent<VideoDisplaySurface>(); surface.SetEnable(false); go = GameObject.Find("RemoteVideoCube"); surface = go.GetComponent<VideoDisplaySurface>(); surface.SetEnable(false); mRtcEngine.LeaveChannel();
Unity Editor 中调试只需要确保放入 macOS 或 Windows 所需的文件或文件夹到 /Assets/Plugins 目录即可。
「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实践技术文章,在这里与音视频领域一流工程师交流切磋。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
分享视频云行业和技术趋势,打造“新内容”、“新交互”。