vxgmp.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440
  1. var BR_OTHER = 0;
  2. var BR_MSIE = 1;
  3. var BR_CHROME = 2;
  4. var BR_DISABLE = 9;
  5. const PLAYER_JPEGSNAP = 0;
  6. const PLAYER_ACTIVEX = 1;
  7. const PLAYER_CHROMEPLUGIN = 2;
  8. const PLAYER_JAVAAPP = 3;
  9. const PLAYER_WEBSOCKET = 4;
  10. function downloadFile(filename){
  11. console.log(' filename='+filename);
  12. window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
  13. window.requestFileSystem(window.PERSISTENT, 30*1024*1024, function(fs) {
  14. console.log(' fs.root='+fs.root);
  15. fs.root.getFile(filename, {create: false}, function(fileEntry) { // /test is filename
  16. console.log(' fs.root.getFile OK');
  17. //location.href = fileEntry.toURL();
  18. var link = document.createElement("a");
  19. link.download = filename;//"test";
  20. link.href = fileEntry.toURL();
  21. link.click();
  22. }, function() {});
  23. }, function() {});
  24. }
  25. function downloadBrowse(){
  26. window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
  27. window.requestFileSystem(window.PERSISTENT, 30*1024*1024, function(fs) {
  28. console.log(' fs.root='+fs.root);
  29. fs.root.getDirectory('/', {create: false}, function(fileEntry) { // /test is directory
  30. console.log(' fs.root.getFile OK');
  31. location.href = fileEntry.toURL();
  32. }, function() {});
  33. }, function() {});
  34. }
  35. function sleep(milliseconds)
  36. {
  37. var start = new Date().getTime();
  38. for (var i = 0; i < 1e7; i++)
  39. {
  40. if ((new Date().getTime() - start) > milliseconds)
  41. {
  42. break;
  43. }
  44. }
  45. }
  46. function VXGMP_GetBrowser()
  47. {
  48. var agt = navigator.userAgent.toLowerCase();
  49. //console.log(agt);
  50. if (parseInt(readSetupByKey("SYS_TTA_SECURITY_VERIFIED")) == 1) return BR_OTHER;
  51. if (agt.indexOf("msie") != -1 || agt.indexOf("trident") != -1) return BR_MSIE;
  52. // else return BR_DISABLE;
  53. else if (agt.indexOf("opera") != -1 || agt.indexOf("opr") != -1) return BR_OTHER; // Opera
  54. else if (agt.indexOf("edge") != -1 || agt.indexOf("edg/") != -1) return BR_OTHER; // Edge(old) or Edge(Chromium)
  55. else if (agt.indexOf("whale/") != -1) return BR_OTHER; // Whale
  56. else if (agt.indexOf("chrome") != -1) {
  57. if (parseInt(readSetupByKey("SYS_IS_STEINSVIKSPECIFIC")) == 1) {
  58. return BR_OTHER;
  59. }
  60. else {
  61. return BR_CHROME; // Chrome
  62. }
  63. }
  64. else if (agt.indexOf("safari") != -1) return BR_OTHER; // Safari
  65. else if (agt.indexOf("firefox") != -1) return BR_OTHER; // Firefox
  66. else return BR_OTHER;
  67. }
  68. function VXGMP_GetPlayer(activex, browser, valgo, detectioncam)
  69. {
  70. var player;
  71. if (trnPlayerForceJpeg)
  72. {
  73. player = PLAYER_JPEGSNAP;
  74. return player;
  75. }
  76. if (activex == 1)
  77. {
  78. if (browser == BR_MSIE)
  79. {
  80. player = PLAYER_ACTIVEX;
  81. }
  82. else if (browser == BR_CHROME)
  83. {
  84. if (trnPlayerSupportWS == 1)
  85. {
  86. var chromeplugin = parseInt(getCookie('truenchromeplugin'));
  87. if (chromeplugin == 1)
  88. {
  89. player = PLAYER_CHROMEPLUGIN;
  90. }
  91. else
  92. {
  93. if (valgo == 0/*H.264*/)
  94. {
  95. if (detectioncam == 1 && trnDetectionCamPlayerSupportWS != 1) {
  96. player = PLAYER_JPEGSNAP;
  97. }
  98. else {
  99. player = PLAYER_WEBSOCKET;
  100. }
  101. }
  102. else
  103. {
  104. player = PLAYER_JPEGSNAP;
  105. }
  106. }
  107. }
  108. else
  109. {
  110. player = PLAYER_CHROMEPLUGIN;
  111. }
  112. }
  113. else
  114. {
  115. if (trnPlayerSupportWS == 1)
  116. {
  117. if (valgo == 0/*H.264*/)
  118. {
  119. if (detectioncam == 1 && trnDetectionCamPlayerSupportWS != 1) {
  120. player = PLAYER_JPEGSNAP;
  121. }
  122. else {
  123. player = PLAYER_WEBSOCKET;
  124. }
  125. }
  126. else
  127. {
  128. player = PLAYER_JPEGSNAP;
  129. }
  130. }
  131. else
  132. {
  133. player = PLAYER_JPEGSNAP;
  134. }
  135. }
  136. }
  137. else
  138. {
  139. player = PLAYER_JAVAAPP;
  140. }
  141. return player;
  142. }
  143. function VXGMP_createPlayer(id, addr, width, height, target)
  144. {
  145. var playerId = id;
  146. var div = document.createElement('div');
  147. div.setAttribute("id", playerId);
  148. div.setAttribute("class", "vxgplayer");
  149. var runtimePlayers = document.getElementById(target);
  150. runtimePlayers.appendChild(div);
  151. var player = vxgplayer(playerId, {
  152. url: '',
  153. nmf_path: 'media_player.nmf',
  154. nmf_src: '/vxgplayer/pnacl/Release/media_player.nmf',
  155. latency: 300,
  156. aspect_ratio_mode: 0,
  157. autohide: 3,
  158. controls: false,
  159. custom_digital_zoom: true
  160. });
  161. if(player == undefined) {
  162. return;
  163. }
  164. player.ready(function(){
  165. console.log(' =>ready player '+playerId);
  166. vxgplayer(playerId).src(addr);
  167. vxgplayer(playerId).size(width, height);
  168. vxgplayer(playerId).autoreconnect(1);
  169. vxgplayer(playerId).play();
  170. console.log(' <=ready player '+playerId);
  171. });
  172. }
  173. function VXGMP_restartPlayer(playerId, addr, width, height, target)
  174. {
  175. console.log(' =>VXGMP_restartPlayer '+playerId);
  176. vxgplayer(playerId).src(addr);
  177. vxgplayer(playerId).size(width, height);
  178. vxgplayer(playerId).autoreconnect(1);
  179. vxgplayer(playerId).play();
  180. console.log(' <=VXGMP_restartPlayer '+playerId);
  181. }
  182. function VXGMP_resizePlayer(playerId, width, height)
  183. {
  184. console.log(' =>VXGMP_resizePlayer '+playerId);
  185. vxgplayer(playerId).size(width, height);
  186. console.log(' =>VXGMP_resizePlayer '+width+' '+height);
  187. }
  188. function VXGMP_GetsizePlayer(playerId)
  189. {
  190. var size;
  191. size = vxgplayer(playerId).size();
  192. return size;
  193. }
  194. function VXGMP_term(playerId)
  195. {
  196. vxgplayer(playerId).dispose();
  197. }
  198. function VXGMP_fullscreen(playerId, val)
  199. {
  200. if(val == 1){
  201. vxgplayer(playerId).aspectRatioMode(1);
  202. }
  203. else{
  204. vxgplayer(playerId).aspectRatioMode(0);
  205. }
  206. vxgplayer(playerId).fullscreen();
  207. }
  208. function VXGMP_aspectRatioMode(playerId, val)
  209. {
  210. if(val == 1){
  211. vxgplayer(playerId).aspectRatioMode(1);
  212. }
  213. else{
  214. vxgplayer(playerId).aspectRatioMode(0);
  215. }
  216. }
  217. function VXGMP_GetaspectRatioMode(playerId)
  218. {
  219. rc = vxgplayer(playerId).aspectRatioMode();
  220. if(rc == 1) return 1;
  221. else return 2;
  222. }
  223. function VXGMP_SetBuffer(playerId, val)
  224. {
  225. var latency = val * 100;
  226. if(latency < 300) latency = 300;
  227. console.log("VXGMP_SetBuffer : " + latency);
  228. vxgplayer(playerId).latency(latency);
  229. }
  230. function VXGMP_RecStartPlayer(playerId)
  231. {
  232. rc = vxgplayer(playerId).record_start();
  233. }
  234. function VXGMP_RecStopPlayer(playerId)
  235. {
  236. rc = vxgplayer(playerId).record_stop();
  237. sleep(1000);
  238. }
  239. function VXGMP_RecBrowsePlayer(playerId)
  240. {
  241. rc = vxgplayer(playerId).record_stop();
  242. sleep(1000);
  243. downloadBrowse();
  244. }
  245. function VXGMP_RecDownloadPlayer(playerId, filename)
  246. {
  247. rc = vxgplayer(playerId).record_stop();
  248. sleep(1000);
  249. downloadFile(filename);
  250. }
  251. function VXGMP_CustomDigitalZoom(playerId, ratio, x, y)
  252. {
  253. vxgplayer(playerId).setCustomDigitalZoom(ratio, x, y);
  254. }
  255. function VXGMP_Snapshot(playerId)
  256. {
  257. rc = vxgplayer(playerId).takescreenshot();
  258. }
  259. ////////////////////////////////////////////////////////////////////////////////////
  260. // WebSocket
  261. ////////////////////////////////////////////////////////////////////////////////////
  262. function VXGWSMP_createPlayer(id, addr, wsaddr, width, height, buf, target, user, pw) {
  263. var playerId = id;
  264. var div = document.createElement('div');
  265. div.setAttribute("id", playerId);
  266. div.setAttribute("class", "vxgwsplayer");
  267. var runtimePlayers = document.getElementById(target);
  268. runtimePlayers.appendChild(div);
  269. var player = vxgwsplayer(playerId, {
  270. wsurl: wsaddr,
  271. rtspurl: addr,
  272. user: user,
  273. password: pw,
  274. //latency: 500000, //300000, // 300
  275. latency: (300 + (buf * 10)),
  276. width: width,
  277. height: height,
  278. aspect_ratio_mode: 2,
  279. //autohide: 3,
  280. controls: false,
  281. muted: true,
  282. volume: 1.0,
  283. //async: true,
  284. clipname: "dynamicTestClip",
  285. clipH264maxsize: 536870912, //1073741824,
  286. clipG711maxsize: 44640000, //89280000,
  287. //autoreconnect: 1
  288. custom_digital_zoom: true
  289. }).ready(function(){
  290. console.log(' =>ready player '+playerId);
  291. vxgwsplayer(playerId).setSource();
  292. vxgwsplayer(playerId).play();
  293. console.log(' <=ready player '+playerId);
  294. });
  295. if (vxgwsplayer_last_mute == false) {
  296. vxgwsplayer(playerId).mute();
  297. }
  298. }
  299. function VXGWSMP_resizePlayer(playerId, width, height)
  300. {
  301. console.log(' =>VXGWSMP_resizePlayer '+playerId);
  302. vxgwsplayer(playerId).size(width, height);
  303. console.log(' =>VXGWSMP_resizePlayer '+width+' '+height);
  304. }
  305. function VXGWSMP_GetsizePlayer(playerId)
  306. {
  307. var size;
  308. size = vxgwsplayer(playerId).size();
  309. return size;
  310. }
  311. function VXGWSMP_term(playerId)
  312. {
  313. vxgwsplayer(playerId).stop();
  314. vxgwsplayer(playerId).dispose();
  315. }
  316. function VXGWSMP_fullscreen(playerId, val)
  317. {
  318. if(val == 1){
  319. vxgwsplayer(playerId).aspectRatioMode(1);
  320. }
  321. else{
  322. vxgwsplayer(playerId).aspectRatioMode(0);
  323. }
  324. vxgwsplayer(playerId).fullscreen();
  325. }
  326. function VXGWSMP_aspectRatioMode(playerId, val)
  327. {
  328. if(val == 1){
  329. vxgwsplayer(playerId).aspectRatioMode(1);
  330. }
  331. else{
  332. vxgwsplayer(playerId).aspectRatioMode(0);
  333. }
  334. }
  335. function VXGWSMP_GetaspectRatioMode(playerId)
  336. {
  337. rc = vxgwsplayer(playerId).aspectRatioMode();
  338. if(rc == 1) return 1;
  339. else return 2;
  340. }
  341. function VXGWSMP_SetBuffer(playerId, val)
  342. {
  343. vxgwsplayer(playerId).latency(300 + (val*10)); // min: 300ms + (0 ~ 1000)ms
  344. vxgwsplayer(playerId).restart();
  345. }
  346. function VXGWSMP_RecStartPlayer(playerId, filename)
  347. {
  348. vxgwsplayer(playerId).defaultClipName = filename;
  349. rc = vxgwsplayer(playerId).startRecord(3600 * 1000); // 3600s == 1hours
  350. }
  351. function VXGWSMP_RecStopPlayer(playerId)
  352. {
  353. rc = vxgwsplayer(playerId).stopRecord();
  354. }
  355. function VXGWSMP_CustomDigitalZoom(playerId, ratio, x, y)
  356. {
  357. vxgwsplayer(playerId).setCustomDigitalZoom(ratio, x, y);
  358. }
  359. function VXGWSMP_Snapshot(playerId)
  360. {
  361. rc = vxgwsplayer(playerId).takescreenshot();
  362. }
  363. function VXGWSMP_RecGetStatus(playerId)
  364. {
  365. return vxgwsplayer(playerId).recordStatus();
  366. }
  367. var vxgwsplayer_last_mute = true;
  368. function VXGWSMP_VolumeMute(playerId)
  369. {
  370. vxgwsplayer(playerId).mute(); // toggle mute
  371. vxgwsplayer_last_mute = vxgwsplayer(playerId).isMute();
  372. return vxgwsplayer_last_mute;
  373. }
  374. function VXGWSMP_ShowError(playerId, errstr)
  375. {
  376. vxgwsplayer(playerId).showerror(errstr);
  377. }
  378. function VXGWSMP_HideError(playerId)
  379. {
  380. vxgwsplayer(playerId).hideerror();
  381. }
  382. function VXGWSMP_StartBackwardAudio(playerId)
  383. {
  384. vxgwsplayer(playerId).startBackwardAudio();
  385. }
  386. function VXGWSMP_StopBackwardAudio(playerId)
  387. {
  388. vxgwsplayer(playerId).stopBackwardAudio();
  389. }