SCRtcHandle.cs 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352
  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 = new Queue<JsonData>();
  52. jsondata.Enqueue(data);
  53. }
  54. //加入房间
  55. public void joinRoom(string req)
  56. {
  57. JsonData data = new JsonData();
  58. data["action"] = "joinRoom";
  59. data["data"] = new JsonData();
  60. data["data"]["req"] = req;
  61. jsondata.Enqueue(data);
  62. }
  63. //加入房间
  64. public void changeName(string name)
  65. {
  66. JsonData data = new JsonData();
  67. data["action"] = "changeName";
  68. data["data"] = new JsonData();
  69. data["data"]["name"] = name;
  70. jsondata.Enqueue(data);
  71. }
  72. //开启摄像头
  73. public void startCamera()
  74. {
  75. JsonData data = new JsonData();
  76. data["action"] = "startCamera";
  77. jsondata.Enqueue(data);
  78. }
  79. //关闭摄像头
  80. public void stopCamera()
  81. {
  82. JsonData data = new JsonData();
  83. data["action"] = "stopCamera";
  84. jsondata.Enqueue(data);
  85. }
  86. //设置Video大小
  87. public void changeVideo(int w,int h,int fps)
  88. {
  89. JsonData data = new JsonData();
  90. data["action"] = "changeVideo";
  91. data["data"] = new JsonData();
  92. data["data"]["w"] = w;
  93. data["data"]["h"] = h;
  94. data["data"]["fps"] = fps;
  95. jsondata.Enqueue(data);
  96. }
  97. //开启或关闭Audio
  98. public void sendMic(bool boo)
  99. {
  100. JsonData data = new JsonData();
  101. data["action"] = "sendMic";
  102. data["data"] = new JsonData();
  103. data["data"]["boo"] = boo;
  104. jsondata.Enqueue(data);
  105. }
  106. public void setMute(bool boo)
  107. {
  108. JsonData data = new JsonData();
  109. data["action"] = "setMute";
  110. data["data"] = new JsonData();
  111. data["data"]["boo"] = boo;
  112. jsondata.Enqueue(data);
  113. }
  114. //开启或关闭Video
  115. public void sendVideo(bool boo)
  116. {
  117. JsonData data = new JsonData();
  118. data["action"] = "sendVideo";
  119. data["data"] = new JsonData();
  120. data["data"]["boo"] = boo;
  121. jsondata.Enqueue(data);
  122. }
  123. //开启或关闭全部Video
  124. public void enableAudioOnly(bool boo)
  125. {
  126. JsonData data = new JsonData();
  127. data["action"] = "enableAudioOnly";
  128. data["data"] = new JsonData();
  129. data["data"]["boo"] = boo;
  130. jsondata.Enqueue(data);
  131. }
  132. //开启或关闭全部Audio
  133. public void enableVideoOnly(bool boo)
  134. {
  135. JsonData data = new JsonData();
  136. data["action"] = "enableVideoOnly";
  137. data["data"] = new JsonData();
  138. data["data"]["boo"] = boo;
  139. jsondata.Enqueue(data);
  140. }
  141. //开启扬声器
  142. public void openSpeaker()
  143. {
  144. JsonData data = new JsonData();
  145. data["action"] = "openSpeaker";
  146. data["data"] = new JsonData();
  147. data["data"]["boo"] = true ;
  148. jsondata.Enqueue(data);
  149. }
  150. //关闭扬声器
  151. public void closeSpeaker()
  152. {
  153. JsonData data = new JsonData();
  154. data["action"] = "closeSpeaker";
  155. data["data"] = new JsonData();
  156. data["data"]["boo"] = false;
  157. jsondata.Enqueue(data);
  158. }
  159. //调节音量
  160. public void setVolume(int i)
  161. {
  162. JsonData data = new JsonData();
  163. data["action"] = "setVolume";
  164. data["data"] = new JsonData();
  165. data["data"]["i"] = i;
  166. jsondata.Enqueue(data);
  167. }
  168. //调节外放音量
  169. public void setSpeakerVolume(int i)
  170. {
  171. JsonData data = new JsonData();
  172. data["action"] = "setSpeakerVolume";
  173. data["data"] = new JsonData();
  174. data["data"]["i"] = i;
  175. jsondata.Enqueue(data);
  176. }
  177. //订阅某人的设备
  178. public void openRev(string consumerId)
  179. {
  180. WSHandler.Rtc.subscribe(consumerId);
  181. JsonData data = new JsonData();
  182. data["action"] = "openRev";
  183. data["data"] = new JsonData();
  184. data["data"]["consumerId"] = consumerId;
  185. jsondata.Enqueue(data);
  186. }
  187. //取消订阅某人的设备
  188. public void closeRev(string consumerId)
  189. {
  190. WSHandler.Rtc.unsubscribe(consumerId);
  191. JsonData data = new JsonData();
  192. data["action"] = "closeRev";
  193. data["data"] = new JsonData();
  194. data["data"]["consumerId"] = consumerId;
  195. jsondata.Enqueue(data);
  196. }
  197. //关闭RTC
  198. public void Close()
  199. {
  200. WSHandler.Rtc.leave();
  201. JsonData data = new JsonData();
  202. data["action"] = "Close";
  203. jsondata.Enqueue(data);
  204. Debug.Log("close");
  205. }
  206. //设置TextureID
  207. public void addTextureID(string peerId,int textureID)
  208. {
  209. JsonData data = new JsonData();
  210. data["action"] = "addTextureID";
  211. data["data"] = new JsonData();
  212. data["data"]["peerId"] = peerId;
  213. data["data"]["textureID"] = textureID;
  214. jsondata.Enqueue(data);
  215. }
  216. //调节自身音量
  217. public void audioMeChange(double d)
  218. {
  219. JsonData data = new JsonData();
  220. data["action"] = "audioMeChange";
  221. data["data"] = new JsonData();
  222. data["data"]["d"] = d;
  223. jsondata.Enqueue(data);
  224. }
  225. //设置Peer帧率
  226. public void changePeerVideo(string consumerId,double d)
  227. {
  228. JsonData data = new JsonData();
  229. data["action"] = "changePeerVideo";
  230. data["data"] = new JsonData();
  231. data["data"]["fps"] = d;
  232. data["data"]["consumerId"] = consumerId;
  233. jsondata.Enqueue(data);
  234. }
  235. //调节他人音量
  236. public void audioPeerChange(string consumerId, double d)
  237. {
  238. JsonData data = new JsonData();
  239. data["action"] = "audioPeerChange";
  240. data["data"] = new JsonData();
  241. data["data"]["d"] = d;
  242. data["data"]["consumerId"] = consumerId;
  243. jsondata.Enqueue(data);
  244. }
  245. //获取音量
  246. public void GetaudioMe()
  247. {
  248. JsonData data = new JsonData();
  249. data["action"] = "GetaudioMe";
  250. jsondata.Enqueue(data);
  251. }
  252. //获取他人音量
  253. public void GetaudioPeer(string consumerId)
  254. {
  255. JsonData data = new JsonData();
  256. data["action"] = "GetaudioPeer";
  257. jsondata.Enqueue(data);
  258. }
  259. public void onSocketMesseage(string msg)
  260. {
  261. JsonData data = new JsonData();
  262. data["action"] = "onSocketMesseage";
  263. data["data"] = msg;
  264. jsondata.Enqueue(data);
  265. }
  266. public void initRtpCapabilities(string msg)
  267. {
  268. JsonData data = new JsonData();
  269. data["action"] = "initRtpCapabilities";
  270. data["data"] = msg;
  271. jsondata.Enqueue(data);
  272. }
  273. public void createRecvTransport(string msg)
  274. {
  275. JsonData data = new JsonData();
  276. data["action"] = "createRecvTransport";
  277. data["data"] = msg;
  278. jsondata.Enqueue(data);
  279. }
  280. public void createSendTransport(string msg)
  281. {
  282. JsonData data = new JsonData();
  283. data["action"] = "createSendTransport";
  284. data["data"] = msg;
  285. jsondata.Enqueue(data);
  286. }
  287. public void onNewConsumer(string msg,string id)
  288. {
  289. JsonData data = new JsonData();
  290. data["action"] = "onNewConsumer";
  291. data["data"] = msg;
  292. data["id"] = id;
  293. jsondata.Enqueue(data);
  294. }
  295. public void getDevice()
  296. {
  297. JsonData data = new JsonData();
  298. data["action"] = "getDevice";
  299. jsondata.Enqueue(data);
  300. }
  301. public void addCameraLocal(int L)
  302. {
  303. JsonData data = new JsonData();
  304. data["action"] = "addCameraLocal";
  305. data["L"] = L;
  306. jsondata.Enqueue(data);
  307. }
  308. public string getwifi()
  309. {
  310. return (_Instance.mSCRtcEngine as SCRtcAndroidEngine).getwifi();
  311. }
  312. public void setProduce(string msg)
  313. {
  314. (_Instance.mSCRtcEngine as SCRtcAndroidEngine).setProduce(msg);
  315. }
  316. }