SCRtcHandle.cs 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350
  1. 
  2. using LitJson;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. public class SCRtcHandle
  6. {
  7. public bool isSendOk = true;
  8. Queue<JsonData> jsondata = new Queue<JsonData>();
  9. public SCRtcEngine mSCRtcEngine;
  10. private static SCRtcHandle _Instance;
  11. public static SCRtcHandle Instance
  12. {
  13. get
  14. {
  15. if (_Instance == null)
  16. {
  17. _Instance = new SCRtcHandle();
  18. _Instance.mSCRtcEngine = new SCRtcAndroidEngine();
  19. #if UNITY_ANDROID && !UNITY_EDITOR
  20. _Instance.mSCRtcEngine = new SCRtcAndroidEngine();
  21. #endif
  22. #if UNITY_IOS && !UNITY_EDITOR
  23. _Instance.mSCRtcEngine = new SCRtcIosEngine();
  24. #endif
  25. }
  26. return _Instance;
  27. }
  28. }
  29. public void goThread()
  30. {
  31. //Debug.Log("goThread=============>");
  32. mSCRtcEngine.send(jsondata);
  33. }
  34. //加入RTC
  35. public void InitRTC(SCRtcConfig scC)
  36. {
  37. JsonData data = new JsonData();
  38. data["action"] = "InitRTC";
  39. data["data"] = new JsonData();
  40. data["data"]["RoomId"] = scC.RoomId;
  41. data["data"]["roomPwd"] = scC.roomPwd;
  42. data["data"]["isSendAudio"] = scC.isSendAudio;
  43. data["data"]["isSendVideo"] = scC.isSendVideo;
  44. data["data"]["isRevAllAudio"] = scC.isRevAllAudio;
  45. data["data"]["isRevAllVideo"] = scC.isRevAllVideo;
  46. data["data"]["mWidth"] = scC.mWidth;
  47. data["data"]["mHight"] = scC.mHight;
  48. data["data"]["FPS"] = scC.FPS;
  49. data["data"]["Url"] = scC.Url;
  50. data["data"]["Post"] = scC.Post;
  51. jsondata.Enqueue(data);
  52. }
  53. //加入房间
  54. public void joinRoom(string req)
  55. {
  56. JsonData data = new JsonData();
  57. data["action"] = "joinRoom";
  58. data["data"] = new JsonData();
  59. data["data"]["req"] = req;
  60. jsondata.Enqueue(data);
  61. }
  62. //加入房间
  63. public void changeName(string name)
  64. {
  65. JsonData data = new JsonData();
  66. data["action"] = "changeName";
  67. data["data"] = new JsonData();
  68. data["data"]["name"] = name;
  69. jsondata.Enqueue(data);
  70. }
  71. //开启摄像头
  72. public void startCamera()
  73. {
  74. JsonData data = new JsonData();
  75. data["action"] = "startCamera";
  76. jsondata.Enqueue(data);
  77. }
  78. //关闭摄像头
  79. public void stopCamera()
  80. {
  81. JsonData data = new JsonData();
  82. data["action"] = "stopCamera";
  83. jsondata.Enqueue(data);
  84. }
  85. //设置Video大小
  86. public void changeVideo(int w,int h,int fps)
  87. {
  88. JsonData data = new JsonData();
  89. data["action"] = "changeVideo";
  90. data["data"] = new JsonData();
  91. data["data"]["w"] = w;
  92. data["data"]["h"] = h;
  93. data["data"]["fps"] = fps;
  94. jsondata.Enqueue(data);
  95. }
  96. //开启或关闭Audio
  97. public void sendMic(bool boo)
  98. {
  99. JsonData data = new JsonData();
  100. data["action"] = "sendMic";
  101. data["data"] = new JsonData();
  102. data["data"]["boo"] = boo;
  103. jsondata.Enqueue(data);
  104. }
  105. public void setMute(bool boo)
  106. {
  107. JsonData data = new JsonData();
  108. data["action"] = "setMute";
  109. data["data"] = new JsonData();
  110. data["data"]["boo"] = boo;
  111. jsondata.Enqueue(data);
  112. }
  113. //开启或关闭Video
  114. public void sendVideo(bool boo)
  115. {
  116. JsonData data = new JsonData();
  117. data["action"] = "sendVideo";
  118. data["data"] = new JsonData();
  119. data["data"]["boo"] = boo;
  120. jsondata.Enqueue(data);
  121. }
  122. //开启或关闭全部Video
  123. public void enableAudioOnly(bool boo)
  124. {
  125. JsonData data = new JsonData();
  126. data["action"] = "enableAudioOnly";
  127. data["data"] = new JsonData();
  128. data["data"]["boo"] = boo;
  129. jsondata.Enqueue(data);
  130. }
  131. //开启或关闭全部Audio
  132. public void enableVideoOnly(bool boo)
  133. {
  134. JsonData data = new JsonData();
  135. data["action"] = "enableVideoOnly";
  136. data["data"] = new JsonData();
  137. data["data"]["boo"] = boo;
  138. jsondata.Enqueue(data);
  139. }
  140. //开启扬声器
  141. public void openSpeaker()
  142. {
  143. JsonData data = new JsonData();
  144. data["action"] = "openSpeaker";
  145. data["data"] = new JsonData();
  146. data["data"]["boo"] = true ;
  147. jsondata.Enqueue(data);
  148. }
  149. //关闭扬声器
  150. public void closeSpeaker()
  151. {
  152. JsonData data = new JsonData();
  153. data["action"] = "closeSpeaker";
  154. data["data"] = new JsonData();
  155. data["data"]["boo"] = false;
  156. jsondata.Enqueue(data);
  157. }
  158. //调节音量
  159. public void setVolume(int i)
  160. {
  161. JsonData data = new JsonData();
  162. data["action"] = "setVolume";
  163. data["data"] = new JsonData();
  164. data["data"]["i"] = i;
  165. jsondata.Enqueue(data);
  166. }
  167. //调节外放音量
  168. public void setSpeakerVolume(int i)
  169. {
  170. JsonData data = new JsonData();
  171. data["action"] = "setSpeakerVolume";
  172. data["data"] = new JsonData();
  173. data["data"]["i"] = i;
  174. jsondata.Enqueue(data);
  175. }
  176. //订阅某人的设备
  177. public void openRev(string consumerId)
  178. {
  179. WSHandler.Rtc.subscribe(consumerId);
  180. JsonData data = new JsonData();
  181. data["action"] = "openRev";
  182. data["data"] = new JsonData();
  183. data["data"]["consumerId"] = consumerId;
  184. jsondata.Enqueue(data);
  185. }
  186. //取消订阅某人的设备
  187. public void closeRev(string consumerId)
  188. {
  189. WSHandler.Rtc.unsubscribe(consumerId);
  190. JsonData data = new JsonData();
  191. data["action"] = "closeRev";
  192. data["data"] = new JsonData();
  193. data["data"]["consumerId"] = consumerId;
  194. jsondata.Enqueue(data);
  195. }
  196. //关闭RTC
  197. public void Close()
  198. {
  199. WSHandler.Rtc.leave();
  200. JsonData data = new JsonData();
  201. data["action"] = "Close";
  202. jsondata.Enqueue(data);
  203. }
  204. //设置TextureID
  205. public void addTextureID(string peerId,int textureID)
  206. {
  207. JsonData data = new JsonData();
  208. data["action"] = "addTextureID";
  209. data["data"] = new JsonData();
  210. data["data"]["peerId"] = peerId;
  211. data["data"]["textureID"] = textureID;
  212. jsondata.Enqueue(data);
  213. }
  214. //调节自身音量
  215. public void audioMeChange(double d)
  216. {
  217. JsonData data = new JsonData();
  218. data["action"] = "audioMeChange";
  219. data["data"] = new JsonData();
  220. data["data"]["d"] = d;
  221. jsondata.Enqueue(data);
  222. }
  223. //设置Peer帧率
  224. public void changePeerVideo(string consumerId,double d)
  225. {
  226. JsonData data = new JsonData();
  227. data["action"] = "changePeerVideo";
  228. data["data"] = new JsonData();
  229. data["data"]["fps"] = d;
  230. data["data"]["consumerId"] = consumerId;
  231. jsondata.Enqueue(data);
  232. }
  233. //调节他人音量
  234. public void audioPeerChange(string consumerId, double d)
  235. {
  236. JsonData data = new JsonData();
  237. data["action"] = "audioPeerChange";
  238. data["data"] = new JsonData();
  239. data["data"]["d"] = d;
  240. data["data"]["consumerId"] = consumerId;
  241. jsondata.Enqueue(data);
  242. }
  243. //获取音量
  244. public void GetaudioMe()
  245. {
  246. JsonData data = new JsonData();
  247. data["action"] = "GetaudioMe";
  248. jsondata.Enqueue(data);
  249. }
  250. //获取他人音量
  251. public void GetaudioPeer(string consumerId)
  252. {
  253. JsonData data = new JsonData();
  254. data["action"] = "GetaudioPeer";
  255. jsondata.Enqueue(data);
  256. }
  257. public void onSocketMesseage(string msg)
  258. {
  259. JsonData data = new JsonData();
  260. data["action"] = "onSocketMesseage";
  261. data["data"] = msg;
  262. jsondata.Enqueue(data);
  263. }
  264. public void initRtpCapabilities(string msg)
  265. {
  266. JsonData data = new JsonData();
  267. data["action"] = "initRtpCapabilities";
  268. data["data"] = msg;
  269. jsondata.Enqueue(data);
  270. }
  271. public void createRecvTransport(string msg)
  272. {
  273. JsonData data = new JsonData();
  274. data["action"] = "createRecvTransport";
  275. data["data"] = msg;
  276. jsondata.Enqueue(data);
  277. }
  278. public void createSendTransport(string msg)
  279. {
  280. JsonData data = new JsonData();
  281. data["action"] = "createSendTransport";
  282. data["data"] = msg;
  283. jsondata.Enqueue(data);
  284. }
  285. public void onNewConsumer(string msg,string id)
  286. {
  287. JsonData data = new JsonData();
  288. data["action"] = "onNewConsumer";
  289. data["data"] = msg;
  290. data["id"] = id;
  291. jsondata.Enqueue(data);
  292. }
  293. public void getDevice()
  294. {
  295. JsonData data = new JsonData();
  296. data["action"] = "getDevice";
  297. jsondata.Enqueue(data);
  298. }
  299. public void addCameraLocal(int L)
  300. {
  301. JsonData data = new JsonData();
  302. data["action"] = "addCameraLocal";
  303. data["L"] = L;
  304. jsondata.Enqueue(data);
  305. }
  306. public string getwifi()
  307. {
  308. return (_Instance.mSCRtcEngine as SCRtcAndroidEngine).getwifi();
  309. }
  310. public void setProduce(string msg)
  311. {
  312. (_Instance.mSCRtcEngine as SCRtcAndroidEngine).setProduce(msg);
  313. }
  314. }