• 欢迎访问小奏爱吃麻婆豆腐,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧
  • 小奏的图站,传送门:http://pic.kanade.site

声网备注

闲言碎语 Firmiana 3个月前 (04-21) 145次浏览 0个评论

快速集成

参考官方文档:https://docs.agora.io/cn/2.1/product/Interactive%20Gaming/Quickstart%20Guides/game_unity_android_video?platform=Unity%20(Android)

API

API 地址:https://docs.agora.io/cn/2.1/product/Interactive%20Gaming/API%20Reference/game_unity?platform=Unity

其中还有一些官方未公布的接口,目前应该只支持 Native,unity 暂时不支持,可自行去 IRtcEngine 去查看

自己使用时需要注意的一些地方

在加入房间之前需要示例出来 IRtcEngine();可以参考 demo 中的 Home.cs

if (ReferenceEquals (app, null)) {
app = new HelloUnityVideo (); // create app
app.loadEngine (); // load engine
}

之后去调用示例出来的 IRtcEngine 设置频道属性,打开/关闭视频,打开/关闭音频,频道模式等可以参照 api 进行设置,需要在加入房间之前进行设置并且还要注意这些属性的先后顺序,也可以在 api 中查看。

之后 调用 IRtcEngine 里的 EnableVideoObserver()、JoinChannel(channel, null, 0)去加入一个房间
相对应的离开房间 LeaveChannel()、DisableVideoObserver();
设置各种属性并成功加入房间后可以生成出来用来显示出来直播画面的 panel,其生成方法在玩家加入房间成功后的回调方法里 onUserJoined(uint uid, int elapsed),
他会先查找有没有和自己特定的 uid 相同名字的物体,如果有则 return,没有则进行 GameObject.CreatePrimitive (PrimitiveType.Plane); 并且其名字更改为 uid,这可能是为了防止重复生成直播画面,因为之前做了判断
GameObject go = GameObject.Find (uid.ToString ());
if (!ReferenceEquals (go, null)) {
return; // reuse
}
并且为了在离开频道时可以更方便的去 Destory 直播脚本组件       onUserOffline(uint uid, USER_OFFLINE_REASON reason) 。
生成 Panel 之后去添加用来显示直播的脚本 VideoSurface o = go.AddComponent<VideoSurface> ();
并设置其中各种属性、事件
自己进行修改的地方
官方生成的直播物体只有 3D 物体,并进行渲染来显示出来,自己可以进行修改来达成到 ui 上显示出来的目的,在上面生成 Panel 的地方将其注释掉,并将 go 实例为一个 image,
剩下的需要在 VideoSurface.cs 里进行修改
将 Renderer rend = GetComponent<Renderer> ();注释掉 因为不在需要
在此处新增 Image image = GetComponent<Image> ();
并在外部去声明一个 Texture2d tex 可不需要
将此处代码注释
rend.material.mainTexture = nativeTexture;
如果声明了一个 Texture2d tex 则将 nativeTexture 赋值给 tex
剩下的则是将 tex 原尺寸切割为 sprite 赋给 image 即可,后续判断根据 rend.material.mainTexture 与 image.sprite 进行相对应的修改
update 里的 mAdjustTransfrom 是是否需要在直播时有没有什么其他功能而用  视情况注释
而且直播画面是颠倒的镜像画面,其修改画面接口不支持 unity,所以需要修改 image 的 rotate.z = 180f, scale.x = -1
如果不需要本地预览可以在加入房间前去掉
还有如果不需要在本地预置一个 VideoSurface.cs 可以去掉,不过需要在一个可以运行的脚本中循环调用 IRtcEngine.Poll()来不断接受来 sdk 的信息
并把 VideoSurface.cs 里 update 里的
while (engine.GetMessageCount() > 0)
engine.Poll ();
注释掉
如果 ios 下闪退可将此选项移除声网备注

小奏爱吃麻婆豆腐 , 资源部分来自网络,如未标明来源,均为原创,如有侵权,请联系我删除!丨联系邮箱 k@pooi.cc
转载请注明原文链接:声网备注
喜欢 (1)
[598743549@qq.com]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址