Browse Source

删除无用文件

huangxiaojing 3 years ago
parent
commit
b24be53e24
100 changed files with 0 additions and 23118 deletions
  1. 0 415
      decoker/screenAndroid/WXdraw.js
  2. 0 1002
      decoker/screenAndroid/WXtrialInterface.html
  3. 0 130
      decoker/screenAndroid/aac.c
  4. 0 1
      decoker/screenAndroid/aac.js
  5. 0 37
      decoker/screenAndroid/aac.js.map
  6. BIN
      decoker/screenAndroid/aac.wasm
  7. 0 3937
      decoker/screenAndroid/aurora.js
  8. 0 77
      decoker/screenAndroid/aurora.js.map
  9. 0 4
      decoker/screenAndroid/buildFaad.sh
  10. 0 24
      decoker/screenAndroid/buildwasm.sh
  11. 0 161
      decoker/screenAndroid/control.js
  12. 0 340
      decoker/screenAndroid/css/WXtrialInterface.css
  13. 0 134
      decoker/screenAndroid/css/homePage.css
  14. 0 13
      decoker/screenAndroid/css/swiper-bundle.min.css
  15. 0 14
      decoker/screenAndroid/css/swiper-bundle.min.js
  16. 0 997
      decoker/screenAndroid/decoder.c
  17. 0 125
      decoker/screenAndroid/helper.js
  18. 0 185
      decoker/screenAndroid/helper5555.js
  19. 0 1728
      decoker/screenAndroid/home.html
  20. 0 1702
      decoker/screenAndroid/homeNew.html
  21. BIN
      decoker/screenAndroid/images/loader-thumb.jpg
  22. BIN
      decoker/screenAndroid/img/fenxiang_icon.png
  23. BIN
      decoker/screenAndroid/img/fenxiang_icon@2x.png
  24. BIN
      decoker/screenAndroid/img/goumai_icon(1).png
  25. BIN
      decoker/screenAndroid/img/goumai_icon.png
  26. BIN
      decoker/screenAndroid/img/goumai_icon@2x(1).png
  27. BIN
      decoker/screenAndroid/img/goumai_icon@2x.png
  28. BIN
      decoker/screenAndroid/img/homebg.png
  29. BIN
      decoker/screenAndroid/img/jia_bu_icon.png
  30. BIN
      decoker/screenAndroid/img/jia_bu_icon@2x.png
  31. BIN
      decoker/screenAndroid/img/jia_ke_icon.png
  32. BIN
      decoker/screenAndroid/img/jia_ke_icon@2x.png
  33. BIN
      decoker/screenAndroid/img/jian_bu_icon.png
  34. BIN
      decoker/screenAndroid/img/jian_bu_icon@2x.png
  35. BIN
      decoker/screenAndroid/img/jian_ke_icon.png
  36. BIN
      decoker/screenAndroid/img/jian_ke_icon@2x.png
  37. BIN
      decoker/screenAndroid/img/kefu_wei_icon.png
  38. BIN
      decoker/screenAndroid/img/kefu_wei_icon@2x.png
  39. BIN
      decoker/screenAndroid/img/kefu_xuanzhong_icon.png
  40. BIN
      decoker/screenAndroid/img/kefu_xuanzhong_icon@2x.png
  41. BIN
      decoker/screenAndroid/img/kefurexian_icon.png
  42. BIN
      decoker/screenAndroid/img/kefurexian_icon@2x.png
  43. BIN
      decoker/screenAndroid/img/kuorong_icon.png
  44. BIN
      decoker/screenAndroid/img/kuorong_icon@2x.png
  45. BIN
      decoker/screenAndroid/img/qq_icon.png
  46. BIN
      decoker/screenAndroid/img/qq_icon@2x.png
  47. BIN
      decoker/screenAndroid/img/shijian_icon.png
  48. BIN
      decoker/screenAndroid/img/shijian_icon@2x.png
  49. BIN
      decoker/screenAndroid/img/wenzi_icon.png
  50. BIN
      decoker/screenAndroid/img/wenzi_icon@2x.png
  51. BIN
      decoker/screenAndroid/img/wode_wei_icon.png
  52. BIN
      decoker/screenAndroid/img/wode_wei_icon@2x.png
  53. BIN
      decoker/screenAndroid/img/wode_xuanzhong_icon.png
  54. BIN
      decoker/screenAndroid/img/wode_xuanzhong_icon@2x.png
  55. BIN
      decoker/screenAndroid/img/xiazai_icon.png
  56. BIN
      decoker/screenAndroid/img/xiazai_icon@2x.png
  57. BIN
      decoker/screenAndroid/img/xuankang_xuan_icon.png
  58. BIN
      decoker/screenAndroid/img/xuankang_xuan_icon@2x.png
  59. BIN
      decoker/screenAndroid/img/xuankuang_wei_icon.png
  60. BIN
      decoker/screenAndroid/img/xuankuang_wei_icon@2x.png
  61. BIN
      decoker/screenAndroid/img/yunshouji_wei_icon.png
  62. BIN
      decoker/screenAndroid/img/yunshouji_wei_icon@2x.png
  63. BIN
      decoker/screenAndroid/img/yunshouji_xuanzhong_icon.png
  64. BIN
      decoker/screenAndroid/img/yunshouji_xuanzhong_icon@2x.png
  65. 0 411
      decoker/screenAndroid/index - 副本.html
  66. 0 382
      decoker/screenAndroid/index.html
  67. 0 2566
      decoker/screenAndroid/jmuxer.js
  68. 0 2563
      decoker/screenAndroid/jmuxer.min.js
  69. 0 669
      decoker/screenAndroid/mobile.vue
  70. 0 3
      decoker/screenAndroid/package-lock.json
  71. 0 126
      decoker/screenAndroid/pcm-player.js
  72. 0 173
      decoker/screenAndroid/temp.html
  73. 0 428
      decoker/screenIosEdit/WXdraw.js
  74. 0 811
      decoker/screenIosEdit/WXtrialInterface.html
  75. 0 340
      decoker/screenIosEdit/css/WXtrialInterface.css
  76. 0 134
      decoker/screenIosEdit/css/homePage.css
  77. 0 13
      decoker/screenIosEdit/css/swiper-bundle.min.css
  78. 0 14
      decoker/screenIosEdit/css/swiper-bundle.min.js
  79. 0 163
      decoker/screenIosEdit/decoder.js
  80. 0 309
      decoker/screenIosEdit/draw.js
  81. 0 1
      decoker/screenIosEdit/ffmpeghelper.js
  82. BIN
      decoker/screenIosEdit/ffmpeghelper.wasm
  83. 0 1
      decoker/screenIosEdit/ffmpeghelper.worker.js
  84. 0 269
      decoker/screenIosEdit/helper.js
  85. 0 185
      decoker/screenIosEdit/helper55.js
  86. 0 1239
      decoker/screenIosEdit/home.html
  87. 0 1192
      decoker/screenIosEdit/homeNew.html
  88. 0 100
      decoker/screenIosEdit/homePage.html
  89. BIN
      decoker/screenIosEdit/img/fenxiang_icon.png
  90. BIN
      decoker/screenIosEdit/img/fenxiang_icon@2x.png
  91. BIN
      decoker/screenIosEdit/img/goumai_icon(1).png
  92. BIN
      decoker/screenIosEdit/img/goumai_icon.png
  93. BIN
      decoker/screenIosEdit/img/goumai_icon@2x(1).png
  94. BIN
      decoker/screenIosEdit/img/goumai_icon@2x.png
  95. BIN
      decoker/screenIosEdit/img/homebg.png
  96. BIN
      decoker/screenIosEdit/img/jia_bu_icon.png
  97. BIN
      decoker/screenIosEdit/img/jia_bu_icon@2x.png
  98. BIN
      decoker/screenIosEdit/img/jia_ke_icon.png
  99. BIN
      decoker/screenIosEdit/img/jia_ke_icon@2x.png
  100. 0 0
      decoker/screenIosEdit/img/jian_bu_icon.png

+ 0 - 415
decoker/screenAndroid/WXdraw.js

@@ -1,415 +0,0 @@
-//画布
-var canvas;
-var context;
-//蒙版
-var canvas_bak = document.getElementById("box");;
-var context_bak;
-
-var canvasWidth = 720;
-var canvasHeight = 1280;
-
-var canvasTop;
-var canvasLeft;
-var winHeight = window.screen.height - window.innerHeight
-var vowidth = window.screen.width
-var topwinHeightDraw = window.screen.height - window.innerHeight + 30; //计算title top 头部
-var numse = window.screen.height //-winHeight
-
-//计算title top 头部
-if (numse <= 70) {
-
-	var voheight = window.screen.height - winHeight - 34 - 20
-} else {
-	console.log("numse>>>", numse)
-	var voheight = window.screen.height - topwinHeightDraw - 20
-}
-
-//console.log("画笔大小>>>",window.innerHeight)
-//画笔大小
-var size = 1;
-var color = '#000000';
-var resolving
-//alert(winHeight)
-var url = window.location.href;
-url = url.split('/')
-
-var query = window.location.search.substring(1);
-// debugger
-// query = "clientType=3&username=WqXTc1593762177&userCardId=377"
-// debugger
-var vars = query.split("&");
-var data = {}
-var clientType = vars.find(e => {
-	return e.startsWith('clientType')
-}) || ''
-var cardIp = vars.find(e => {
-	return e.startsWith('cardIp')
-}) || ''
-var port = vars.find(e => {
-	return e.startsWith('port')
-}) || ''
-
-var sn = vars.find(e => {
-	return e.startsWith('sn')
-}) || ''
-var username = vars.find(e => {
-	return e.startsWith('username')
-}) || ''
-var userCardId = vars.find(e => {
-	return e.startsWith('userCardId')
-}) || ''
-var ip = vars.find(e => {
-	return e.startsWith('ip')
-}) || ''
-
-var data = {}
-data.clientType = clientType.substring(11, clientType.length)
-
-data.cardIp = cardIp.substring(7, cardIp.length)
-
-data.port = port.substring(5, port.length)
-
-data.sn = sn.substring(3, sn.length)
-data.username = username.substring(9, username.length)
-data.userCardId = userCardId.substring(11, userCardId.length)
-data.ip = ip.substring(3, ip.length)
-// var urlss=url[2]
-// urlss = "14.215.128.96"
-urlss = '192.168.31.20'
-// urlss = 'test.androidscloud.com'
-// debugger
-// var cUrl = ''
-// cUrl = "ws://192.168.11.66:9101";
-// var cUrl="wss://www.ted2018.com:9101"
-// var cUrl = "ws://192.168.198.21:9101"
-var cUrl = "ws://14.215.128.97:15508"
-// if (data.clientType == 3) {
-// 	cUrl = "wss://" + urlss + "/authControlWebSocket?" + "clientType=" + data.clientType + "&username=" + data.username +
-// 		"&userCardId=" + data.userCardId
-// } else if (data.clientType == 2) {
-// 	// cUrl = "wss://" + urlss + "/shareWebSocket?" + "clientType=" + data.clientType + "&username=" + data.username +
-// 	// 	"&userCardId=" + data.userCardId + "&ip=" + data.ip
-// 	cUrl = "wss://test.androidscloud.com/videoWebSocket?clientType=1&cardIp=14.215.128.96&port=2005&sn=RK3930C2301900005";
-// } else {
-// 	cUrl = "wss://" + urlss + "/controlWebSocket?" + "clientType=" + data.clientType + "&cardIp=" + data.cardIp + "&port=" +
-// 		data.port + "&sn=" + data.sn
-// }
-console.log(cUrl, 'curl')
-// var cUrl = Number(data.clientType) === 3? "ws://"+urlss+"/authControlWebSocket?"+"clientType="+data.clientType+"&username="+data.username+"&userCardId="+data.userCardId : "ws://"+urlss+"/controlWebSocket?"+"clientType="+data.clientType+"&cardIp="+data.cardIp+"&port="+data.port+"&sn="+data.sn
-var wsss = new WebSocket(cUrl);
-console.log('wsssss==============', wsss)
-wsss.binaryType = 'arraybuffer';
-////
-// wsss = new WebSocket(
-// 	"ws://14.215.128.96/authControlWebSocket?clientType=3&username=WqXTc1593762177&userCardId=377");
-
-wsss.onopen = function() {
-	console.log("onopen==============");
-	var pings = {
-		"event": "getScreenStatus"
-	}
-	wsss.send(JSON.stringify(pings));
-	var bitRate = {
-		"data": {
-			"bitRate": 2243000
-		},
-		"event": "bitRate"
-	}
-	// wsss.send(JSON.stringify(bitRate));
-	wsss.send(ExexuteMove(JSON.stringify(bitRate),data.sn)) 
-};
-// wsss.onmessage = function(event) {
-// 	// console.log("onMessage==============", event);
-// 	// var resets = JSON.parse(event.data)
-// 	// var resets = event.data;
-// 	// resets.errorMsg && alert(resets.errorMsg)
-// 	// resolving = resets.data.orientation
-// 	// if (resolving == 1) {} else {}
-// 	// console.log('>>>resolvingresolvingresolving', resolving)
-
-// };
-wsss.onclose = function(event) {
-	console.log("onclose==============");
-};
-wsss.onerror = function(event) {
-	console.log("onerror==============");
-};
-$('#box').on("click", function() {
-
-	draw_graph('pencil', this)
-})
-//剪切板
-$(".upload").on("click", function() {
-	let texts = $(this).attr("data-text")
-	if (texts == "uploads") {
-		$(".mainbox").css({
-			"display": "block"
-		})
-		$(".sbox").css({
-			"display": "none"
-		})
-	} else if (texts == "Signout") {
-		//		alert()
-
-	}
-})
-
-//home 控制home
-$(".botmat1img").on("click", function() {
-	let codes = $(this).attr("data-text")
-	console.log(codes)
-	if (codes == "home") {
-		// var bitRate = {
-		// 	"data": {
-		// 		"keyCode": 3
-		// 	},
-		// 	"event": "keyCode"
-		// }
-		// console.log("打印主页json", JSON.stringify(bitRate))
-		wsss.send(ExexuteKeyBoard(3),data.sn);
-		// console.log("打印主页json", wsss)
-	} else if (codes == "return") {
-		// var bitRate = {
-		// 	"data": {
-		// 		"keyCode": "4"
-		// 	},
-		// 	"event": "keyCode"
-		// }
-		// wsss.send(JSON.stringify(bitRate));
-		wsss.send(ExexuteKeyBoard(4),data.sn);
-	} else if (codes == "gengduo") {
-		// var bitRate = {
-		// 	"data": {
-		// 		"keyCode": "187"
-		// 	},
-		// 	"event": "keyCode"
-		// }
-		// wsss.send(JSON.stringify(bitRate));
-		wsss.send(ExexuteKeyBoard(187),data.sn);
-	}
-
-})
-//高清控制
-$(".PictureQuality").on("click", function() {
-	$(this).addClass("avit").siblings().removeClass('avit')
-	let id = $(this).attr("data-id")
-	var bitRate = {
-		"data": {
-			"bitRate": id
-		},
-		"event": "bitRate"
-	}
-	wsss.send(ExexuteMove(JSON.stringify(bitRate),data.sn)) 
-	console.log(id)
-})
-
-//画图形
-var draw_graph = function(graphType, obj) {
-	console.log('111》》》', graphType)
-	//把蒙版放于画板上面
-	//$("#canvas_bak").css("z-index",1);
-	$("#container").css("z-index", 30);
-	$("#dedit").css("z-index", 20);
-	//先画在蒙版上 再复制到画布上
-
-	chooseImg(obj);
-	var canDraw = false;
-
-	var startX;
-	var startY;
-
-	//鼠标按下获取 开始xy开始画图
-	var touchstart = function(e) {
-		$('.control-right-img').attr({
-			"data-id": "2"
-		})
-		$(".leftmains").css({
-			"right": "-4rem"
-		})
-		//		.toFixed(2)
-		var touchfor = e.originalEvent.targetTouches; //for 的手指数组
-		var touch = e.originalEvent.targetTouches[0];
-		var thochlethng = e.originalEvent.targetTouches.length
-		//是否横屏
-		if (resolving == 0) {
-			let ping
-			for (let i = 0; i < touchfor.length; i++) {
-				let cawidthXs = touchfor[i].pageY * (1280 / voheight)
-				let caheightYs = 720 - touchfor[i].pageX * (720 / vowidth)
-				ping = {
-					"data": {
-						"action": 0,
-						"count": touchfor.length,
-						"pointerId": i,
-						"x": cawidthXs.toFixed(2),
-						"y": caheightYs.toFixed(2)
-					},
-					"event": "0"
-				}
-			}
-			// wsss.send(JSON.stringify(ping));
-			wsss.send(ExexuteMove(JSON.stringify(ping),data.sn)) 
-			console.log("鼠标按下>>>", ping)
-		} else {
-			let ping
-			for (let i = 0; i < touchfor.length; i++) {
-				let cawidthXs = touchfor[i].pageX * (720 / vowidth)
-				let caheightYs = touchfor[i].pageY * (1280 / voheight)
-				ping = {
-					"data": {
-						"action": 0,
-						"count": touchfor.length,
-						"pointerId": i,
-						"x": cawidthXs.toFixed(2),
-						"y": caheightYs.toFixed(2)
-					},
-					"event": "0"
-				}
-
-			}
-			// wsss.send(JSON.stringify(ping));
-			wsss.send(ExexuteMove(JSON.stringify(ping),data.sn)) 
-			console.log("鼠标按下>>>", ping)
-		}
-
-		canDraw = true;
-
-	};
-
-	//鼠标离开 把蒙版canvas的图片生成到canvas中
-	var touchend = function(e) {
-		var touchfor = e.originalEvent.changedTouches; //for 的手指数组
-		var touch = e.originalEvent.changedTouches[0];
-		var thochlethng = e.originalEvent.changedTouches.length
-		//	 alert(thochlethng)
-		//是否横屏 morePortionUp
-		if (resolving == 0) {
-			let ping
-			for (let i = 0; i < touchfor.length; i++) {
-				let cawidthXs = touchfor[i].pageY * (1280 / voheight)
-				let caheightYs = 720 - touchfor[i].pageX * (720 / vowidth)
-				ping = {
-					"data": {
-						"action": 1,
-						"count": touchfor.length,
-						"pointerId": i,
-						"x": cawidthXs.toFixed(2),
-						"y": caheightYs.toFixed(2)
-					},
-					"event": "1"
-				}
-			}
-
-			// wsss.send(JSON.stringify(ping));
-			wsss.send(ExexuteMove(JSON.stringify(ping),data.sn)) 
-
-		} else {
-			let ping
-			for (let i = 0; i < touchfor.length; i++) {
-				let cawidthXs = touchfor[i].pageX * (720 / vowidth)
-				let caheightYs = touchfor[i].pageY * (1280 / voheight)
-				ping = {
-					"data": {
-						"action": 1,
-						"count": touchfor.length,
-						"pointerId": i,
-						"x": cawidthXs.toFixed(2),
-						"y": caheightYs.toFixed(2)
-					},
-					"event": "1"
-				}
-			}
-
-			// wsss.send(JSON.stringify(ping));
-			wsss.send(ExexuteMove(JSON.stringify(ping),data.sn)) 
-		}
-
-		canDraw = false;
-
-	};
-
-	//清空层 云手机超出屏幕的开关
-	var clearContext = function(type) {
-		canDraw = false;
-	}
-
-	// 鼠标移动
-	var touchmove = function(e) {
-
-		e = e || window.event;
-		var touchfor = e.originalEvent.targetTouches; //for 的手指数组
-		var touch = e.originalEvent.targetTouches[0];
-		var thochlethng = e.originalEvent.targetTouches.length
-		let ping
-		//是否横屏  morePortionMove
-		if (resolving == 0) {
-			let obj = []
-			for (let i = 0; i < touchfor.length; i++) {
-				let cawidthXs = touchfor[i].pageY * (1280 / voheight)
-				let caheightYs = 720 - touchfor[i].pageX * (720 / vowidth)
-
-				ping = {
-					"data": {
-						"action": 2,
-						"count": touchfor.length,
-						"pointerId": i,
-						"x": cawidthXs.toFixed(2),
-						"y": caheightYs.toFixed(2)
-					},
-					"event": "2"
-				}
-
-			}
-
-			// wsss.send(JSON.stringify(ping));
-			wsss.send(ExexuteMove(JSON.stringify(ping),data.sn)) 
-		} else {
-			let ping
-			for (let i = 0; i < touchfor.length; i++) {
-				let cawidthXs = touchfor[i].pageX * (720 / vowidth)
-				let caheightYs = touchfor[i].pageY * (1280 / voheight)
-				ping = {
-					"data": {
-						"action": 2,
-						"count": touchfor.length,
-						"pointerId": i,
-						"x": cawidthXs.toFixed(2),
-						"y": caheightYs.toFixed(2)
-					},
-					"event": "2"
-				}
-
-			}
-
-			// wsss.send(JSON.stringify(ping));
-			wsss.send(ExexuteMove(JSON.stringify(ping),data.sn)) 
-		}
-
-
-
-		//				var ping = {"data":{"action":2,"count":1,"pointerId":0,"x":cawidthX.toFixed(2),"y":caheightY.toFixed(2)},"event":"2"}	    
-
-
-
-	};
-
-	//鼠标离开区域以外 除了涂鸦 都清空
-	var mouseout = function() {
-
-		if (graphType != 'handwriting') {
-			clearContext();
-
-		}
-	}
-
-	$(canvas_bak).unbind();
-	$(canvas_bak).bind('touchstart', touchstart);
-	$(canvas_bak).bind('touchmove', touchmove);
-	$(canvas_bak).bind('touchend', touchend);
-	$(canvas_bak).bind('mouseout', mouseout);
-}
-
-//选择功能按钮 修改样式
-function chooseImg(obj) {
-
-}

File diff suppressed because it is too large
+ 0 - 1002
decoker/screenAndroid/WXtrialInterface.html


+ 0 - 130
decoker/screenAndroid/aac.c

@@ -1,130 +0,0 @@
-#include <memory.h>
-#include <stdlib.h>
-#include "faad.h"
-#include <stdbool.h>
-#include <string.h>
-#include <emscripten.h>
-#include <stdio.h>
-#include <sys/time.h>
-#include <sys/timeb.h>
-#include <unistd.h>
-
-bool hasInit = false;
-
-NeAACDecHandle decoder = 0;
-NeAACDecFrameInfo frame_info;
-
-void PrintArry(unsigned char *buffer, unsigned int size)
-{
-	int i;
-	char data[1024*1024];
-	
-	for(i = 0;i < size;i++)
-	{
-		data[i] = buffer[i];
-	}
-	
-	data[i + 1] = '\0';
-}
-
-int init_decoder(unsigned char* inBuffer, size_t size)
-{  
-    unsigned char channels;
-    unsigned long sampleRate;
-    
-    memset(&frame_info, 0, sizeof(frame_info));
-    decoder = NeAACDecOpen();
-    NeAACDecInit(decoder, inBuffer, size, &sampleRate, &channels);
-    //printf("init_decoder初始化完毕\n");
-    hasInit = true;
-    return 0;
-}
-
-int feedData(unsigned char* out_data, unsigned char* buffer, unsigned int size)
-{
-	int ret = 0;
-	
-    if (!hasInit)
-    {
-        init_decoder(buffer, size);
-    }
-
-    unsigned char *out_buffer = (unsigned char*)NeAACDecDecode(decoder, &frame_info, buffer, size);
-	//printf("frame_info.error %d\n",frame_info.error);
-
-    if (frame_info.error > 0)
-    {		
-        return frame_info.error;
-    }
-    else if(out_buffer && frame_info.samples > 0)//解码成功
-    {
-		ret = frame_info.samples * frame_info.channels;
-		for(int i = 0;i < ret;i++)
-		{
-			 out_data[i] = out_buffer[i];
-		}
-    }
-
-    return ret;
-}
-
-void destroyDecoder()
-{
-	hasInit = false;
-    NeAACDecClose(decoder);
-}
-
-/*bool GetFrame(FILE *file, unsigned char *input, int *len, int *pos)
-{
-    int readByte;
-    int frameLen = 0;
-    unsigned char buffer[6];
-
-    while ((readByte = fread(buffer, 1, 6, file)) > 0)
-    {
-        if ((buffer[0] == 0xff) && ((buffer[1] & 0xf0) == 0xf0))
-        {         
-            frameLen = ((buffer[3] & 0x3) << 11) | ((buffer[4]) << 3) | ((buffer[5]) >> 5);
-            printf("帧长度 %d\n", frameLen);
-            *len = frameLen;
-            fseek(file, *pos, SEEK_SET);
-            fread(input, 1, frameLen, file);
-            *pos = *pos + frameLen;
-            return true;
-        }
-        else
-        {
-            printf("位置没找对\n");
-        }
-    }
-
-    return false;
-}
-
-int main(int argc, char* argv[])
-{
-    int len;
-    int pos = 0;
-    unsigned char buffer[4096] = {0};
-    unsigned char OutBuffer[10240];
-    unsigned char* pcmData = OutBuffer;
-    FILE* file = fopen("test.aac", "rb");
-	if(!file)
-	{
-		printf("找不到AAC文件\n");
-		return -1;
-	}
-	
-    outFile = fopen("shchu.pcm", "wb+");
-
-    while (GetFrame(file, buffer, &len, &pos))
-    {
-        feed_data(pcmData, buffer, len);     
-    }
-
-    fclose(file);
-	fclose(outFile);
-	destroy_decoder();
-	printf("解码完毕\n");
-    return 0;
-}*/

File diff suppressed because it is too large
+ 0 - 1
decoker/screenAndroid/aac.js


File diff suppressed because it is too large
+ 0 - 37
decoker/screenAndroid/aac.js.map


BIN
decoker/screenAndroid/aac.wasm


File diff suppressed because it is too large
+ 0 - 3937
decoker/screenAndroid/aurora.js


File diff suppressed because it is too large
+ 0 - 77
decoker/screenAndroid/aurora.js.map


+ 0 - 4
decoker/screenAndroid/buildFaad.sh

@@ -1,4 +0,0 @@
-#cd /home/github/faad2-2_10_0
-. bootstrap
-emconfigure ./configure --prefix=/usr --enable-shared --without-xmms --without-drm --without-mpeg4ip
-emmake make

+ 0 - 24
decoker/screenAndroid/buildwasm.sh

@@ -1,24 +0,0 @@
-export TOTAL_MEMORY=10485760
-rm *.js *.wasm
-
-export EXPORTED_FUNCTIONS="[  	\
-	'_malloc' \
-	,'_free' \
-	,'_destroyDecoder' \
-	,'_feedData'   \
-]"
-
-export LIBRARY_FUNCTIONS="[\
-    'malloc', \
-    'free'	  \
-]"
-
-#
-emcc aac.c  \
--O3 \
--s WASM=1 \
--I /usr/local -lfaad -lm -L/usr/local/lib  \
--s TOTAL_MEMORY=${TOTAL_MEMORY} \
--s DEFAULT_LIBRARY_FUNCS_TO_INCLUDE="${LIBRARY_FUNCTIONS}" \
--s EXPORTED_FUNCTIONS="${EXPORTED_FUNCTIONS}" \
--o aac.js

+ 0 - 161
decoker/screenAndroid/control.js

@@ -1,161 +0,0 @@
-/**
- * 此文件实现将控制命令封装成协议,具体协议内容请看:
- * 链接:http://note.youdao.com/noteshare?id=dabda6c613adef7a416bd2625cd770a1
- */
-
-/**
- * bcc校验码计算
- * arry: 要计算的数组
- * 返回计算协议中校验位的校验码
- */
-export function calBcc(arry) {
-  var bcc = 0
-  for (let i = 0; i < arry.length; i++) {
-    bcc ^= arry[i]
-  }
-  return bcc
-}
-
-// 数组打印,调试用
-export function PrintArry(data) {
-  var str = ''
-
-  for (let i = 0; i < data.length; i++) {
-    str = str + data[i].toString(16).padStart(2, '0')
-  }
-
-  str = str.toUpperCase()
-  return str
-}
-/**
- * @param {*} sn: 板卡sn号,stirng
- * @param {*} dataType:数据类型,数字
- * @param {*} jsonCmd: json命令
- * 返回值:生成一个Uint8Array,通过websocket发送给板卡
- */
-export function makeFrame(sn, dataType, jsonCmd) {
-  var index = 0
-  var dataLen = jsonCmd.length
-  var frameLen = dataLen + 26
-  var outPut = new Uint8Array(frameLen)
-  outPut[index++] = 0x68
-  outPut[index++] = (dataLen & 0xff000000) >> 24
-  outPut[index++] = (dataLen & 0x00ff0000) >> 16
-  outPut[index++] = (dataLen & 0x0000ff00) >> 8
-  outPut[index++] = dataLen & 0x000000ff
-  outPut[index++] = 0 // 类型为client
-
-  // sn号赋值,string转ascii
-  for (let i = 0; i < sn.length; i++) {
-    outPut[index++] = sn[i].charCodeAt()
-  }
-
-  outPut[index++] = dataType // 指定数据类型为json
-  // json string转ascii
-  for (let i = 0; i < jsonCmd.length; i++) {
-    outPut[index++] = jsonCmd[i].charCodeAt()
-  }
-
-  var bccBuffer = outPut.slice(1, frameLen - 3 + 1) // 忽略协议头和协议尾
-  outPut[index++] = calBcc(bccBuffer)
-  outPut[index++] = 0x16
-  return outPut
-}
-
-/**
- * 触发键盘事件, code表示键盘值
- * 音量加减、home键、back事件(keyCode的值分别表示为25减音量,24加音量,4为返回键,3为home键,187为切换菜单)
- */
-export function ExexuteKeyDown(code, sn) {
-  var jsonObj = { 'data': { 'keyCode': code.toString() }, 'type': 'keyDown' }
-  var json = JSON.stringify(jsonObj)
-  return makeFrame(sn, 0, json)
-}
-
-// 触发鼠标按下事件,x:x坐标, y:y坐标
-export function ExexuteMouseDown(x, y, sn) {
-  var jsonObj = { 'data': { 'action': 0, 'count': 1, 'pointerId': 0, 'x': x, 'y': y }, 'type': '0' }
-  var json = JSON.stringify(jsonObj)
-  return makeFrame(sn, 0, json)
-}
-
-// 触发鼠标移动事件,x:x坐标, y:y坐标
-export function ExexuteMouseMove(x, y, sn) {
-  var jsonObj = { 'data': { 'action': 2, 'count': 1, 'pointerId': 0, 'x': x, 'y': y }, 'type': '2' }
-  var json = JSON.stringify(jsonObj)
-  return makeFrame(sn, 0, json)
-}
-
-// 触发鼠标抬起事件,x:x坐标, y:y坐标
-export function ExexuteMouseUp(x, y, sn) {
-  var jsonObj = { 'data': { 'action': 1, 'count': 1, 'pointerId': 0, 'x': x, 'y': y }, 'type': '1' }
-  var json = JSON.stringify(jsonObj)
-  return makeFrame(sn, 0, json)
-}
-
-// 设置像素(200:自动/400000:极速/2243000:标清/3072000:高清)
-export function ExexutePixel(bitRate, sn) {
-  const jsonObj = { 'data': { 'bitRate': Number(bitRate) }, 'type': 'setBitRate' }
-  const json = JSON.stringify(jsonObj)
-  return makeFrame(sn, 0, json)
-}
-
-// 关闭连接事件
-export function ExexuteCloseServer(sn) {
-  const jsonObj = { 'data': { 'x': '0', 'y': '0' }, 'type': 'closeServer' }
-  const json = JSON.stringify(jsonObj)
-  return makeFrame(sn, 0, json)
-}
-
-// 根据报文识别屏幕方向, 0横屏,1竖屏
-export function CheckScreenDirection(data) {
-  let screen
-  if (data[0] === 0 && data[1] === 0 && data[2] === 0 && data[3] === 1) {
-    if (data[4] === 1 && data[5] === 1) {
-      if (data[6] === 1) {
-        screen = data[7]
-        return screen
-      }
-    }
-  }
-}
-
-// 加个请求I帧的报文
-export function RequestIFrame(sn) {
-  var outPut = new Uint8Array([0x20])
-  return makeFrameExtend(sn, 6, outPut)
-}
-
-function makeFrameExtend(sn, dataType, body) {
-  var index = 0
-  var dataLen = body.length
-  var frameLen = dataLen + 26
-  var outPut = new Uint8Array(frameLen)
-  outPut[index++] = 0x68
-  outPut[index++] = (dataLen & 0xff000000) >> 24
-  outPut[index++] = (dataLen & 0x00ff0000) >> 16
-  outPut[index++] = (dataLen & 0x0000ff00) >> 8
-  outPut[index++] = dataLen & 0x000000ff
-  outPut[index++] = 0 // 类型为client
-
-  // sn号赋值,string转ascii
-  for (let i = 0; i < sn.length; i++) {
-    outPut[index++] = sn[i].charCodeAt()
-  }
-
-  outPut[index++] = dataType // 指定数据类型为json
-  // json string转ascii
-  for (let i = 0; i < body.length; i++) {
-    outPut[index++] = body[i]
-  }
-
-  var bccBuffer = outPut.slice(1, frameLen - 3 + 1) // 忽略协议头和协议尾
-  outPut[index++] = calBcc(bccBuffer)
-  outPut[index++] = 0x16
-  return outPut
-}
-
-export function ConfigChannel(sn) {
-  var outPut = new Uint8Array([0x07])
-  return makeFrameExtend(sn, 6, outPut)
-}

+ 0 - 340
decoker/screenAndroid/css/WXtrialInterface.css

@@ -1,340 +0,0 @@
-body {
-				font-size: .2592592593rem;
-				margin: 0 auto;
-				width: 100%;
-				min-width: 320px;
-			}
-			
-			.h-player {
-				height: 100%;
-				overflow: hidden;
-				background: #000;
-			}
-			
-			.container {
-				width: 100%;
-				height: 100%;
-				position: relative;
-				user-select: none;
-			}
-			
-			#video1 {
-				display: block;
-				width: 100%;
-				height: 100%;
-				top: 0px;
-				left: 0px;
-				opacity: 1;
-			}
-			
-			#box {
-				width: 100%;
-				height: 100%;
-				position: absolute;
-				left: 0;
-				top: 0;
-				z-index: 9999;
-				/*width: 667px;
-    height: 375px; http://192.168.31.8:8848/cloudmMobilePhone1.11/Player/trialInterface2.html
-    position: absolute;
-    left: -146px;
-    top: 146px;
-   background: red;*/
-				/*    transform: rotate(-90deg);*/
-				/* opacity: 0.3;*/
-			}
-			
-			.scroll {
-				position: absolute;
-				/* overflow: scroll; */
-				-webkit-overflow-scrolling: touch;
-				top: 0;
-				left: 0;
-				bottom: 0;
-				right: 0;
-			}
-			
-			body:before {
-				width: 100%;
-				height: 100%;
-				content: ' ';
-				position: fixed;
-				z-index: -1;
-				top: 0;
-				left: 0;
-				background: #000;
-			}
-			
-			#wine {
-				user-select: none;
-				-webkit-user-drag: none;
-				position: absolute;
-				z-index: 0;
-				/*  visibility: hidden;*/
-			}
-			
-			#video1 {
-				/*	 transform: rotate(180deg);*/
-			}
-			
-			canvas {
-				display: block;
-				width: 100%;
-				height: 100%;
-				z-index: 999;
-			}
-			/*主屏*/
-			
-			.control {
-				width: 900px;
-				overflow: hidden;
-				margin: 0 auto;
-				margin-top: 90px;
-				margin-bottom: 17px;
-			}
-			
-			.control-left-img {
-				width: 26px;
-				height: 26px;
-			}
-			
-			.control-left-img img {
-				width: 100%;
-				height: 100%;
-			}
-			
-			#mainScreen-main {
-				/* overflow: hidden; */
-				user-select: none;
-				-webkit-user-drag: none;
-				position: relative;
-				z-index: 0;
-				width: 100%;
-				height: 100%;
-				top: 0px;
-				/* left: 652.667px; */
-				/* left: 270PX; */
-				/* transform-origin: 0% 0%; */
-				background: #000;
-			}
-			
-			#mocan {
-				position: absolute;
-				left: -269px;
-				top: 2px;
-				/* opacity: 0.2; */
-				width: 901px;
-				height: 555px;
-				z-index: 9999;
-				opacity: 0.7;
-			}
-			
-			#no-ne {
-				width: 100%;
-				height: 100%;
-				position: absolute;
-				top: 0;
-				background: #000000;
-				z-index: 99999;
-				font-size: 18px;
-				color: #FFFFFF;
-				text-align: center;
-			}
-			
-			.no-ne-text {
-				margin-top: 60%;
-			}
-			
-			.no-ne-an {
-				width: 171px;
-				height: 47px;
-				background: #eb6100;
-				line-height: 47px;
-				text-align: center;
-				color: #FFFFFF;
-				margin: 0 auto;
-				margin-top: 20px;
-			}
-			
-			.container .muted {
-				position: absolute;
-				right: .46296rem;
-				top: .46296rem;
-				z-index: 9999999;
-				/*background: #000;*/
-				border-radius: 50%;
-				   /* opacity: 0.5;*/
-			}
-			
-			.muted {
-				width: 2.62963rem;
-				height: 2.62963rem;
-				background-position: -1.78704rem -8.43519rem;
-			}
-			
-			html {
-				height: 100%
-			}
-			
-			.control-right-img {
-				width: 42px;
-				height: 42px;
-				margin: 0 auto;
-				/* margin: 1rem; */
-				margin-top: 0.6rem;
-			}
-			
-			.control-right-img img {
-				width: 100%;
-				height: 100%;
-			}
-			
-			.leftmains {
-				width: 3.5rem;
-				height: 100%;
-				background: #333333;
-				position: fixed;
-				right: 0rem;
-				top: 0;
-					
-transition: all 0.2s ease-in;
-			}
-			
-			.PictureQualityMain {
-				margin-top: 3rem;
-			}
-			
-			.PictureQuality {
-				margin: 0 auto;
-				width: 2.5rem;
-				height: 1.8rem;
-				line-height: 1.8rem;
-				color: #fff;
-				text-align: center;
-				font-size: 15px;
-				margin-top: 1rem;
-			}
-			
-			.avit {
-				background: rgba(255, 255, 255, 1);
-				color: #000 !important;
-				border-radius: 3px;
-			}
-			
-			.upload {
-				margin: 0 auto;
-				width: 3rem;
-				height: 1.8rem;
-				line-height: 1.8rem;
-				color: #fff;
-				text-align: center;
-				font-size: 16px;
-				margin-top: 3rem;
-			}
-			
-			.upload img {
-				width: 1.5rem;
-				height: 1.5rem;
-			}
-			
-			.upload div {
-				margin-top: -0.5rem;
-				font-size: 14px;
-			}
-			
-			.operation {
-				margin-top: 9rem;
-			}
-			
-			.bottommains {
-				width: 100%;
-				height: 50px;
-				background: #333333;
-				position: fixed;
-				left: 0;
-				bottom: 0;
-			}
-			
-			.botmat1 {
-				width: 33%;
-				float: left;
-			}
-			
-			.botmat1img {
-				margin: 0 auto;
-				width: 1.5rem;
-				height: 1.5rem;
-				margin-top: 0.5rem;
-			}
-			
-			.botmat1img img {
-				width: 100%;
-				height: 100%;
-			}
-			
-			.mainbox {
-				width: 18rem;
-				height: 10rem;
-				background: #fff;
-				position: fixed;
-				top: 38%;
-				left: 5%;
-				border-radius: 5px;
-			}
-			
-			.boxTitle {
-				text-align: center;
-				font-size: 18px;
-				padding: 10px 0px;
-			}
-			
-			.boxText {
-				text-align: center;
-				font-size: 16px;
-			}
-			
-			.boxbt {
-				width: 60%;
-				height: 2.5rem;
-				background: #0886F5;
-				margin: 0 auto;
-				font-size: 16px;
-				text-align: center;
-				line-height: 2.5rem;
-				color: #fff;
-				border-radius: 5px;
-				margin-top: 1rem;
-			}
-			
-			.sbox {
-				width: 18rem;
-				height: 5.5rem;
-				background: #fff;
-				position: fixed;
-				top: 38%;
-				left: 5%;
-				border-radius: 5px;
-			}
-			
-			.sboxText {
-				padding: 17px;
-				font-size: 16px;
-			}
-			
-			.sboxbu {
-				text-align: right;
-				color: #0886F5;
-				font-size: 16px;
-				margin-right: 2rem;
-			}
-			
-			.boximg {
-				position: absolute;
-				width: 1rem;
-				height: 1rem;
-				left: 45%;
-				bottom: -22%;
-			}
-			#showsuss{
-				display: none;
-			}

+ 0 - 134
decoker/screenAndroid/css/homePage.css

@@ -1,134 +0,0 @@
-* {
-	margin: 0;
-	padding: 0;
-}
-
-.heads {
-	padding: 40px 30px 0px 30px;
-	overflow: hidden;
-}
-
-.heads-left {
-	color: #3399FF;
-}
-
-.heads-right {
-	width: 60px;
-	height: 60px;
-}
-
-.heads-right image {
-	width: 100%;
-	height: 100%;
-}
-
-.left {
-	float: left;
-}
-
-.right {
-	float: right;
-}
-
-#wine {
-	width: 100%;
-	height: 100%;
-}
-
-.newhelp {
-	display: flex;
-	font-size: 12px;
-	font-family: PingFangSC-Regular, PingFang SC;
-	font-weight: 400;
-	color: #999999;
-	line-height: 17px;
-	align-items: center;
-	position: absolute;
-	top: 0;
-	left: 0;
-	margin-top: 10px;
-	margin-left: 15px;
-}
-
-.newhelp .font {
-	text-decoration: underline;
-	margin-left: 2px;
-}
-
-.newhelp .helpImg {
-	width: 0.875rem;
-	height: 0.875rem;
-}
-
-.newhelp .helpImg img {
-	width: 100%;
-	height: 100%;
-}
-
-.buyIcon {
-	position: absolute;
-	top: 0;
-	right: 0;
-	/* 	margin-top: 0.625rem;
-	margin-right: 0.625rem;
-	 */
-}
-
-.swiper-container {
-	width: 100%;
-	height: 100%;
-}
-
-.swiper-slide {
-	/* padding: 43px 53px; */
-	padding: 12% 14%;
-	box-sizing: border-box;
-	text-align: center;
-	font-size: 18px;
-	/* background: #fff; */
-	/* height: 667px; */
-	height: 100%;
-	/* Center slide text vertically */
-	display: -webkit-box;
-	display: -ms-flexbox;
-	display: -webkit-flex;
-	display: flex;
-	-webkit-box-pack: center;
-	-ms-flex-pack: center;
-	-webkit-justify-content: center;
-	justify-content: center;
-	-webkit-box-align: center;
-	-ms-flex-align: center;
-	-webkit-align-items: center;
-	align-items: center;
-}
-
-.swiper-button-next {
-	width: 15px;
-	height: 15px;
-	background: url(../../static/img/xia_icon.png);
-	right: 15px;
-}
-
-.swiper-button-prev {
-	width: 15px;
-	height: 15px;
-	background: url(../../static/img/shang_icon.png);
-	left: 15px;
-}
-
-.swiper-button-next:after,
-.swiper-container-rtl .swiper-button-prev:after {
-	content: "" !important;
-}
-
-.swiper-button-prev:after,
-.swiper-container-rtl .swiper-button-next:after {
-	content: "" !important;
-}
-
-.thl-time {
-	text-align: left;
-	margin-left: -0.4rem !important;
-	c
-}

File diff suppressed because it is too large
+ 0 - 13
decoker/screenAndroid/css/swiper-bundle.min.css


File diff suppressed because it is too large
+ 0 - 14
decoker/screenAndroid/css/swiper-bundle.min.js


+ 0 - 997
decoker/screenAndroid/decoder.c

@@ -1,997 +0,0 @@
-#include <stdio.h>
-#include <sys/time.h>
-#include <sys/timeb.h>
-#include <unistd.h>
-
-typedef void(*VideoCallback)(unsigned char *buff, int size, double timestamp);
-typedef void(*AudioCallback)(unsigned char *buff, int size, double timestamp);
-typedef void(*RequestCallback)(int offset, int available);
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "libavcodec/avcodec.h"
-#include "libavformat/avformat.h"
-#include "libavutil/fifo.h"
-//#include "libswscale/swscale.h"
-
-#define MIN(X, Y)  ((X) < (Y) ? (X) : (Y))
-
-const int kCustomIoBufferSize = 32 * 1024;
-const int kInitialPcmBufferSize = 128 * 1024;
-const int kDefaultFifoSize = 1 * 1024 * 1024;
-const int kMaxFifoSize = 16 * 1024 * 1024;
-
-typedef enum ErrorCode {
-    kErrorCode_Success = 0,
-    kErrorCode_Invalid_Param,
-    kErrorCode_Invalid_State,
-    kErrorCode_Invalid_Data,
-    kErrorCode_Invalid_Format,
-    kErrorCode_NULL_Pointer,
-    kErrorCode_Open_File_Error,
-    kErrorCode_Eof,
-    kErrorCode_FFmpeg_Error,
-    kErrorCode_Old_Frame
-} ErrorCode;
-
-typedef enum LogLevel {
-    kLogLevel_None, //Not logging.
-    kLogLevel_Core, //Only logging core module(without ffmpeg).
-    kLogLevel_All   //Logging all, with ffmpeg.
-} LogLevel;
-
-typedef struct WebDecoder {
-    AVFormatContext *avformatContext;
-    AVCodecContext *videoCodecContext;
-    AVCodecContext *audioCodecContext;
-    AVFrame *avFrame;
-    int videoStreamIdx;
-    int audioStreamIdx;
-    VideoCallback videoCallback;
-    AudioCallback audioCallback;
-    RequestCallback requestCallback;
-    unsigned char *yuvBuffer;
-    //unsigned char *rgbBuffer;
-    unsigned char *pcmBuffer;
-    int currentPcmBufferSize;
-    int videoBufferSize;
-    int videoSize;
-    //struct SwsContext* swsCtx;
-    unsigned char *customIoBuffer;
-    FILE *fp;
-    char fileName[64];
-    int64_t fileSize;
-    int64_t fileReadPos;
-    int64_t fileWritePos;
-    int64_t lastRequestOffset;
-    double beginTimeOffset;
-    int accurateSeek;
-    // For streaming.
-    int isStream;
-    AVFifoBuffer *fifo;
-    int fifoSize;
-} WebDecoder;
-
-WebDecoder *decoder = NULL;
-LogLevel logLevel = kLogLevel_None;
-
-int getAailableDataSize();
-
-unsigned long getTickCount() {
-    struct timespec ts;
-    clock_gettime(CLOCK_MONOTONIC, &ts);
-    return ts.tv_sec * (unsigned long)1000 + ts.tv_nsec / 1000000;
-}
-
-void simpleLog(const char* format, ...) {
-    if (logLevel == kLogLevel_None) {
-        return;
-    }
-
-    char szBuffer[1024] = { 0 };
-    char szTime[32]		= { 0 };
-    char *p				= NULL;
-    int prefixLength	= 0;
-    const char *tag		= "Core";
-    struct tm tmTime;
-    struct timeb tb;
-
-    ftime(&tb);
-    localtime_r(&tb.time, &tmTime);
-
-    if (1) {
-        int tmYear		= tmTime.tm_year + 1900;
-        int tmMon		= tmTime.tm_mon + 1;
-        int tmMday		= tmTime.tm_mday;
-        int tmHour		= tmTime.tm_hour;
-        int tmMin		= tmTime.tm_min;
-        int tmSec		= tmTime.tm_sec;
-        int tmMillisec	= tb.millitm;
-        sprintf(szTime, "%d-%d-%d %d:%d:%d.%d", tmYear, tmMon, tmMday, tmHour, tmMin, tmSec, tmMillisec);
-    }
-
-    prefixLength = sprintf(szBuffer, "[%s][%s][DT] ", szTime, tag);
-    p = szBuffer + prefixLength;
-    
-    if (1) {
-        va_list ap;
-        va_start(ap, format);
-        vsnprintf(p, 1024 - prefixLength, format, ap);
-        va_end(ap);
-    }
-
-    printf("%s\n", szBuffer);
-}
-
-void ffmpegLogCallback(void* ptr, int level, const char* fmt, va_list vl) {
-    static int printPrefix	= 1;
-    static int count		= 0;
-    static char prev[1024]	= { 0 };
-    char line[1024]			= { 0 };
-    static int is_atty;
-    AVClass* avc = ptr ? *(AVClass**)ptr : NULL;
-    if (level > AV_LOG_DEBUG) {
-        return;
-    }
-
-    line[0] = 0;
-
-    if (printPrefix && avc) {
-        if (avc->parent_log_context_offset) {
-            AVClass** parent = *(AVClass***)(((uint8_t*)ptr) + avc->parent_log_context_offset);
-            if (parent && *parent) {
-                snprintf(line, sizeof(line), "[%s @ %p] ", (*parent)->item_name(parent), parent);
-            }
-        }
-        snprintf(line + strlen(line), sizeof(line) - strlen(line), "[%s @ %p] ", avc->item_name(ptr), ptr);
-    }
-
-    vsnprintf(line + strlen(line), sizeof(line) - strlen(line), fmt, vl);
-    line[strlen(line) + 1] = 0;
-    simpleLog("%s", line);
-}
-
-int openCodecContext(AVFormatContext *fmtCtx, enum AVMediaType type, int *streamIdx, AVCodecContext **decCtx) {
-    int ret = 0;
-    do {
-        int streamIndex		= -1;
-        AVStream *st		= NULL;
-        AVCodec *dec		= NULL;
-        AVDictionary *opts	= NULL;
-
-        ret = av_find_best_stream(fmtCtx, type, -1, -1, NULL, 0);
-        if (ret < 0) {
-            simpleLog("Could not find %s stream.", av_get_media_type_string(type));
-            break;
-        }
-
-        streamIndex = ret;
-        st = fmtCtx->streams[streamIndex];
-
-        dec = avcodec_find_decoder(st->codecpar->codec_id);
-        if (!dec) {
-            simpleLog("Failed to find %s codec %d.", av_get_media_type_string(type), st->codecpar->codec_id);
-            ret = AVERROR(EINVAL);
-            break;
-        }
-
-        *decCtx = avcodec_alloc_context3(dec);
-        if (!*decCtx) {
-            simpleLog("Failed to allocate the %s codec context.", av_get_media_type_string(type));
-            ret = AVERROR(ENOMEM);
-            break;
-        }
-
-        if ((ret = avcodec_parameters_to_context(*decCtx, st->codecpar)) != 0) {
-            simpleLog("Failed to copy %s codec parameters to decoder context.", av_get_media_type_string(type));
-            break;
-        }
-
-        av_dict_set(&opts, "refcounted_frames", "0", 0);
-
-        if ((ret = avcodec_open2(*decCtx, dec, NULL)) != 0) {
-            simpleLog("Failed to open %s codec.", av_get_media_type_string(type));
-            break;
-        }
-
-        *streamIdx = streamIndex;
-        avcodec_flush_buffers(*decCtx);
-    } while (0);
-
-    return ret;
-}
-
-void closeCodecContext(AVFormatContext *fmtCtx, AVCodecContext *decCtx, int streamIdx) {
-    do {
-        if (fmtCtx == NULL || decCtx == NULL) {
-            break;
-        }
-
-        if (streamIdx < 0 || streamIdx >= fmtCtx->nb_streams) {
-            break;
-        }
-
-        fmtCtx->streams[streamIdx]->discard = AVDISCARD_ALL;
-        avcodec_close(decCtx);
-    } while (0);
-}
-
-ErrorCode copyYuvData(AVFrame *frame, unsigned char *buffer, int width, int height) {
-    ErrorCode ret		= kErrorCode_Success;
-    unsigned char *src	= NULL;
-    unsigned char *dst	= buffer;
-    int i = 0;
-    do {
-        if (frame == NULL || buffer == NULL) {
-            ret = kErrorCode_Invalid_Param;
-            break;
-        }
-
-        if (!frame->data[0] || !frame->data[1] || !frame->data[2]) {
-            ret = kErrorCode_Invalid_Param;
-            break;
-        }
-
-        for (i = 0; i < height; i++) {
-            src = frame->data[0] + i * frame->linesize[0];
-            memcpy(dst, src, width);
-            dst += width;
-        }
-
-        for (i = 0; i < height / 2; i++) {
-            src = frame->data[1] + i * frame->linesize[1];
-            memcpy(dst, src, width / 2);
-            dst += width / 2;
-        }
-
-        for (i = 0; i < height / 2; i++) {
-            src = frame->data[2] + i * frame->linesize[2];
-            memcpy(dst, src, width / 2);
-            dst += width / 2;
-        }
-    } while (0);
-    return ret;	
-}
-
-/*
-ErrorCode yuv420pToRgb32(unsigned char *yuvBuff, unsigned char *rgbBuff, int width, int height) {
-    ErrorCode ret = kErrorCode_Success;
-    AVPicture yuvPicture, rgbPicture;
-    uint8_t *ptmp = NULL;
-    do {
-        if (yuvBuff == NULL || rgbBuff == NULL) {
-            ret = kErrorCode_Invalid_Param
-            break;
-        }
-
-        if (decoder == NULL || decoder->swsCtx == NULL) {
-            ret = kErrorCode_Invalid_Param
-            break;
-        }
-
-        
-        avpicture_fill(&yuvPicture, yuvBuff, AV_PIX_FMT_YUV420P, width, height);
-        avpicture_fill(&rgbPicture, rgbBuff, AV_PIX_FMT_RGB32, width, height);
-
-        ptmp = yuvPicture.data[1];
-        yuvPicture.data[1] = yuvPicture.data[2];
-        yuvPicture.data[2] = ptmp;
-
-        sws_scale(decoder->swsCtx, yuvPicture.data, yuvPicture.linesize, 0, height, rgbPicture.data, rgbPicture.linesize);
-    } while (0);
-    return ret;
-}
-*/
-
-int roundUp(int numToRound, int multiple) {
-    return (numToRound + multiple - 1) & -multiple;
-}
-
-ErrorCode processDecodedVideoFrame(AVFrame *frame) {
-    ErrorCode ret = kErrorCode_Success;
-    double timestamp = 0.0f;
-    do {
-        if (frame == NULL ||
-            decoder->videoCallback == NULL ||
-            decoder->yuvBuffer == NULL ||
-            decoder->videoBufferSize <= 0) {
-            ret = kErrorCode_Invalid_Param;
-            break;
-        }
-
-        if (decoder->videoCodecContext->pix_fmt != AV_PIX_FMT_YUV420P) {
-            simpleLog("Not YUV420P, but unsupported format %d.", decoder->videoCodecContext->pix_fmt);
-            ret = kErrorCode_Invalid_Format;
-            break;
-        }
-
-        ret = copyYuvData(frame, decoder->yuvBuffer, decoder->videoCodecContext->width, decoder->videoCodecContext->height);
-        if (ret != kErrorCode_Success) {
-            break;
-        }
-
-        /*
-        ret = yuv420pToRgb32(decoder->yuvBuffer, decoder->rgbBuffer, decoder->videoCodecContext->width, decoder->videoCodecContext->height);
-        if (ret != kErrorCode_Success) {
-            break;
-        }
-        */
-
-        timestamp = (double)frame->pts * av_q2d(decoder->avformatContext->streams[decoder->videoStreamIdx]->time_base);
-
-        if (decoder->accurateSeek && timestamp < decoder->beginTimeOffset) {
-            //simpleLog("video timestamp %lf < %lf", timestamp, decoder->beginTimeOffset);
-            ret = kErrorCode_Old_Frame;
-            break;
-        }
-        decoder->videoCallback(decoder->yuvBuffer, decoder->videoSize, timestamp);
-    } while (0);
-    return ret;
-}
-
-ErrorCode processDecodedAudioFrame(AVFrame *frame) {
-    ErrorCode ret       = kErrorCode_Success;
-    int sampleSize      = 0;
-    int audioDataSize   = 0;
-    int targetSize      = 0;
-    int offset          = 0;
-    int i               = 0;
-    int ch              = 0;
-    double timestamp    = 0.0f;
-    do {
-        if (frame == NULL) {
-            ret = kErrorCode_Invalid_Param;
-            break;
-        }
-
-        sampleSize = av_get_bytes_per_sample(decoder->audioCodecContext->sample_fmt);
-        if (sampleSize < 0) {
-            simpleLog("Failed to calculate data size.");
-            ret = kErrorCode_Invalid_Data;
-            break;
-        }
-
-        if (decoder->pcmBuffer == NULL) {
-            decoder->pcmBuffer = (unsigned char*)av_mallocz(kInitialPcmBufferSize);
-            decoder->currentPcmBufferSize = kInitialPcmBufferSize;
-            simpleLog("Initial PCM buffer size %d.", decoder->currentPcmBufferSize);
-        }
-
-        audioDataSize = frame->nb_samples * decoder->audioCodecContext->channels * sampleSize;
-        if (decoder->currentPcmBufferSize < audioDataSize) {
-            targetSize = roundUp(audioDataSize, 4);
-            simpleLog("Current PCM buffer size %d not sufficient for data size %d, round up to target %d.",
-                decoder->currentPcmBufferSize,
-                audioDataSize,
-                targetSize);
-            decoder->currentPcmBufferSize = targetSize;
-            av_free(decoder->pcmBuffer);
-            decoder->pcmBuffer = (unsigned char*)av_mallocz(decoder->currentPcmBufferSize);
-        }
-
-        for (i = 0; i < frame->nb_samples; i++) {
-            for (ch = 0; ch < decoder->audioCodecContext->channels; ch++) {
-                memcpy(decoder->pcmBuffer + offset, frame->data[ch] + sampleSize * i, sampleSize);
-                offset += sampleSize;
-            }
-        }
-
-        timestamp = (double)frame->pts * av_q2d(decoder->avformatContext->streams[decoder->audioStreamIdx]->time_base);
-
-        if (decoder->accurateSeek && timestamp < decoder->beginTimeOffset) {
-            //simpleLog("audio timestamp %lf < %lf", timestamp, decoder->beginTimeOffset);
-            ret = kErrorCode_Old_Frame;
-            break;
-        }
-        if (decoder->audioCallback != NULL) {
-            decoder->audioCallback(decoder->pcmBuffer, audioDataSize, timestamp);
-        }
-    } while (0);
-    return ret;
-}
-
-ErrorCode decodePacket(AVPacket *pkt, int *decodedLen) {
-    int ret = 0;
-    int isVideo = 0;
-    AVCodecContext *codecContext = NULL;
-
-    if (pkt == NULL || decodedLen == NULL) {
-        simpleLog("decodePacket invalid param.");
-        return kErrorCode_Invalid_Param;
-    }
-
-    *decodedLen = 0;
-
-    if (pkt->stream_index == decoder->videoStreamIdx) {
-        codecContext = decoder->videoCodecContext;
-        isVideo = 1;
-    } else if (pkt->stream_index == decoder->audioStreamIdx) {
-        codecContext = decoder->audioCodecContext;
-        isVideo = 0;
-    } else {
-        return kErrorCode_Invalid_Data;
-    }
-
-    ret = avcodec_send_packet(codecContext, pkt);
-    if (ret < 0) {
-        simpleLog("Error sending a packet for decoding %d.", ret);
-        return kErrorCode_FFmpeg_Error;
-    }
-
-    while (ret >= 0) {
-        ret = avcodec_receive_frame(codecContext, decoder->avFrame);
-        if (ret == AVERROR(EAGAIN)) {
-            return kErrorCode_Success;
-        } else if (ret == AVERROR_EOF) {
-            return kErrorCode_Eof;
-        } else if (ret < 0) {
-            simpleLog("Error during decoding %d.", ret);
-            return kErrorCode_FFmpeg_Error;
-        } else {
-            int r = isVideo ? processDecodedVideoFrame(decoder->avFrame) : processDecodedAudioFrame(decoder->avFrame);
-            if (r == kErrorCode_Old_Frame) {
-                return r;
-            }
-        }
-    }
-
-    *decodedLen = pkt->size;
-    return kErrorCode_Success;
-}
-
-int readFromFile(uint8_t *data, int len) {
-    //simpleLog("readFromFile %d.", len);
-    int32_t ret         = -1;
-    int availableBytes  = 0;
-    int canReadLen      = 0;
-    do {
-        if (decoder->fp == NULL) {
-            break;
-        }
-
-        availableBytes = decoder->fileWritePos - decoder->fileReadPos;
-        if (availableBytes <= 0) {
-            break;
-        }
-
-        fseek(decoder->fp, decoder->fileReadPos, SEEK_SET);
-        canReadLen = MIN(availableBytes, len);
-        fread(data, canReadLen, 1, decoder->fp);
-        decoder->fileReadPos += canReadLen;
-        ret = canReadLen;
-    } while (0);
-    //simpleLog("readFromFile ret %d.", ret);
-    return ret;
-}
-
-int readFromFifo(uint8_t *data, int len) {
-    //simpleLog("readFromFifo %d.", len);
-    int32_t ret         = -1;
-    int availableBytes  = 0;
-    int canReadLen      = 0;
-    do {
-        if (decoder->fifo == NULL) {
-            break;
-        }	
-
-        availableBytes = av_fifo_size(decoder->fifo);
-        if (availableBytes <= 0) {
-            break;
-        }
-
-        canReadLen = MIN(availableBytes, len);
-        av_fifo_generic_read(decoder->fifo, data, canReadLen, NULL);
-        ret = canReadLen;
-    } while (0);
-    //simpleLog("readFromFifo ret %d, left %d.", ret, av_fifo_size(decoder->fifo));
-    return ret;
-}
-
-int readCallback(void *opaque, uint8_t *data, int len) {
-    //simpleLog("readCallback %d.", len);
-    int32_t ret         = -1;
-    do {
-        if (decoder == NULL) {
-            break;
-        }
-
-        if (data == NULL || len <= 0) {
-            break;
-        }		
-
-        ret = decoder->isStream ? readFromFifo(data, len) : readFromFile(data, len);
-    } while (0);
-    //simpleLog("readCallback ret %d.", ret);
-    return ret;
-}
-
-int64_t seekCallback(void *opaque, int64_t offset, int whence) {
-    int64_t ret         = -1;
-    int64_t pos         = -1;
-    int64_t req_pos     = -1;
-    //simpleLog("seekCallback %lld %d.", offset, whence);
-    do {
-        if (decoder == NULL || decoder->isStream || decoder->fp == NULL) {
-            break;
-        }
-
-        if (whence == AVSEEK_SIZE) {
-            ret = decoder->fileSize;
-            break;
-        }
-
-        if (whence != SEEK_END && whence != SEEK_SET && whence != SEEK_CUR) {
-            break;
-        }
-
-        ret = fseek(decoder->fp, (long)offset, whence);
-        if (ret == -1) {
-            break;
-        }
-
-        pos = (int64_t)ftell(decoder->fp);
-        if (pos < decoder->lastRequestOffset || pos > decoder->fileWritePos) {
-            decoder->lastRequestOffset  = pos;
-            decoder->fileReadPos        = pos;
-            decoder->fileWritePos       = pos;
-            req_pos                     = pos;
-            ret                         = -1;  // Forcing not to call read at once.
-            decoder->requestCallback(pos, getAailableDataSize());
-            simpleLog("Will request %lld and return %lld.", pos, ret);
-            break;
-        }
-
-        decoder->fileReadPos = pos;
-        ret = pos;
-    } while (0);
-    //simpleLog("seekCallback return %lld.", ret);
-
-    if (decoder != NULL && decoder->requestCallback != NULL) {
-        decoder->requestCallback(req_pos, getAailableDataSize());
-    }
-    return ret;
-}
-
-int writeToFile(unsigned char *buff, int size) {
-    int ret = 0;
-    int64_t leftBytes = 0;
-    int canWriteBytes = 0;
-    do {
-        if (decoder->fp == NULL) {
-            ret = -1;
-            break;
-        }
-
-        leftBytes = decoder->fileSize - decoder->fileWritePos;
-        if (leftBytes <= 0) {
-            break;
-        }
-
-        canWriteBytes = MIN(leftBytes, size);
-        fseek(decoder->fp, decoder->fileWritePos, SEEK_SET);
-        fwrite(buff, canWriteBytes, 1, decoder->fp);
-        decoder->fileWritePos += canWriteBytes;
-        ret = canWriteBytes;
-    } while (0);
-    return ret;
-}
-
-int writeToFifo(unsigned char *buff, int size) {
-    int ret = 0;
-    do {
-        if (decoder->fifo == NULL) {
-            ret = -1;
-            break;
-        }
-
-        int64_t leftSpace = av_fifo_space(decoder->fifo);
-        if (leftSpace < size) {
-            int growSize = 0;
-            do {
-                leftSpace += decoder->fifoSize;
-                growSize += decoder->fifoSize;
-                decoder->fifoSize += decoder->fifoSize;
-            } while (leftSpace < size);
-            av_fifo_grow(decoder->fifo, growSize);
-
-            simpleLog("Fifo size growed to %d.", decoder->fifoSize);
-            if (decoder->fifoSize >= kMaxFifoSize) {
-                simpleLog("[Warn] Fifo size larger than %d.", kMaxFifoSize);
-            }
-        }
-
-        //simpleLog("Wrote %d bytes to fifo, total %d.", size, av_fifo_size(decoder->fifo));
-        ret = av_fifo_generic_write(decoder->fifo, buff, size, NULL);
-    } while (0);
-    return ret;
-}
-
-int getAailableDataSize() {
-    int ret = 0;
-    do {
-        if (decoder == NULL) {
-            break;
-        }
-
-        if (decoder->isStream) {
-            ret = decoder->fifo == NULL ? 0 : av_fifo_size(decoder->fifo);
-        } else {
-            ret = decoder->fileWritePos - decoder->fileReadPos;
-        }
-    } while (0);
-    return ret;
-}
-
-//////////////////////////////////Export methods////////////////////////////////////////
-ErrorCode initDecoder(int fileSize, int logLv) {
-    ErrorCode ret = kErrorCode_Success;
-    do {
-        //Log level.
-        logLevel = logLv;
-
-        if (decoder != NULL) {
-            break;
-        }
-
-        decoder = (WebDecoder *)av_mallocz(sizeof(WebDecoder));
-        if (fileSize >= 0) {
-            decoder->fileSize = fileSize;
-            sprintf(decoder->fileName, "tmp-%lu.mp4", getTickCount());
-            decoder->fp = fopen(decoder->fileName, "wb+");
-            if (decoder->fp == NULL) {
-                simpleLog("Open file %s failed, err: %d.", decoder->fileName, errno);
-                ret = kErrorCode_Open_File_Error;
-                av_free(decoder);
-                decoder = NULL;
-            }
-        } else {
-            decoder->isStream = 1;
-            decoder->fifoSize = kDefaultFifoSize;
-            decoder->fifo = av_fifo_alloc(decoder->fifoSize);
-        }
-    } while (0);
-    simpleLog("Decoder initialized %d.", ret);
-    return ret;
-}
-
-ErrorCode uninitDecoder() {
-    if (decoder != NULL) {
-        if (decoder->fp != NULL) {
-            fclose(decoder->fp);
-            decoder->fp = NULL;
-            remove(decoder->fileName);
-        }
-
-        if (decoder->fifo != NULL) {
-             av_fifo_freep(&decoder->fifo);
-        }
-
-        av_freep(&decoder);
-    }
-
-    av_log_set_callback(NULL);
-
-    simpleLog("Decoder uninitialized.");
-    return kErrorCode_Success;
-}
-
-ErrorCode openDecoder(int *paramArray, int paramCount, long videoCallback, long audioCallback, long requestCallback) {
-    ErrorCode ret = kErrorCode_Success;
-    int r = 0;
-    int i = 0;
-    int params[7] = { 0 };
-    do {
-        simpleLog("打开编码器.");
-
-        av_register_all();
-        avcodec_register_all();
-
-        if (logLevel == kLogLevel_All) {
-            av_log_set_callback(ffmpegLogCallback);
-        }
-        
-        decoder->avformatContext = avformat_alloc_context();
-        decoder->customIoBuffer = (unsigned char*)av_mallocz(kCustomIoBufferSize);
-
-        AVIOContext* ioContext = avio_alloc_context(
-            decoder->customIoBuffer,
-            kCustomIoBufferSize,
-            0,
-            NULL,
-            readCallback,
-            NULL,
-            seekCallback);
-        if (ioContext == NULL) {
-            ret = kErrorCode_FFmpeg_Error;
-            simpleLog("avio_alloc_context failed.");
-            break;
-        }
-
-        decoder->avformatContext->pb = ioContext;
-        decoder->avformatContext->flags = AVFMT_FLAG_CUSTOM_IO;
-		simpleLog("avformat_open_input.");
-
-        r = avformat_open_input(&decoder->avformatContext, NULL, NULL, NULL);
-        if (r != 0) {
-            ret = kErrorCode_FFmpeg_Error;
-            char err_info[32] = { 0 };
-            av_strerror(ret, err_info, 32);
-            simpleLog("avformat_open_input failed %d %s.", ret, err_info);
-            break;
-        }
-        
-        simpleLog("avformat_find_stream_info");
-
-        r = avformat_find_stream_info(decoder->avformatContext, NULL);
-        if (r != 0) {
-            ret = kErrorCode_FFmpeg_Error;
-            simpleLog("av_find_stream_info failed %d.", ret);
-            break;
-        }
-			
-			
-	
-        simpleLog("avformat_find_stream_info 成功.");
-
-        for (i = 0; i < decoder->avformatContext->nb_streams; i++) {
-            decoder->avformatContext->streams[i]->discard = AVDISCARD_DEFAULT;
-        }
-
-        r = openCodecContext(
-            decoder->avformatContext,
-            AVMEDIA_TYPE_VIDEO,
-            &decoder->videoStreamIdx,
-            &decoder->videoCodecContext);
-        if (r != 0) {
-            ret = kErrorCode_FFmpeg_Error;
-            simpleLog("Open video codec context failed %d.", ret);
-            break;
-        }
-
-        simpleLog("Open video codec context success, video stream index %d %x.",
-            decoder->videoStreamIdx, (unsigned int)decoder->videoCodecContext);
-
-        simpleLog("Video stream index:%d pix_fmt:%d resolution:%d*%d.",
-            decoder->videoStreamIdx,
-            decoder->videoCodecContext->pix_fmt,
-            decoder->videoCodecContext->width,
-            decoder->videoCodecContext->height);
-
-        r = openCodecContext(
-            decoder->avformatContext,
-            AVMEDIA_TYPE_AUDIO,
-            &decoder->audioStreamIdx,
-            &decoder->audioCodecContext);
-        if (r != 0) {
-            ret = kErrorCode_FFmpeg_Error;
-            simpleLog("Open audio codec context failed %d.", ret);
-            break;
-        }
-
-        simpleLog("Open audio codec context success, audio stream index %d %x.",
-            decoder->audioStreamIdx, (unsigned int)decoder->audioCodecContext);
-
-        simpleLog("Audio stream index:%d sample_fmt:%d channel:%d, sample rate:%d.",
-            decoder->audioStreamIdx,
-            decoder->audioCodecContext->sample_fmt,
-            decoder->audioCodecContext->channels,
-            decoder->audioCodecContext->sample_rate);
-
-        av_seek_frame(decoder->avformatContext, -1, 0, AVSEEK_FLAG_BACKWARD);
-
-        /* For RGB Renderer(2D WebGL).
-        decoder->swsCtx = sws_getContext(
-            decoder->videoCodecContext->width,
-            decoder->videoCodecContext->height,
-            decoder->videoCodecContext->pix_fmt, 
-            decoder->videoCodecContext->width,
-            decoder->videoCodecContext->height,
-            AV_PIX_FMT_RGB32,
-            SWS_BILINEAR, 
-            0, 
-            0, 
-            0);
-        if (decoder->swsCtx == NULL) {
-            simpleLog("sws_getContext failed.");
-            ret = kErrorCode_FFmpeg_Error;
-            break;
-        }
-        */
-        
-        decoder->videoSize = avpicture_get_size(
-            decoder->videoCodecContext->pix_fmt,
-            decoder->videoCodecContext->width,
-            decoder->videoCodecContext->height);
-
-        decoder->videoBufferSize = 3 * decoder->videoSize;
-        decoder->yuvBuffer = (unsigned char *)av_mallocz(decoder->videoBufferSize);
-        decoder->avFrame = av_frame_alloc();
-        
-        params[0] = 1000 * (decoder->avformatContext->duration + 5000) / AV_TIME_BASE;
-        params[1] = decoder->videoCodecContext->pix_fmt;
-        params[2] = decoder->videoCodecContext->width;
-        params[3] = decoder->videoCodecContext->height;
-        params[4] = decoder->audioCodecContext->sample_fmt;
-        params[5] = decoder->audioCodecContext->channels;
-        params[6] = decoder->audioCodecContext->sample_rate;
-
-        enum AVSampleFormat sampleFmt = decoder->audioCodecContext->sample_fmt;
-        if (av_sample_fmt_is_planar(sampleFmt)) {
-            const char *packed = av_get_sample_fmt_name(sampleFmt);
-            params[4] = av_get_packed_sample_fmt(sampleFmt);
-        }
-
-        if (paramArray != NULL && paramCount > 0) {
-            for (int i = 0; i < paramCount; ++i) {
-                paramArray[i] = params[i];
-            }
-        }
-
-        decoder->videoCallback = (VideoCallback)videoCallback;
-        decoder->audioCallback = (AudioCallback)audioCallback;
-        decoder->requestCallback = (RequestCallback)requestCallback;
-
-        simpleLog("Decoder opened, duration %ds, picture size %d.", params[0], decoder->videoSize);
-    } while (0);
-
-    if (ret != kErrorCode_Success && decoder != NULL) {
-        av_freep(&decoder);
-    }
-    return ret;
-}
-
-ErrorCode closeDecoder() {
-    ErrorCode ret = kErrorCode_Success;
-    do {
-        if (decoder == NULL || decoder->avformatContext == NULL) {
-            break;
-        }
-
-        if (decoder->videoCodecContext != NULL) {
-            closeCodecContext(decoder->avformatContext, decoder->videoCodecContext, decoder->videoStreamIdx);
-            decoder->videoCodecContext = NULL;
-            simpleLog("Video codec context closed.");
-        }
-
-        if (decoder->audioCodecContext != NULL) {
-            closeCodecContext(decoder->avformatContext, decoder->audioCodecContext, decoder->audioStreamIdx);
-            decoder->audioCodecContext = NULL;
-            simpleLog("Audio codec context closed.");
-        }
-
-        AVIOContext *pb = decoder->avformatContext->pb;
-        if (pb != NULL) {
-            if (pb->buffer != NULL) {
-                av_freep(&pb->buffer);
-                decoder->customIoBuffer = NULL;
-            }
-            av_freep(&decoder->avformatContext->pb);
-            simpleLog("IO context released.");
-        }
-
-        avformat_close_input(&decoder->avformatContext);
-        decoder->avformatContext = NULL;
-        simpleLog("Input closed.");
-
-        if (decoder->yuvBuffer != NULL) {
-            av_freep(&decoder->yuvBuffer);
-        }
-
-        if (decoder->pcmBuffer != NULL) {
-            av_freep(&decoder->pcmBuffer);
-        }
-        
-        if (decoder->avFrame != NULL) {
-            av_freep(&decoder->avFrame);
-        }
-        simpleLog("All buffer released.");
-    } while (0);
-    return ret;
-}
-
-int sendData(unsigned char *buff, int size) {
-    int ret = 0;
-    int64_t leftBytes = 0;
-    int canWriteBytes = 0;
-    do {
-        if (decoder == NULL) {
-            ret = -1;
-            break;
-        }
-
-        if (buff == NULL || size == 0) {
-            ret = -2;
-            break;
-        }
-
-        ret = decoder->isStream ? writeToFifo(buff, size) : writeToFile(buff, size);
-    } while (0);
-    return ret;
-}
-
-ErrorCode decodeOnePacket() {
-    ErrorCode ret	= kErrorCode_Success;
-    int decodedLen	= 0;
-    int r			= 0;
-
-    AVPacket packet;
-    av_init_packet(&packet);
-    do {
-        if (decoder == NULL) {
-            ret = kErrorCode_Invalid_State;
-            break;
-        }
-
-        if (getAailableDataSize() <= 0) {
-            ret = kErrorCode_Invalid_State;
-            break;
-        }
-
-        packet.data = NULL;
-        packet.size = 0;
-
-        r = av_read_frame(decoder->avformatContext, &packet);
-        if (r == AVERROR_EOF) {
-            ret = kErrorCode_Eof;
-            break;
-        }
-
-        if (r < 0 || packet.size == 0) {
-            break;
-        }
-
-        do {
-            ret = decodePacket(&packet, &decodedLen);
-            if (ret != kErrorCode_Success) {
-                break;
-            }
-
-            if (decodedLen <= 0) {
-                break;
-            }
-
-            packet.data += decodedLen;
-            packet.size -= decodedLen;
-        } while (packet.size > 0);
-    } while (0);
-    av_packet_unref(&packet);
-    return ret;
-}
-
-ErrorCode seekTo(int ms, int accurateSeek) {
-    int ret = 0;
-    int64_t pts = (int64_t)ms * 1000;
-    decoder->accurateSeek = accurateSeek;
-    ret = avformat_seek_file(decoder->avformatContext,
-                                 -1,
-                                 INT64_MIN,
-                                 pts,
-                                 pts,
-                                 AVSEEK_FLAG_BACKWARD);
-    simpleLog("Native seek to %d return %d %d.", ms, ret, decoder->accurateSeek);
-    if (ret == -1) {
-        return kErrorCode_FFmpeg_Error;
-    } else {
-        avcodec_flush_buffers(decoder->videoCodecContext);
-        avcodec_flush_buffers(decoder->audioCodecContext);
-
-        // Trigger seek callback
-        AVPacket packet;
-        av_init_packet(&packet);
-        av_read_frame(decoder->avformatContext, &packet);
-
-        decoder->beginTimeOffset = (double)ms / 1000;
-        return kErrorCode_Success;
-    }
-}
-
-int main() {
-    //simpleLog("Native loaded.");
-    return 0;
-}
-
-#ifdef __cplusplus
-}
-#endif

+ 0 - 125
decoker/screenAndroid/helper.js

@@ -1,125 +0,0 @@
- //此文件实现将控制命令封装成协议,具体协议内容请看:
-//链接:http://note.youdao.com/noteshare?id=dabda6c613adef7a416bd2625cd770a1
- 
- //bcc校验码计算
- //arry: 要计算的数组
- //返回计算协议中校验位的校验码
- function calBcc(arry)
- {
-	var bcc = 0;
-	for(i = 0;i < arry.length;i++)
-	{
-		bcc ^= arry[i];
-	}
-	return bcc;
- }
- 
- //数组打印,调试用
- function PrintArry(data)
- {
-	 var str = "";
-	 
-	 for(i = 0;i < data.length;i++)
-	 {
-		 str =  str + data[i].toString(16).padStart(2,'0');
-	 }
-	 
-	 str = str.toUpperCase();
-	 return str;
- }
- 
- //sn:板卡sn号,stirng
- //type:数据类型,数字
- //jsonCmd: json命令
- //返回值:生成一个Uint8Array,通过websocket发送给板卡
- function makeFrame(sn, dataType, jsonCmd)
- {
-	 var index = 0;
-	 var dataLen  = jsonCmd.length;
-	 var frameLen = dataLen + 26;
-	 var outPut = new Uint8Array(frameLen);
-	 outPut[index++] = 0x68;
-	 outPut[index++] = (dataLen & 0xff000000) >> 24;
-	 outPut[index++] = (dataLen & 0x00ff0000) >> 16;
-	 outPut[index++] = (dataLen & 0x0000ff00) >> 8;
-	 outPut[index++] =  dataLen & 0x000000ff;
-	 outPut[index++] = 0;//类型为client
-	 
-	 //sn号赋值,string转ascii
-	 for( i = 0;i< sn.length;i++)
-	 {
-		 outPut[index++] = sn[i].charCodeAt();
-	 }
-	 
-	 outPut[index++] = dataType;//指定数据类型为json
-	 //json string转ascii
-	 for( i = 0;i< jsonCmd.length;i++)
-	 {
-		 outPut[index++] = jsonCmd[i].charCodeAt();
-	 }
-	 
-	 var bccBuffer = outPut.slice(1, frameLen-3 + 1);//忽略协议头和协议尾
-	 outPut[index++] = calBcc(bccBuffer);
-	 outPut[index++] = 0x16;
-	 // console.log("打印数组:%s", PrintArry(outPut));
-	 console.log("数组长度:%d", outPut.length);
-	 //return PrintArry(outPut);
-	 return outPut;
- }
- //触发键盘事件, code表示键盘值
- function ExexuteKeyDown(code)
- {	 
-	 var jsonObj = {"data":{"keyCode":code, "event":"keyDown"}};
-	 var json = JSON.stringify(jsonObj);
-	 console.log("json==================",json);
-	 var sn = "RK3923C1201900139";
-	 return makeFrame(sn, 0, json);
- }
- //触发鼠标按下事件,x:x坐标, y:y坐标
- function ExexuteMouseDown(x, y)
- {
-	 var jsonObj = {"data":{"action":0, "count":1, "pointerId":0,"x":x, "y":y}, "event":"0"};
-	 var json = JSON.stringify(jsonObj);
-	 console.log("json==================",json);
-	 var sn = "RK3923C1201900139";
-	 return  makeFrame(sn, 0, json);
- }
-  //触发鼠标移动事件,x:x坐标, y:y坐标
- function ExexuteMouseMove(x, y)
- {
-	 var jsonObj = {"data":{"action":2, "count":1, "pointerId":0,"x":x, "y":y}, "event":"2"};
-	 var json = JSON.stringify(jsonObj);
-	 var sn = "RK3923C1201900139";
-	 return  makeFrame(sn, 0, json);	 
- }
- 
- function ExexuteKeyBoard(keycode)
- {
- 	 var jsonObj = {"data":{"keyCode":keycode.toString()},"event":"keyCode"};
- 	 var json = JSON.stringify(jsonObj);
- 	 var sn = "RK3923C1201900139";
- 	 return  makeFrame(sn, 0, json);	 
- }
- 
-  //触发鼠标抬起事件,x:x坐标, y:y坐标
- function ExexuteMouseUp(x, y)
- {
-	 var jsonObj = {"data":{"action":1, "count":1, "pointerId":0,"x":x, "y":y}, "event":"1"};
-	 var json = JSON.stringify(jsonObj);
-	 var sn = "RK3923C1201900139";
-	 return makeFrame(sn, 0, json);	 
- }
- //触发滑动事件
- function ExexuteMove(data,sn)
- {
- 	 // var jsonObj = {"data":{"action":1, "count":1, "pointerId":0,"x":x, "y":y}, "event":"1"};
- 	 // var json = JSON.stringify(jsonObj);
- 	 // var sn = "RK3923C1201900139";
- 	 return makeFrame(sn, 0, data);	 
- }
- //示例:
- //var sn = "RK3923C1201900139";
- //var json = "{\"data\":{\"keyCode\":24},\"type\":\"keyDown\"}";
-// makeFrame(sn, 0, json);
-//ExexuteKeyDown()
- 

File diff suppressed because it is too large
+ 0 - 185
decoker/screenAndroid/helper5555.js


File diff suppressed because it is too large
+ 0 - 1728
decoker/screenAndroid/home.html


File diff suppressed because it is too large
+ 0 - 1702
decoker/screenAndroid/homeNew.html


BIN
decoker/screenAndroid/images/loader-thumb.jpg


BIN
decoker/screenAndroid/img/fenxiang_icon.png


BIN
decoker/screenAndroid/img/fenxiang_icon@2x.png


BIN
decoker/screenAndroid/img/goumai_icon(1).png


BIN
decoker/screenAndroid/img/goumai_icon.png


BIN
decoker/screenAndroid/img/goumai_icon@2x(1).png


BIN
decoker/screenAndroid/img/goumai_icon@2x.png


BIN
decoker/screenAndroid/img/homebg.png


BIN
decoker/screenAndroid/img/jia_bu_icon.png


BIN
decoker/screenAndroid/img/jia_bu_icon@2x.png


BIN
decoker/screenAndroid/img/jia_ke_icon.png


BIN
decoker/screenAndroid/img/jia_ke_icon@2x.png


BIN
decoker/screenAndroid/img/jian_bu_icon.png


BIN
decoker/screenAndroid/img/jian_bu_icon@2x.png


BIN
decoker/screenAndroid/img/jian_ke_icon.png


BIN
decoker/screenAndroid/img/jian_ke_icon@2x.png


BIN
decoker/screenAndroid/img/kefu_wei_icon.png


BIN
decoker/screenAndroid/img/kefu_wei_icon@2x.png


BIN
decoker/screenAndroid/img/kefu_xuanzhong_icon.png


BIN
decoker/screenAndroid/img/kefu_xuanzhong_icon@2x.png


BIN
decoker/screenAndroid/img/kefurexian_icon.png


BIN
decoker/screenAndroid/img/kefurexian_icon@2x.png


BIN
decoker/screenAndroid/img/kuorong_icon.png


BIN
decoker/screenAndroid/img/kuorong_icon@2x.png


BIN
decoker/screenAndroid/img/qq_icon.png


BIN
decoker/screenAndroid/img/qq_icon@2x.png


BIN
decoker/screenAndroid/img/shijian_icon.png


BIN
decoker/screenAndroid/img/shijian_icon@2x.png


BIN
decoker/screenAndroid/img/wenzi_icon.png


BIN
decoker/screenAndroid/img/wenzi_icon@2x.png


BIN
decoker/screenAndroid/img/wode_wei_icon.png


BIN
decoker/screenAndroid/img/wode_wei_icon@2x.png


BIN
decoker/screenAndroid/img/wode_xuanzhong_icon.png


BIN
decoker/screenAndroid/img/wode_xuanzhong_icon@2x.png


BIN
decoker/screenAndroid/img/xiazai_icon.png


BIN
decoker/screenAndroid/img/xiazai_icon@2x.png


BIN
decoker/screenAndroid/img/xuankang_xuan_icon.png


BIN
decoker/screenAndroid/img/xuankang_xuan_icon@2x.png


BIN
decoker/screenAndroid/img/xuankuang_wei_icon.png


BIN
decoker/screenAndroid/img/xuankuang_wei_icon@2x.png


BIN
decoker/screenAndroid/img/yunshouji_wei_icon.png


BIN
decoker/screenAndroid/img/yunshouji_wei_icon@2x.png


BIN
decoker/screenAndroid/img/yunshouji_xuanzhong_icon.png


BIN
decoker/screenAndroid/img/yunshouji_xuanzhong_icon@2x.png


+ 0 - 411
decoker/screenAndroid/index - 副本.html

@@ -1,411 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <meta name="description" content="jMuxer - a simple javascript mp4 muxer for non-standard streaming communications protocol">
-    <meta name="keywords" content="h264 player, mp4 player, mse, mp4 muxing, jmuxer, aac player">
-    <title>JMuxer demo</title>
-    <script async defer src="https://buttons.github.io/buttons.js"></script>
-    <style type="text/css">
-        .github-tools {
-            position: absolute;
-            top: 15px;
-            right: 15px;
-        }
-        a.h264-player {
-            font-size: 20px;
-            text-decoration: none;
-            color: #07568e;
-            margin-top: 10px;
-            display: block;
-        }
-        .gesture {
-            font-size: 15px;
-            color: #ad4903;
-            margin-top: 10px;
-        }
-</style>
-</head>
-<body>
-
-<h2>jMuxer Demo</h2>
-<p>Sample demo node server is running on heroku free hosting</p>
-<br /><br />
-<div class="github-tools">
-<!-- Place this tag where you want the button to render. -->
-
-</div>
-
-<div id="container" style="width: 600px; margin: 0 auto;"> 
-    <video width="100%"   disablePictureInPicture ="true" autoplay poster="images/loader-thumb.jpg" id="player"></video>
-	<audio width="50%"  preload="none" autoplay controls poster="images/loader-thumb.jpg" id="audioPlayer" ></audio>
-    <div class="gesture">If it does not play automatically, Click the `video play button` to initiate the video</div>
-</div>
-
-<body oncontextmenu="Back()">
-</body>
-
-<script src="helper.js" >
-</script>
-
-<script>
-	//隐藏控件 controls
-  var fpsCount = 0;
-  var requestCount = 0;
-  var timeCount = 0;
-  var isVisuable = true;
-  var isFeed = true;
-  var isDrag = false;
-  var isEnough = true;
-  
-  var delayTime = new Date().getTime();
-  var feedTime = new Date().getTime();
-  var requestTime = new Date().getTime() ;
-  var curTime = new Date().getTime();
-  var requestTime = new Date().getTime();//记录离开时间
-  var myVideo = document.getElementById("player");
-  var myAudio = document.getElementById("audioPlayer");
-  var audioBuffer = [];
-  var audioBack = [];
-  
-  document.addEventListener("visibilitychange", () => {
-	
-    if (document.visibilityState == "visible") 
-	{
-		console.log("页面可见,继续喂视频");
-		//requestTime = new Date().getTime();	
-		isVisuable = true;
-    }
-	else
-	{
-		isVisuable = false;
-		isFeed = false;
-		myVideo.pause();
-	}
-	
-
-});  
-  
-  myVideo.addEventListener('pause',function(){
-            //console.log("视频播放暂停");
-			isFeed = false;
-        });
-		
-  myAudio.addEventListener('pause',function(){
-            console.log("音频播放暂停");
-			myAudio.play();
-        });
- 
- //解协议
- function ParseProto(data)
- {
-	var temp = "";
-	var input = new Uint8Array(data),
-	duration,
-	video,
-	audio;
-	
-	if(input[0] == 0 && input[1] == 0 && input[2] == 0 && input[3] == 1)
-	{
-		// debugger
-		video = input;
-		duration = 24;
-		var nalType = input[4] &0x1f;//nalType == 0x07|| nalType == 0x08 || nalType == 0x05
-		
-		if(!isFeed)
-		{	
-			if(nalType == 0x05)
-			{
-				console.log("发现I帧");
-			}
-		
-			 if(nalType  == 0x05 && isVisuable)
-			 {
-				console.log("检测到I帧 %d,重新渲染, 耗时 %d ms", nalType , new Date().getTime() - requestTime);
-				isFeed = true;	
-			 }			 			 	
-		}
-		
-	}
-	else if(input[0] == 0xff)
-	{
-		if(!isEnough)
-		{
-			requestCount++;
-		}
-		audio = input;
-		
-		if(new Date().getTime() - curTime > 100)
-		{
-			delayTime = new Date().getTime();
-			console.log("接收时间 %d ms", new Date().getTime() - curTime);
-		}
-		curTime = new Date().getTime();				
-		duration = 24;
-		//console.log("duration %d", duration);
-		
-	}
-	else if(input[0] == 0x68)
-	{	
-		if(input[23] == 0x05)//横竖屏标识
-		{
-			var state = CheckScreenDirection(input.slice(24, 24 + 8));
-			
-			if(state == 1)
-			{
-				console.log("安卓卡此时竖屏");
-				//竖屏处理
-			}
-			else
-			{
-				console.log("安卓卡此时横屏");
-				//横屏处理
-			}
-		}
-		
-		if(input[23] == 0x0b)
-		{
-			console.log("多端登陆");
-		}
-		//console.log("屏幕旋转 %s", PrintArry(input));
-	}
-
-	return {
-        audio: audio,
-        video: video,
-        duration: duration
-      };
- }
- 
- window.onload = function() {
-    var socketURL = 'wss://jmuxer-demo-server.herokuapp.com';
-	 //socketURL = "ws://127.0.0.1:8080"
-	//socketURL = "ws://192.168.11.238:8080"
-	//socketURL = "ws://14.215.128.98:14112";
-	socketURL = "ws://192.168.11.66:9101";
-	//socketURL = "wss://192.168.11.242:9104";
-
-	
-    var jmuxer = new JMuxer({
-        node: 'player',
-		flushingTime:15 ,
-        fps: 30,
-		mode:'video',
-        debug: false
-     });
-	 
-	 var audioMuxer = new JMuxer({
-        node: 'audioPlayer',
-		flushingTime:1,
-		clearBuffer: true,
-        fps: 60,//可以不选,原先43
-		mode:'audio',
-        debug: false
-     });
-	 
-
-	 /*var costTime =  new Date().getTime() - curTime;
-	 if(costTime > 5)
-	 {
-		console.log("websocket接收延迟 %d ms", costTime);
-	 }*/
-	 
-	 curTime = new Date().getTime();	
-     var ws = new WebSocket(socketURL);
-     ws.binaryType = 'arraybuffer';
-	  
-	 //断开检测
-	 ws.onclose = function (e) {
-                alert("websocket连接断开");
-				console.log('websocket 断开: ' + e.code + ' ' + e.reason + ' ' + e.wasClean);
-				console.log(e);
-            }
-							
-	ws.addEventListener('open', function (event) {
-		console.log("发送配置帧");
-		ws.send(ConfigChannel("RK3923C1201900139"));
-	});
-	
-	ws.addEventListener('error', function (event) {
-		console.log("连接失败");
-	});
-	
-
-	/*setInterval(function()
-	{ 	
-		var audioData = 
-		{
-			audio: null,
-			video: null,
-			duration: 24
-		};
-				
-	    if(myAudio != null)
-		{	
-			if(audioBuffer.length < 1)
-			{			
-				if(audioBack.length > 0)
-				{
-					audioData.audio = audioBack[0];
-					audioMuxer.feed(audioData);
-					audioBack.shift();
-				}
-																	
-				return;
-			}
-			
-			if(audioBack.length > 10)
-			{
-				audioBack.shift();
-			}
-		
-			if(audioBuffer.length > 50)
-			{
-				console.log("当前大小 %d", audioBuffer.length);
-				audioBuffer = [];
-			}
-			else if(audioBuffer.length > 1)
-			{		    		   						
-				
-				var time = new Date().getTime();
-				audioData.audio = audioBuffer[0];
-				audioMuxer.feed(audioData);
-				
-				if(time - feedTime > 80)
-				{								
-					console.log("喂数据间隔 %d ms, 队列长度", time - feedTime, audioBuffer.length);
-				}
-				feedTime = time;
-				
-				audioBuffer.shift();
-			}
-		}
-	}, 1);*/
-	
-     ws.addEventListener('message',function(event) {
-		  var data = ParseProto(event.data);//JAVA服务器转发
-		  //console.log("收到数据");
-					
-		  var audioData = {
-			audio: data.audio,
-			video: null,
-			duration: data.duration
-		  };
-		  
-		  var videoData = {
-			audio: null,
-			video: data.video,
-			duration: data.duration
-		  };	  
-		 	 
-		
-		  if(myAudio.readyState == 2)
-		  {
-			requestTime = new Date().getTime();
-			isEnough = false;
-			console.log("数据存储不够,出现声音停止");
-			//myAudio.playbackRate = 2;
-		  }
-		  else if(myAudio.readyState == 4 && isEnough== false)
-		  {
-				var time = new Date().getTime();
-				isEnough = true;
-				console.log("填满耗时 %d ms, 填充帧数 %d, 填充延迟 %d ms", time - requestTime, requestCount, requestCount * 23);
-				requestCount = 0;
-				console.log("----接收到启动 %d ms---", time - delayTime);
-		  }
-		  
-		  if(data.audio != null)//喂音频
-		  {				
-			//audioBuffer.push(data.audio);
-			//audioBack.push(data.audio)			;
-			audioMuxer.feed(audioData);
-		  }		  
-		  
-		  if(data.video != null)//喂视频
-		  {
-			 if(isFeed)
-			 {
-				jmuxer.feed(data);
-			 }
-			 
-			 //jmuxer.feed(videoData);
-		  }
-		   	 	 	 	  
-     });
-	 
-	
-	myVideo.onmousedown = function(event)
-    {
-		//放在此处只是为了方便演示,实际使用中查找横竖屏只要刚连接上时调用一次就好。	
-		//var checkBuffer = GetScreenState();
-		//ws.send(checkBuffer);
-
-		if(!isFeed)
-		{
-			console.log("重新申请I帧");
-			requestTime = new Date().getTime();			
-			var buffer = RequestIFrame();
-			//var buffer = new Uint8Array([0x01]);
-			ws.send(buffer);
-		}
-		
-		//console.log("报文 %s", PrintArry(buffer));
-		
-	
-		if(event.button == 0)
-		{
-			var posX = event.offsetX * 1080 *1.0/myVideo.clientWidth;
-			var posY = event.offsetY * 1920 *1.0/myVideo.clientHeight;
-			var buffer = ExexuteMouseDown(posX.toString(), posY.toString());
-			ws.send(buffer);
-			isDrag = true;
-		}
-			
-    }
-	
-	myVideo.onmousemove = function(event)
-	{
-		if(isDrag && event.button == 0)
-		{
-			var posX = event.offsetX * 1080 *1.0/myVideo.clientWidth;
-			var posY = event.offsetY * 1920 *1.0/myVideo.clientHeight;
-			var buffer = ExexuteMouseMove(posX.toString(), posY.toString());
-			ws.send(buffer);
-			//console.log("移动位置 %d, %d", posX, posY);
-		}
-		
-	}
-	
-	myVideo.onmouseup = function(event)
-	{	
-		isDrag = false;
-		var posX = event.offsetX * 1080 *1.0/myVideo.clientWidth;
-		var posY = event.offsetY * 1920 *1.0/myVideo.clientHeight;
-		var buffer = ExexuteMouseUp(posX.toString(), posY.toString());
-		ws.send(buffer);
-		
-	}
-	
-	myVideo.onkeydown = function(event)
-	{	
-		ExexuteKeyDown(e.keyCode);
-	}
-	
- }  
-
-function Back()
-{	
-	if(event.button == 2)
-	{
-		//ExexuteKeyDown(4);
-	}
-	ExexuteKeyDown(4);
-	window.event.returnValue=false;  
-    return false;  
-}
- 
-</script>
-<script type="text/javascript" src="jmuxer.js"></script>
-</body>
-</html>

+ 0 - 382
decoker/screenAndroid/index.html

@@ -1,382 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="UTF-8">
-		<meta name="description" content="jMuxer - a simple javascript mp4 muxer for non-standard streaming communications protocol">
-		<meta name="keywords" content="h264 player, mp4 player, mse, mp4 muxing, jmuxer, aac player">
-		<title>JMuxer demo</title>
-		<script async defer src="https://buttons.github.io/buttons.js"></script>
-		<style type="text/css">
-			.github-tools {
-				position: absolute;
-				top: 15px;
-				right: 15px;
-			}
-
-			a.h264-player {
-				font-size: 20px;
-				text-decoration: none;
-				color: #07568e;
-				margin-top: 10px;
-				display: block;
-			}
-
-			.gesture {
-				font-size: 15px;
-				color: #ad4903;
-				margin-top: 10px;
-			}
-		</style>
-	</head>
-	<body>
-
-		<h2>jMuxer Demo</h2>
-		<p>Sample demo node server is running on heroku free hosting</p>
-		<br /><br />
-		<div class="github-tools">
-			<!-- Place this tag where you want the button to render. -->
-
-		</div>
-
-		<div id="container" style="width: 600px; margin: 0 auto;">
-			<video width="70%" disablePictureInPicture="true" autoplay poster="images/loader-thumb.jpg" id="player"></video>
-			<audio width="50%" preload="auto" autoplay controls poster="images/loader-thumb.jpg" id="audioPlayer"></audio>
-			<div class="gesture">If it does not play automatically, Click the `video play button` to initiate the video</div>
-		</div>
-
-		<body oncontextmenu="Back()">
-		</body>
-
-		<script src="helper.js">
-		</script>
-
-		<script>
-			//隐藏控件 controls
-			var fpsCount = 0;
-			var requestCount = 0;
-			var timeCount = 0;
-			var isVisuable = true;
-			var isFeed = true;
-			var isDrag = false;
-			var shoudDrop = false;
-			var isEnough = true;
-			var ifCanPlay = false;
-			var isFinish = false;
-
-			var delayTime = new Date().getTime();
-			var feedTime = new Date().getTime();
-			var readyTime = new Date().getTime();
-			var requestTime = new Date().getTime();
-			var curTime = new Date().getTime();
-			var requestTime = new Date().getTime(); //记录离开时间
-			var myVideo = document.getElementById("player");
-			var myAudio = document.getElementById("audioPlayer");
-			var audioBuffer = [];
-			var audioBack = [];
-
-			Module = {};
-			Module.onRuntimeInitialized = function() {
-				console.log("Wasm 加载成功!")
-				isFinish = true;
-			}
-
-			document.addEventListener("visibilitychange", () => {
-
-				if (document.visibilityState == "visible") {
-					console.log("页面可见,继续喂视频");
-					//requestTime = new Date().getTime();	
-					isVisuable = true;
-				} else {
-					isVisuable = false;
-					isFeed = false;
-					myVideo.pause();
-				}
-
-
-			});
-
-
-			myVideo.play();
-
-			myVideo.addEventListener('pause', function() {
-				//console.log("视频播放暂停");
-				isFeed = false;
-			});
-
-			myAudio.addEventListener('canplay', function() {
-				console.log("缓冲区大小 %f", myAudio.buffered.end(0) - myAudio.buffered.start(0));
-			});
-
-			/*function decodeAAC(data)
-			{
-				var retPtr = Module._malloc(4 * 5 * 1024);//接收的数据
-				var inputPtr = Module._malloc(4 * data.length);//输入数据
-				
-				for( i =0;i < data.length;i++)
-				{
-					Module.HEAPU8[(inputPtr)+i] = data[i];//转换为堆数据
-				}
-				
-				var pcmLen = Module._feedData(retPtr, inputPtr, data.length);
-				
-				if(pcmLen > 0)
-				{
-					//console.log("%d帧 aac 解码成功, %d", decodeCount, pcmLen);
-					var pcmData = new Uint8Array(pcmLen);		
-					for(i = 0;i < pcmLen;i++)
-					{
-						pcmData[i] = Module.HEAPU8[(retPtr)+i]
-					}
-					
-					player.feed(pcmData);
-				}
-				else
-				{
-					console.log("%d帧 aac 解码失败, %d", decodeCount, pcmLen);
-				}
-				
-				decodeCount++;
-				Module._free(inputPtr);
-				Module._free(retPtr);
-			}	*/
-
-
-			//解协议
-			function ParseProto(data) {
-				var temp = "";
-				var input = new Uint8Array(data),
-					duration,
-					video,
-					audio;
-
-				if (input[0] == 0 && input[1] == 0 && input[2] == 0 && input[3] == 1) {
-					// debugger
-					video = input;
-					duration = 24;
-					var nalType = input[4] & 0x1f; //nalType == 0x07|| nalType == 0x08 || nalType == 0x05
-
-					if (!isFeed) {
-						if (nalType == 0x05) {
-							console.log("发现I帧");
-						}
-
-						if (nalType == 0x05 && isVisuable) {
-							console.log("检测到I帧 %d,重新渲染, 耗时 %d ms", nalType, new Date().getTime() - requestTime);
-							isFeed = true;
-						}
-					}
-
-				} else if (input[0] == 0xff) {
-					if (!isEnough) {
-						requestCount++;
-						//audioBuffer.push(input);
-					}
-					audio = input;
-
-					if (new Date().getTime() - curTime > 100) {
-						delayTime = new Date().getTime();
-						console.log("接收时间 %d ms", new Date().getTime() - curTime);
-					}
-					curTime = new Date().getTime();
-					duration = 24;
-					//console.log("duration %d", duration);
-
-				} else if (input[0] == 0x68) {
-					if (input[23] == 0x05) //横竖屏标识
-					{
-						var state = CheckScreenDirection(input.slice(24, 24 + 8));
-
-						if (state == 1) {
-							console.log("安卓卡此时竖屏");
-							//竖屏处理
-						} else {
-							console.log("安卓卡此时横屏");
-							//横屏处理
-						}
-					}
-
-					if (input[23] == 0x0b) {
-						console.log("多端登陆");
-					}
-					//console.log("屏幕旋转 %s", PrintArry(input));
-				}
-
-				return {
-					audio: audio,
-					video: video,
-					duration: duration
-				};
-			}
-
-			window.onload = function() {
-				// var socketURL = 'wss://jmuxer-demo-server.herokuapp.com';
-				//socketURL = "ws://127.0.0.1:8080"
-				// socketURL = "ws://192.168.11.233:8080"
-				//socketURL = "ws://14.215.128.98:14112";
-				var socketURL = "ws://192.168.11.66:9101";
-				// socketURL = "ws://14.215.128.98:14077";
-				//socketURL = "wss://192.168.11.242:9104";
-
-
-				var jmuxer = new JMuxer({
-					node: 'player',
-					flushingTime: 15,
-					fps: 30,
-					mode: 'video',
-					debug: false
-				});
-
-				var audioMuxer = new JMuxer({
-					node: 'audioPlayer',
-					flushingTime: 15,
-					clearBuffer: true,
-					fps: 60, //可以不选,原先43
-					mode: 'audio',
-					debug: false
-				});
-
-				curTime = new Date().getTime();
-				var ws = new WebSocket(socketURL);
-				ws.binaryType = 'arraybuffer';
-
-				//断开检测
-				ws.onclose = function(e) {
-					alert("websocket连接断开");
-					console.log('websocket 断开: ' + e.code + ' ' + e.reason + ' ' + e.wasClean);
-					console.log(e);
-				}
-
-				ws.addEventListener('open', function(event) {
-					console.log("发送配置帧");
-					ws.send(ConfigChannel("RK3923C1201900139"));
-				});
-
-				ws.addEventListener('error', function(event) {
-					console.log("连接失败");
-				});
-
-				ws.addEventListener('message', function(event) {
-					var data = ParseProto(event.data); //JAVA服务器转发
-					//console.log("收到数据");
-
-					var audioData = {
-						audio: data.audio,
-						video: null,
-						duration: data.duration
-					};
-
-					var videoData = {
-						audio: null,
-						video: data.video,
-						duration: data.duration
-					};
-
-					if (myAudio.readyState == 2) {
-						requestTime = new Date().getTime();
-						isEnough = false;
-						console.log("数据存储不够,出现声音停止,时间差 %f", myAudio.buffered.end(0));
-						myAudio.pause();
-						//myAudio.playbackRate = 2;
-					} else if (myAudio.readyState == 4 && isEnough == false) {
-						myAudio.play();
-						var time = new Date().getTime();
-						isEnough = true;
-						console.log("填满耗时 %d ms, 填充帧数 %d, 填充延迟 %d ms", time - requestTime, requestCount, requestCount * 23);
-
-						console.log("----接收到启动 %d ms, 缓冲区 %f---", time - delayTime, myAudio.buffered.end(0) - myAudio.played.end(0));
-					}
-
-					if (data.audio != null) //喂音频
-					{
-						if (myAudio.buffered.length > 0 && myAudio.played.length > 0) {
-							var bufferTime = myAudio.buffered.end(0) - myAudio.played.end(0);
-							//console.log(" bufferTime %d", bufferTime);
-
-							if (bufferTime > 1) {
-								//console.log("丢掉一些包");
-								//return;
-							}
-						}
-
-						audioMuxer.feed(audioData);
-					}
-
-					if (data.video != null) //喂视频
-					{
-						if (isFeed) {
-							jmuxer.feed(data);
-						}
-
-						//jmuxer.feed(videoData);
-					}
-
-				});
-
-
-				myVideo.onmousedown = function(event) {
-					//放在此处只是为了方便演示,实际使用中查找横竖屏只要刚连接上时调用一次就好。	
-					//var checkBuffer = GetScreenState();
-					//ws.send(checkBuffer);
-
-					if (!isFeed) {
-						console.log("重新申请I帧");
-						requestTime = new Date().getTime();
-						var buffer = RequestIFrame();
-						//var buffer = new Uint8Array([0x01]);
-						ws.send(buffer);
-					}
-
-					//console.log("报文 %s", PrintArry(buffer));
-
-
-					if (event.button == 0) {
-						var posX = event.offsetX * 1080 * 1.0 / myVideo.clientWidth;
-						var posY = event.offsetY * 1920 * 1.0 / myVideo.clientHeight;
-						var buffer = ExexuteMouseDown(posX.toString(), posY.toString());
-						ws.send(buffer);
-						isDrag = true;
-					}
-
-				}
-
-
-				myVideo.onmousemove = function(event) {
-					if (isDrag && event.button == 0) {
-						var posX = event.offsetX * 1080 * 1.0 / myVideo.clientWidth;
-						var posY = event.offsetY * 1920 * 1.0 / myVideo.clientHeight;
-						var buffer = ExexuteMouseMove(posX.toString(), posY.toString());
-						ws.send(buffer);
-						//console.log("移动位置 %d, %d", posX, posY);
-					}
-
-				}
-
-				myVideo.onmouseup = function(event) {
-					isDrag = false;
-					var posX = event.offsetX * 1080 * 1.0 / myVideo.clientWidth;
-					var posY = event.offsetY * 1920 * 1.0 / myVideo.clientHeight;
-					var buffer = ExexuteMouseUp(posX.toString(), posY.toString());
-					ws.send(buffer);
-
-				}
-
-				myVideo.onkeydown = function(event) {
-					ExexuteKeyDown(e.keyCode);
-				}
-
-			}
-
-			function Back() {
-				if (event.button == 2) {
-					//ExexuteKeyDown(4);
-				}
-				ExexuteKeyDown(4);
-				window.event.returnValue = false;
-				return false;
-			}
-		</script>
-		<script type="text/javascript" src="jmuxer.js"></script>
-		<!--<script type="text/javascript" src="aac.js"></script>-->
-
-	</body>
-</html>

File diff suppressed because it is too large
+ 0 - 2566
decoker/screenAndroid/jmuxer.js


File diff suppressed because it is too large
+ 0 - 2563
decoker/screenAndroid/jmuxer.min.js


+ 0 - 669
decoker/screenAndroid/mobile.vue

@@ -1,669 +0,0 @@
-<template>
-  <div>
-    <el-dialog v-el-drag-dialog :visible.sync="showMobile" title="" :close-on-click-modal="false" :close-on-press-escape="false" :custom-class="mobileStyle" @close="close">
-      <div slot="title" class="cfff fs14">
-        <span class="ml20">{{ mobileName }}</span>
-        <el-dropdown placement="bottom" class="fr mr100 oln" trigger="hover" @command="handleCommand" @visible-change="handleVisble">
-          <span class="fs14 cfff">{{ bitRateText }}<i :class="caretIcon" /></span>
-          <el-dropdown-menu slot="dropdown" class="mobile-dropdown-menu">
-            <el-dropdown-item :class="bitRateStyle('1638400')" command="1638400">自动</el-dropdown-item>
-            <el-dropdown-item :class="bitRateStyle('491520')" command="491520">极速</el-dropdown-item>
-            <el-dropdown-item :class="bitRateStyle('1392640')" command="1392640">标清</el-dropdown-item>
-            <el-dropdown-item :class="bitRateStyle('2785280')" command="2785280">高清</el-dropdown-item>
-          </el-dropdown-menu>
-        </el-dropdown>
-      </div>
-      <div class="frns">
-        <div class="mobile-audio">
-          <video
-            ref="player"
-            width="372px"
-            :controls="false"
-            autoplay
-            @play="ready"
-            @error="error"
-            @pause="pause"
-            @mousedown="handleMouseDown"
-            @mousemove="handleMouseMove"
-            @mouseup="handleMouseUp"
-            @mouseleave="handleMouseLeave"
-          />
-          <audio
-            ref="audioPlayer"
-            width="372px"
-            controls
-            autoplay
-            poster="@/assets/equipment/loader-thumb.jpg"
-          />
-          <div v-if="isMask" class="mask">
-            <i v-if="isLoading" class="el-icon-loading" />
-            <img v-if="isError" class="w180h148" src="@/assets/equipment/guzhang_lixian_pic.png" alt="">
-            <div class="c999 fs12 mt15">{{ maskText }}</div>
-          </div>
-        </div>
-        <div class="mobile-sidebar">
-          <i :class="volumeUpIcon" @click="handleRoutine(24)" />
-          <i :class="volumeDownIcon" @click="handleRoutine(25)" />
-          <el-popover placement="bottom-start" popper-class="nav-popover" width="109" trigger="hover">
-            <div class="tac ptb10 c333 fs14">重启</div>
-            <i slot="reference" :class="shutDownIcon" @click="reboot" />
-          </el-popover>
-          <el-popover placement="bottom-start" popper-class="nav-popover" width="109" trigger="hover">
-            <div class="tac ptb10 c333 fs14">恢复出厂设置</div>
-            <i slot="reference" :class="restartIcon" @click="recovery" />
-          </el-popover>
-        </div>
-      </div>
-      <div class="mobile-bottombar">
-        <i :class="menuIcon" @click="handleRoutine(187)" />
-        <i :class="homeIcon" @click="handleRoutine(3)" />
-        <i :class="backIcon" @click="handleRoutine(4)" />
-      </div>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import elDragDialog from '@/directive/el-drag-dialog'
-import JMuxer from 'jmuxer'
-import { getcardInfoBySn, rebootBatch, recovery, getcardStatus } from '@/api/mobile'
-import { ExexuteMouseDown, ExexuteMouseMove, ExexuteMouseUp, ExexuteKeyDown, ExexutePixel, ExexuteCloseServer, CheckScreenDirection, RequestIFrame, ConfigChannel } from '@/utils/control'
-import { keycodeMode } from '@/utils/config'
-
-const VIDEO_WIDTH = 371
-const VIDEO_HEIGHT = 660
-
-export default {
-  name: 'DragDialogDemo',
-  directives: { elDragDialog },
-  props: {
-    sn: {
-      type: Array,
-      default: () => {
-        return []
-      }
-    },
-    mobileName: {
-      type: String,
-      default: ''
-    },
-    mobileId: {
-      type: Number,
-      default: 0
-    }
-  },
-  data() {
-    return {
-      showMobile: true,
-      fpsCount: 0,
-      timeCount: 0,
-      isFeed: true,
-      curTime: new Date().getTime(),
-      requestTime: new Date().getTime(),
-      jmuxer: null,
-      audioMuxer: null,
-      ip: '', // 设备ip
-      port: '', // 设备端口号
-      size: '', // 设备分辨率
-      bitRate: '', // 设备清晰度
-      path: 'ws://192.168.11.66:9101', // websocket地址
-      socket: null, // websocket类
-      isDrag: false,
-      isLoading: true, // 加载中
-      isMask: true, // 遮罩层
-      maskText: '', // 加载文字
-      isError: false, // 是否设备故障或者离线
-      visble: false, // 下拉菜单是否展开
-      isRotate: false, // 是否横屏
-      isFlag: false
-    }
-  },
-  computed: {
-    bitRateStyle() {
-      return (num) => {
-        return this.bitRate === num ? 'pl20 bgcf3f6ff c515ff0 fs14' : 'pl20 c333 fs14'
-      }
-    },
-    bitRateText() {
-      /**
-       * 极速 | 491520,60KB/S
-       * 标清 | 1392640 ,170KB/S
-       * 自动 | 1638400 ,200KB/S
-       * 高清 | 2785280 ,340KB/S
-       */
-      const option = {
-        '1638400': '自动',
-        '491520': '极速',
-        '1392640': '标清',
-        '2785280': '高清'
-      }
-      return option[this.bitRate]
-    },
-    volumeUpIcon() {
-      return this.isLoading || this.isError ? 'icon-volume-up disabled mt50' : 'icon-volume-up mt50'
-    },
-    volumeDownIcon() {
-      return this.isLoading || this.isError ? 'icon-volume-down disabled mt40' : 'icon-volume-down mt40'
-    },
-    shutDownIcon() {
-      return this.isLoading || this.isError ? 'icon-shutdown disabled mt226ormt90' : 'icon-shutdown mt226ormt90'
-    },
-    restartIcon() {
-      return this.isLoading || this.isError ? 'icon-restart disabled mt40' : 'icon-restart mt40'
-    },
-    menuIcon() {
-      return this.isLoading || this.isError ? 'icon-background disabled' : 'icon-background'
-    },
-    homeIcon() {
-      return this.isLoading || this.isError ? 'icon-index disabled mlr64ormlr160' : 'icon-index mlr64ormlr160'
-    },
-    backIcon() {
-      return this.isLoading || this.isError ? 'icon-back disabled' : 'icon-back'
-    },
-    caretIcon() {
-      return this.visble ? 'el-icon-caret-top ml5' : 'el-icon-caret-bottom ml5'
-    },
-    mobileStyle() {
-      return this.isRotate ? 'mobile-dialog rotate' : 'mobile-dialog'
-    }
-  },
-  created() {
-    this.getcardInfoBySn()
-  },
-  mounted() {
-    document.addEventListener('visibilitychange', this.audioPlay)
-    document.addEventListener('keydown', this.handleKeyDown)
-    this.$nextTick(() => {
-      this.jmuxer = new JMuxer({
-        node: this.$refs.player,
-        flushingTime: 15,
-        fps: 30,
-        mode: 'video',
-        debug: false
-      })
-      this.audioMuxer = new JMuxer({
-        node: this.$refs.audioPlayer,
-        flushingTime: 1,
-        clearBuffer: true,
-        fps: 43, // 可以不选
-        mode: 'audio',
-        debug: false
-      })
-    })
-
-    this.curTime = new Date().getTime()
-  },
-  destroyed() {
-    document.removeEventListener('visibilitychange', this.audioPlay)
-    document.removeEventListener('keydown', this.handleKeyDown)
-    this.socket.send(ExexuteCloseServer(this.sn.join(','))) // 销毁监听
-    this.socket.close()
-  },
-  methods: {
-    handleVisble(flag) {
-      this.visble = flag
-    },
-    // 设备恢复出厂设置
-    recovery() {
-      if (this.isLoading || this.isError) {
-        this._message.warning('操作过于频繁,请稍后再试')
-        return
-      }
-      this.$confirm('<div class="c666 fs18 mb10">确认要恢复出厂设置吗?</div><div class="c999 fs14">恢复出厂后将恢复到初始设置并清除所有数据,恢复出厂过程/n中设备将不可操作。</div>', '恢复出厂', {
-        dangerouslyUseHTMLString: true,
-        confirmButtonText: '确认',
-        cancelButtonText: '取消',
-        customClass: 'cloud-phone-message-box', // 自定义消息样式类名
-        confirmButtonClass: 'cloud-phone-confirm-btn', // 自定义确认按钮样式类名
-        cancelButtonClass: 'cloud-phone-cancel-btn' // 自定义取消按钮样式类名
-      }).then(() => {
-        recovery({ sns: this.sn.join(',') }).then(res => {
-          if (res.status === 0) {
-            this.$alert('<div class="c666 fs18 mb10">恢复出厂设置指令已发送</div><div class="c999 fs14">若恢复出厂设置失败可重试</div>', '恢复出厂', {
-              dangerouslyUseHTMLString: true,
-              confirmButtonText: '确认',
-              customClass: 'cloud-phone-message-box',
-              confirmButtonClass: 'cloud-phone-confirm-btn', // 自定义确认按钮样式类名
-              callback: action => {
-                this.isMask = true
-                this.isLoading = true
-                this.maskText = '设备恢复出厂设置中...'
-                this._send()
-              }
-            })
-          } else {
-            this._message.error('恢复出厂设置指令发送失败,请稍后再试')
-          }
-        })
-      }).catch(() => {})
-    },
-    // 设备重启
-    reboot() {
-      if (this.isLoading || this.isError) {
-        this._message.warning('操作过于频繁,请稍后再试')
-        return
-      }
-      this.$confirm('<div class="c666 fs18 mb10">确认要重启设备吗?</div><div class="c999 fs14">重启后将完全关闭后台进程,重启过程中设备将不可操作。</div>', '重启', {
-        dangerouslyUseHTMLString: true,
-        confirmButtonText: '确认',
-        cancelButtonText: '取消',
-        customClass: 'cloud-phone-message-box', // 自定义消息样式类名
-        confirmButtonClass: 'cloud-phone-confirm-btn', // 自定义确认按钮样式类名
-        cancelButtonClass: 'cloud-phone-cancel-btn' // 自定义取消按钮样式类名
-      }).then(() => {
-        rebootBatch({ sns: this.sn.join(',') }).then(res => {
-          if (res.status === 0) {
-            this.$alert('<div class="c666 fs18 mb10">重启指令已发送</div><div class="c999 fs14">若重启失败可重试</div>', '重启', {
-              dangerouslyUseHTMLString: true,
-              confirmButtonText: '确认',
-              customClass: 'cloud-phone-message-box',
-              confirmButtonClass: 'cloud-phone-confirm-btn', // 自定义确认按钮样式类名
-              callback: action => {
-                this.isMask = true
-                this.isLoading = true
-                this.maskText = '设备重启中...'
-                this._send()
-              }
-            })
-          } else {
-            this._message.error('重启指令发送失败,请稍后再试')
-          }
-        })
-      }).catch(() => {})
-    },
-    async _send() {
-      const state = await this.getcardStatus()
-      if (state === '1') {
-        this.socket.send(ExexuteCloseServer(this.sn.join(','))) // 销毁监听
-        this.socket.close()
-        this.init()
-        this.isLoading = false
-        this.isMask = false
-        this.maskText = ''
-      } else {
-        setTimeout(() => {
-          this._send()
-        }, 3000)
-      }
-    },
-    async getcardStatus() {
-      const res = await getcardStatus({ sns: this.sn.join(',') }).then(res => { return res })
-      let state = '0'
-      if (res.status === 0) {
-        state = res.data[0].state
-      }
-      return state
-    },
-    // 设置像素
-    handleCommand(command) {
-      if (this.isLoading || this.isError) {
-        return
-      }
-      this.bitRate = command
-      const buffer = ExexutePixel(command, this.sn.join(','))
-      this.socket.send(buffer)
-    },
-    // 音量加减、home键、back事件(keyCode的值分别表示为25减音量,24加音量,4为返回键,3为home键,187为切换菜单)
-    handleRoutine(code) {
-      if (this.isLoading || this.isError) {
-        return
-      }
-      const buffer = ExexuteKeyDown(code, this.sn.join(','))
-      this.socket.send(buffer)
-    },
-    // 鼠标点击事件
-    handleMouseDown(event) {
-      if (this.isLoading || this.isError) {
-        return
-      }
-      if (event.button === 0) {
-        var posX = this.isRotate ? event.offsetY / VIDEO_HEIGHT * 1920 * 1.0 : event.offsetX / VIDEO_WIDTH * 1080 * 1.0
-        var posY = this.isRotate ? (VIDEO_WIDTH - event.offsetX) / VIDEO_WIDTH * 1080 * 1.0 : event.offsetY / VIDEO_HEIGHT * 1920 * 1.0
-        var buffer = ExexuteMouseDown(posX.toString(), posY.toString(), this.sn.join(','))
-        this.socket.send(buffer)
-        this.isDrag = true
-      }
-    },
-    // 鼠标移开事件
-    handleMouseLeave(event) {
-      if (this.isLoading || this.isError) {
-        return
-      }
-      this.isDrag = false
-      var posX = this.isRotate ? event.offsetY / VIDEO_HEIGHT * 1920 * 1.0 : event.offsetX / VIDEO_WIDTH * 1080 * 1.0
-      var posY = this.isRotate ? (VIDEO_WIDTH - event.offsetX) / VIDEO_WIDTH * 1080 * 1.0 : event.offsetY / VIDEO_HEIGHT * 1920 * 1.0
-      var buffer = ExexuteMouseUp(posX.toString(), posY.toString(), this.sn.join(','))
-      this.socket.send(buffer)
-    },
-    // 鼠标移动事件
-    handleMouseMove(event) {
-      if (this.isLoading || this.isError) {
-        return
-      }
-      if (this.isDrag && event.button === 0) {
-        var posX = this.isRotate ? event.offsetY / VIDEO_HEIGHT * 1920 * 1.0 : event.offsetX / VIDEO_WIDTH * 1080 * 1.0
-        var posY = this.isRotate ? (VIDEO_WIDTH - event.offsetX) / VIDEO_WIDTH * 1080 * 1.0 : event.offsetY / VIDEO_HEIGHT * 1920 * 1.0
-        var buffer = ExexuteMouseMove(posX.toString(), posY.toString(), this.sn.join(','))
-        this.socket.send(buffer)
-      }
-    },
-    // 鼠标离开事件
-    handleMouseUp(event) {
-      if (this.isLoading || this.isError) {
-        return
-      }
-      this.isDrag = false
-      var posX = this.isRotate ? event.offsetY / VIDEO_HEIGHT * 1920 * 1.0 : event.offsetX / VIDEO_WIDTH * 1080 * 1.0
-      var posY = this.isRotate ? (VIDEO_WIDTH - event.offsetX) / VIDEO_WIDTH * 1080 * 1.0 : event.offsetY / VIDEO_HEIGHT * 1920 * 1.0
-      var buffer = ExexuteMouseUp(posX.toString(), posY.toString(), this.sn.join(','))
-      this.socket.send(buffer)
-    },
-    // 键盘输入事件
-    handleKeyDown(event) {
-      if (this.isLoading || this.isError) {
-        return
-      }
-      var buffer = ExexuteKeyDown(keycodeMode[event.keyCode] || event.keyCode, this.sn.join(','))
-      this.socket.send(buffer)
-    },
-    // websocket初始化
-    init() {
-      this.socket = new WebSocket(this.path) // 实例化socket
-      this.socket.binaryType = 'arraybuffer'
-      this.socket.onopen = this.open // 监听socket连接
-      this.socket.onerror = this.onerror // 监听socket错误信息
-      this.socket.onmessage = this.getMessage // 监听socket消息
-    },
-    // websocket连接成功回调
-    open() {
-      this.isMask = false
-      this.isError = false
-      this.socket.send(ConfigChannel(this.sn))
-      this.socket.onmessage = this.getMessage
-    },
-    // websocket连接失败回调
-    onerror() {
-      console.log('websocket连接失败')
-      this.isLoading = false
-      this.isError = true
-      this.maskText = '设备故障或离线'
-    },
-    getMessage(event) {
-      const data = this.parse(event.data) // 分离音视频数据
-      const audioData = {
-        audio: data.audio,
-        video: null,
-        duration: data.duration
-      }
-      // const videoData = {
-      //   audio: null,
-      //   video: data.video,
-      //   duration: data.duration
-      // }
-
-      if (this.$refs.audioPlayer && this.$refs.audioPlayer.readyState === 2) {
-        const playPromise = this.$refs.audioPlayer.play()
-        if (playPromise !== undefined) {
-          playPromise.then(() => {
-            this.$refs.audioPlayer.play()
-          }).catch(() => {})
-        }
-      }
-      if (data.audio != null) { // 喂音频
-        this.audioMuxer.feed(audioData)
-      }
-      if (data.video != null && this.isFeed) { // 喂视频
-        this.jmuxer.feed(data)
-      }
-      if (data.video) {
-        if (new Date().getTime() - this.curTime >= 1000) {
-          this.fpsCount = 0
-          this.curTime = new Date().getTime()
-        } else {
-          this.fpsCount++
-        }
-      }
-    },
-    // 弹窗关闭
-    close() {
-      this.$emit('closeDialog', 'showMobile')
-    },
-    // 根据sn获取设备获取清晰度、端口号和ip
-    getcardInfoBySn() {
-      var list = []
-      list.push(this.mobileId)
-      getcardInfoBySn({ mobileIdList: list }).then(res => {
-        if (res.status === 0) {
-          this.ip = res.data[0].ip
-          this.port = res.data[0].port
-          this.size = res.data[0].size
-          this.bitRate = res.data[0].bitRate === '0' ? '1638400' : res.data.bitRate
-          this.path = `ws://${res.data[0].ip}:${res.data[0].websocketPort.toString()}`
-          //console.log(this.path)
-          this.init()
-        }
-      })
-    },
-    pause() {
-      this.isFeed = false
-    },
-    audioPlay() {
-      if (document.visibilityState === 'visible') {
-        this.isFlag = true
-        this.socket.send(RequestIFrame(this.sn.join(',')))
-      } else {
-        this.isFlag = false
-        this.isFeed = false
-        this.$refs.player.pause()
-      }
-    },
-    ready() {
-      this.isLoading = false
-    },
-    error() {
-      this.isMask = true
-      this.isError = true
-    },
-    parse(data) {
-      // var input = new Uint8Array(data)
-      // var dv = new DataView(input.buffer)
-      // var duration = dv.getUint16(0, true) // 获取duration
-      // var audioLength = dv.getUint16(2, true)
-      // var audio
-      // var video
-
-      // if (audioLength === 0) {
-      //   video = input.subarray(4)
-      // } else {
-      //   audio = input.subarray(4, (audioLength + 4))
-      //   video = input.subarray(audioLength + 4)
-      // }
-
-      // return {
-      //   audio: audio,
-      //   video: video,
-      //   duration: duration
-      // }
-      var input = new Uint8Array(data)
-      var duration
-      var video
-      var audio
-      if (input[0] === 0 && input[1] === 0 && input[2] === 0 && input[3] === 1) {
-        video = input
-        duration = 24
-        var nalType = input[4] & 0x1f
-        if (nalType === 0x05 && this.isFlag) { // 策略, 找到sps、sps、或I帧,才继续渲染
-          this.isFeed = true
-        }
-      } else if (input[0] === 0xff) {
-        audio = input
-        duration = 24
-      } else if (input[23] === 0x0b) {
-        this.$alert('<div class="c666 fs18 mb10">设备' + this.mobileName + '已在其它端受控</div>', '提示', {
-          dangerouslyUseHTMLString: true,
-          confirmButtonText: '确认',
-          customClass: 'cloud-phone-message-box',
-          confirmButtonClass: 'cloud-phone-confirm-btn', // 自定义确认按钮样式类名
-          callback: action => {
-            this.showMobile = false
-          }
-        })
-      } else if (input[0] === 0x68 && input[23] === 0x05) {
-        var state = CheckScreenDirection(input.slice(24, 24 + 8))
-        if (state === 1) {
-          this.isRotate = false
-        } else {
-          this.isRotate = true
-        }
-      }
-
-      return {
-        audio: audio,
-        video: video,
-        duration: duration
-      }
-    }
-  }
-}
-</script>
-
-<style lang="scss">
-  .ml111 {margin-left: 111px;}.mt50{margin-top: 50px;}.mt40{margin-top: 40px;}
-  .w180h148 {width: 180px;height: 148px;}.mr100{margin-right: 100px;}
-  .mobile-dialog {
-    width: 417px;
-    height: 740px;
-    background: #141414;
-    box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.5);
-    border-radius: 0;
-    &.rotate {
-      width: 705px;
-      height: 452px;
-      .el-dialog__body {
-        padding: 0;
-        .mt226ormt90{
-          margin-top: 90px;
-        }
-        .mlr64ormlr160{
-          margin-left: 160px;
-          margin-right: 160px;
-        }
-        .mobile-audio {
-          width: 660px;
-          height: 372px;
-          position: relative;
-          video {
-            transform:rotate(-90deg);
-            position: absolute;
-            top: -145px;
-            left: 145px;
-          }
-          .mask {
-            width: 100%;
-            height: 100%;
-            background-color: #fff;
-            position: absolute;
-            top: 0;
-            left: 0;
-            display: flex;
-            align-items: center;
-            justify-content: center;
-            flex-direction: column;
-          }
-        }
-        .mobile-sidebar {
-          width: 45px;
-          height: 372px;
-          display: flex;
-          flex-direction: column;
-          align-items: center;
-        }
-        .mobile-bottombar {
-          width: 100%;
-          height: 40px;
-          display: flex;
-          align-items: center;
-          justify-content: center;
-        }
-      }
-    }
-    .el-dialog__header {
-      height: 40px;
-      line-height: 40px;
-      padding: 0;
-      .el-dialog__headerbtn {
-        top: 13px;
-        right: 15px;
-        font-size: 14px;
-        .el-dialog__close {
-          color: #fff;
-          font-weight: 800;
-        }
-      }
-    }
-    .el-dialog__body {
-      padding: 0;
-      .mt226ormt90 {
-        margin-top: 226px;
-      }
-      .mlr64ormlr160{
-        margin-left: 64px;
-        margin-right: 64px;
-      }
-      .mobile-audio {
-        width: 371px;
-        height: 660px;
-        position: relative;
-        .mask {
-          width: 100%;
-          height: 100%;
-          background-color: #fff;
-          position: absolute;
-          top: 0;
-          left: 0;
-          display: flex;
-          align-items: center;
-          justify-content: center;
-          flex-direction: column;
-        }
-      }
-      .mobile-sidebar {
-        width: 46px;
-        height: 660px;
-        display: flex;
-        flex-direction: column;
-        align-items: center;
-      }
-      .mobile-bottombar {
-        width: 100%;
-        height: 40px;
-        display: flex;
-        align-items: center;
-        justify-content: center;
-      }
-    }
-  }
-  .mobile-dropdown-menu {
-    width: 110px;
-    padding: 5px 0;
-    border: none;
-    box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.3);
-    .popper__arrow {
-      border-width: 10px;
-      border-bottom-color: #fff !important;
-      top: -8px !important;
-      left: 60px !important;
-    }
-    .el-dropdown-menu__item {
-      height: 40px;
-      line-height: 40px;
-      &:hover {
-        background-color: #F3F6FF;
-        color: #333;
-      }
-    }
-  }
-  audio {
-    display: none;
-  }
-</style>

+ 0 - 3
decoker/screenAndroid/package-lock.json

@@ -1,3 +0,0 @@
-{
-  "lockfileVersion": 1
-}

+ 0 - 126
decoker/screenAndroid/pcm-player.js

@@ -1,126 +0,0 @@
-function PCMPlayer(option) {
-    this.init(option);
-}
-
-PCMPlayer.prototype.init = function(option) {
-    var defaults = {
-        encoding: '16bitInt',
-        channels: 1,
-        sampleRate: 8000,
-        flushingTime: 1000
-    };
-    this.option = Object.assign({}, defaults, option);
-    this.samples = new Float32Array();
-    this.flush = this.flush.bind(this);
-    this.interval = setInterval(this.flush, this.option.flushingTime);
-    this.maxValue = this.getMaxValue();
-    this.typedArray = this.getTypedArray();
-    this.createContext();
-};
-
-PCMPlayer.prototype.getMaxValue = function () {
-    var encodings = {
-        '8bitInt': 128,
-        '16bitInt': 32768,
-        '32bitInt': 2147483648,
-        '32bitFloat': 1
-    }
-
-    return encodings[this.option.encoding] ? encodings[this.option.encoding] : encodings['16bitInt'];
-};
-
-PCMPlayer.prototype.getTypedArray = function () {
-    var typedArrays = {
-        '8bitInt': Int8Array,
-        '16bitInt': Int16Array,
-        '32bitInt': Int32Array,
-        '32bitFloat': Float32Array
-    }
-
-    return typedArrays[this.option.encoding] ? typedArrays[this.option.encoding] : typedArrays['16bitInt'];
-};
-
-PCMPlayer.prototype.createContext = function() {
-    this.audioCtx = new (window.AudioContext || window.webkitAudioContext)();
-    this.gainNode = this.audioCtx.createGain();
-    this.gainNode.gain.value = 1;
-    this.gainNode.connect(this.audioCtx.destination);
-    this.startTime = this.audioCtx.currentTime;
-};
-
-PCMPlayer.prototype.isTypedArray = function(data) {
-    return (data.byteLength && data.buffer && data.buffer.constructor == ArrayBuffer);
-};
-
-PCMPlayer.prototype.feed = function(data) {
-    if (!this.isTypedArray(data)) return;
-    data = this.getFormatedValue(data);
-    var tmp = new Float32Array(this.samples.length + data.length);
-    tmp.set(this.samples, 0);
-    tmp.set(data, this.samples.length);
-    this.samples = tmp;
-};
-
-PCMPlayer.prototype.getFormatedValue = function(data) {
-    var data = new this.typedArray(data.buffer),
-        float32 = new Float32Array(data.length),
-        i;
-
-    for (i = 0; i < data.length; i++) {
-        float32[i] = data[i] / this.maxValue;
-    }
-    return float32;
-};
-
-PCMPlayer.prototype.volume = function(volume) {
-    this.gainNode.gain.value = volume;
-};
-
-PCMPlayer.prototype.destroy = function() {
-    if (this.interval) {
-        clearInterval(this.interval);
-    }
-    this.samples = null;
-    this.audioCtx.close();
-    this.audioCtx = null;
-};
-
-PCMPlayer.prototype.flush = function() {
-    if (!this.samples.length) return;
-    var bufferSource = this.audioCtx.createBufferSource(),
-        length = this.samples.length / this.option.channels,
-        audioBuffer = this.audioCtx.createBuffer(this.option.channels, length, this.option.sampleRate),
-        audioData,
-        channel,
-        offset,
-        i,
-        decrement;
-
-    for (channel = 0; channel < this.option.channels; channel++) {
-        audioData = audioBuffer.getChannelData(channel);
-        offset = channel;
-        decrement = 50;
-        for (i = 0; i < length; i++) {
-            audioData[i] = this.samples[offset];
-            /* fadein */
-            if (i < 50) {
-                audioData[i] =  (audioData[i] * i) / 50;
-            }
-            /* fadeout*/
-            if (i >= (length - 51)) {
-                audioData[i] =  (audioData[i] * decrement--) / 50;
-            }
-            offset += this.option.channels;
-        }
-    }
-    
-    if (this.startTime < this.audioCtx.currentTime) {
-        this.startTime = this.audioCtx.currentTime;
-    }
-    //console.log('start vs current '+this.startTime+' vs '+this.audioCtx.currentTime+' duration: '+audioBuffer.duration);
-    bufferSource.buffer = audioBuffer;
-    bufferSource.connect(this.gainNode);
-    bufferSource.start(this.startTime);
-    this.startTime += audioBuffer.duration;
-    this.samples = new Float32Array();
-};

+ 0 - 173
decoker/screenAndroid/temp.html

@@ -1,173 +0,0 @@
-
-
-
-
-
-
-
-
-<!DOCTYPE html>
-
-
-
-
-<html>
-<head>
-	<meta charset="utf-8"> 
-	<title>AAC &mdash; Audiocogs</title>
-	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
-
-	<link rel="stylesheet" type="text/css" href="/css/all.min.css">
-	<link rel="shortcut icon" href="/favicon.ico">
-	<!--[if lt IE 9]>
-	<script src="/scripts/html5shiv.js"></script>
-	<![endif]-->
-
-	<link rel="alternate" type="application/rss+xml" title="Audiocogs Blog" href="/rss.xml">
-</head>
-<body class="codec">
-<section>
-	<header class="main">
-		<div class="inner">
-		<h1>
-			<div id="name">
-				<a href="/">Audiocogs</a>
-			</div>
-			<div id="social">
-				<a href="http://twitter.com/audiocogs"><img id="twitterbird" class="twitter" width="30" height="30" src="/images/white-twitter.png" alt="Audiocogs on twitter."></a>
-				<a href="https://github.com/audiocogs"><img id="white-octocat" class="github" width="30" height="30" src="/images/white-octocat.png" alt="Audiocogs on github."></a>
-			</div>
-		</h1>
-		</div>
-	</header>
-	<section id="content">
-		<div class="title-nav">
-			<ul>
-
-        <li><a href="/codecs">Codecs</a></li>
-
-        <li><a href="/codecs/mp3">MP3</a></li>
-        <li><a href="/codecs/alac">ALAC</a></li>
-        <li><a href="/codecs/flac">FLAC</a></li>
-        <li><a href="/codecs/aac">AAC</a></li>
-
-			</ul>
-		</div>
-
-		<article>
-			<header>
-				
-				<h1 id="article_title">AAC</h1>
-				
-				
-			</header>
-
-
-<link rel="stylesheet" href="/dgplayer/player.css" />
-
-<script src="/dgplayer/resources/classlist.js"></script>
-<script>
-var unsupported;
-if (!window.Audio || !('mozWriteAudio' in new Audio()) && !window.AudioContext && !window.webkitAudioContext) {
-    unsupported = true;
-    document.body.classList.add("unsupported");
-}
-</script>
-<div id="unsupported">
-We're really sorry about this, but it looks like your browser doesn't support an Audio API. Please
-try these demos in Chrome 15+ or Firefox 8+ or watch a <a href="http://vimeo.com/33919455">screencast</a>.
-</div>
-
-
-<p>Advanced Audio Coding (AAC) is a standardized, high quality lossy audio codec, designed as the successor to the MP3 format. AAC is now one of the most widely deployed audio codecs, and such names as the iTunes Store distribute music in the AAC format.</p>
-
-<p>AAC can be played in a limited number of browsers using the HTML5 audio element, however, some browsers do not support the codec for various reasons. <a href="https://github.com/ofmlabs/aac.js">AAC.js</a> is a JavaScript AAC decoder that enables decoding and playback of AAC files in all browsers supported by the <a href="https://github.com/ofmlabs/aurora.js">Aurora.js</a> audio framework.</p>
-
-
-<script src="/dgplayer/player.js"></script>
-<script src="/codecs/js/auroraplayer.js"></script>
-
-<div class="player" id="dgplayer" tabindex="0">
-    <div class="avatar">
-        <img src="/dgplayer/resources/fallback_album_art.png">
-    </div>
-
-    <span class="title">Unknown Title</span>
-    <span class="artist">Unknown Artist</span>
-
-    <div class="button"></div>
-
-    <div class="volume">
-        <img src="/dgplayer/resources/volume_high.png">
-        <div class="track">
-            <div class="progress"></div>
-            <div class="handle"></div>
-        </div>
-        <img src="/dgplayer/resources/volume_low.png">
-    </div>
-
-    <div class="seek">
-        <span>0:00</span>
-        <div class="track">
-            <div class="loaded"></div>
-            <div class="progress"></div>
-        </div>
-        <span>-0:00</span>
-    </div>
-    
-    <div class="file_button"></div>
-    <span class="file_description">Choose an AAC file on your computer</span>
-</div>
-
-<script src="/codecs/js/aurora.js"></script>
-<script src="/codecs/js/aac.js"></script>
-
-<script type="text/javascript">
-// Chrome doesn't support changing the sample rate, and uses whatever the hardware supports.
-// We cheat here.  Instead of resampling on the fly, we're currently just loading two different
-// files based on common hardware sample rates.
-var _sampleRate = (function() {
-    var AudioContext = (window.AudioContext || window.webkitAudioContext);
-    if (!AudioContext)
-        return 44100;
-    
-    return new AudioContext().sampleRate;
-}());
-
-(function(DGPlayer){
-    if (unsupported) return;
-    
-    DGPlayer.volume = 100;
-    
-    var player, onplay;
-    var url = '';
-    
-    DGPlayer.on('play', onplay = function(){
-        if (player)
-            player.disconnect();
-            
-        player = new DGAuroraPlayer(AV.Player.fromURL(url), DGPlayer);
-        DGPlayer.off('play', onplay);
-    });
-    
-    DGPlayer.on('file', function(file) {        
-        if (file) {
-            if (player)
-                player.disconnect();
-                
-            player = new DGAuroraPlayer(AV.Player.fromFile(file), DGPlayer);
-            DGPlayer.off('play', onplay);
-        }
-    });
-    
-}(DGPlayer(document.getElementById('dgplayer'))));
-</script>
-
-
-		</article>
-
-	</section>
-</section>
-</body>
-</html>
-

+ 0 - 428
decoker/screenIosEdit/WXdraw.js

@@ -1,428 +0,0 @@
-//画布
-var canvas;
-var context;
-//蒙版
-var canvas_bak = document.getElementById("box");;
-var context_bak;
-
-var canvasWidth = 720;
-var canvasHeight = 1280;
-
-var canvasTop;
-var canvasLeft;
-var winHeight = window.screen.height - window.innerHeight
-var vowidth = window.screen.width
-var topwinHeightDraw = window.screen.height - window.innerHeight + 30; //计算title top 头部
-var numse = window.screen.height //-winHeight
-// function getUrlParam(name) {
-// var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
-// var r = window.location.search.substr(1).match(reg); //匹配目标参数
-// if (r != null) return unescape(r[2]); return null; //返回参数值
-// }
-// var sn = getUrlParam('sn');
-//计算title top 头部
-if (numse <= 70) {
-
-	var voheight = window.screen.height - winHeight - 34 - 20
-} else {
-	console.log("numse>>>", numse)
-	var voheight = window.screen.height - topwinHeightDraw - 20
-}
-
-//console.log("画笔大小>>>",window.innerHeight)
-//画笔大小
-var size = 1;
-var color = '#000000';
-var resolving
-//alert(winHeight)
-var url = window.location.href;
-url = url.split('/')
-
-var query = window.location.search.substring(1);
-// debugger
-// query = "clientType=3&username=WqXTc1593762177&userCardId=377"
-// debugger
-var vars = query.split("&");
-var data = {}
-var clientType = vars.find(e => {
-	return e.startsWith('clientType')
-}) || ''
-var cardIp = vars.find(e => {
-	return e.startsWith('cardIp')
-}) || ''
-var port = vars.find(e => {
-	return e.startsWith('port')
-}) || ''
-
-var sn = vars.find(e => {
-	return e.startsWith('sn')
-}) || ''
-var username = vars.find(e => {
-	return e.startsWith('username')
-}) || ''
-var userCardId = vars.find(e => {
-	return e.startsWith('userCardId')
-}) || ''
-var ip = vars.find(e => {
-	return e.startsWith('ip')
-}) || ''
-
-var data = {}
-data.clientType = clientType.substring(11, clientType.length)
-
-data.cardIp = cardIp.substring(7, cardIp.length)
-
-data.port = port.substring(5, port.length)
-
-data.sn = sn.substring(3, sn.length)
-data.username = username.substring(9, username.length)
-data.userCardId = userCardId.substring(11, userCardId.length)
-data.ip = ip.substring(3, ip.length)
-// var urlss=url[2]
-// urlss = "14.215.128.96"
-urlss = '192.168.31.20'
-// urlss = 'test.androidscloud.com'
-// debugger
-// var cUrl = ''
-// cUrl = "ws://192.168.11.66:9101";
-// var cUrl="14.215.128.98:14102"
-var cUrl = "ws://192.168.198.21:9101"
-// if (data.clientType == 3) {
-// 	cUrl = "wss://" + urlss + "/authControlWebSocket?" + "clientType=" + data.clientType + "&username=" + data.username +
-// 		"&userCardId=" + data.userCardId
-// } else if (data.clientType == 2) {
-// 	// cUrl = "wss://" + urlss + "/shareWebSocket?" + "clientType=" + data.clientType + "&username=" + data.username +
-// 	// 	"&userCardId=" + data.userCardId + "&ip=" + data.ip
-// 	cUrl = "wss://test.androidscloud.com/videoWebSocket?clientType=1&cardIp=14.215.128.96&port=2005&sn=RK3930C2301900005";
-// } else {
-// 	cUrl = "wss://" + urlss + "/controlWebSocket?" + "clientType=" + data.clientType + "&cardIp=" + data.cardIp + "&port=" +
-// 		data.port + "&sn=" + data.sn
-// }
-console.log(cUrl, 'curl')
-// var cUrl = Number(data.clientType) === 3? "ws://"+urlss+"/authControlWebSocket?"+"clientType="+data.clientType+"&username="+data.username+"&userCardId="+data.userCardId : "ws://"+urlss+"/controlWebSocket?"+"clientType="+data.clientType+"&cardIp="+data.cardIp+"&port="+data.port+"&sn="+data.sn
-var wsss = new WebSocket(cUrl);
-console.log('wsssss==============', wsss)
-wsss.binaryType = 'arraybuffer';
-////
-// wsss = new WebSocket(
-// 	"ws://14.215.128.96/authControlWebSocket?clientType=3&username=WqXTc1593762177&userCardId=377");
-
-wsss.onopen = function() {
-	console.log("onopen==============");
-	var pings = {
-		"event": "getScreenStatus"
-	}
-	wsss.send(JSON.stringify(pings));
-	var bitRate = {
-		"data": {
-			"bitRate": 2243000
-		},
-		"event": "bitRate"
-	}
-	console.log('打开安卓卡wsss.onopen========', data.sn)
-	// wsss.send(JSON.stringify(bitRate));
-	wsss.send(ExexuteMove(JSON.stringify(bitRate), data.sn))
-};
-wsss.onmessage = function(event) {
-	// console.log("onMessage==============", event);
-	// var resets = JSON.parse(event.data)
-	// var resets = event.data;
-	// resets.errorMsg && alert(resets.errorMsg)
-	// resolving = resets.data.orientation
-	// if (resolving == 1) {} else {}
-	// console.log('>>>resolvingresolvingresolving', resolving)
-
-};
-wsss.onclose = function(event) {
-	console.log("onclose==============");
-};
-wsss.onerror = function(event) {
-	console.log("onerror==============");
-};
-$('#box').on("click", function() {
-
-	draw_graph('pencil', this)
-})
-//剪切板
-$(".upload").on("click", function() {
-	let texts = $(this).attr("data-text")
-	if (texts == "uploads") {
-		$(".mainbox").css({
-			"display": "block"
-		})
-		$(".sbox").css({
-			"display": "none"
-		})
-	} else if (texts == "Signout") {
-		//		alert()
-
-	}
-})
-
-//home 控制home
-$(".botmat1img").on("click", function() {
-	let codes = $(this).attr("data-text")
-	console.log("homehomehome---------",codes)
-	if (codes == "home") {
-		// var bitRate = {
-		// 	"data": {
-		// 		"keyCode": 3
-		// 	},
-		// 	"event": "keyCode"
-		// }
-		console.log("打印主页json", data.sn)
-		wsss.send(ExexuteKeyBoard(3, data.sn));
-		// console.log("打印主页json", wsss)
-	} else if (codes == "return") {
-		// var bitRate = {
-		// 	"data": {
-		// 		"keyCode": "4"
-		// 	},
-		// 	"event": "keyCode"
-		// }
-		// wsss.send(JSON.stringify(bitRate));
-		wsss.send(ExexuteKeyBoard(4, data.sn));
-	} else if (codes == "gengduo") {
-		// var bitRate = {
-		// 	"data": {
-		// 		"keyCode": "187"
-		// 	},
-		// 	"event": "keyCode"
-		// }
-		// wsss.send(JSON.stringify(bitRate));
-		wsss.send(ExexuteKeyBoard(187, data.sn));
-	}
-
-})
-//高清控制
-$(".PictureQuality").on("click", function() {
-	$(this).addClass("avit").siblings().removeClass('avit')
-	let id = $(this).attr("data-id")
-	var bitRate = {
-		"data": {
-			"bitRate": id
-		},
-		"event": "bitRate"
-	}
-	// wsss.send(JSON.stringify(bitRate));
-	console.log('打开安卓卡11==============', data.sn)
-	wsss.send(ExexuteMove(JSON.stringify(bitRate), data.sn))
-	console.log(id)
-})
-
-//画图形
-var draw_graph = function(graphType, obj) {
-	console.log('111》》》', graphType)
-	//把蒙版放于画板上面
-	//$("#canvas_bak").css("z-index",1);
-	$("#container").css("z-index", 30);
-	$("#dedit").css("z-index", 20);
-	//先画在蒙版上 再复制到画布上
-
-	chooseImg(obj);
-	var canDraw = false;
-
-	var startX;
-	var startY;
-
-	//鼠标按下获取 开始xy开始画图
-	var touchstart = function(e) {
-		$('.control-right-img').attr({
-			"data-id": "2"
-		})
-		$(".leftmains").css({
-			"right": "-4rem"
-		})
-		//		.toFixed(2)
-		var touchfor = e.originalEvent.targetTouches; //for 的手指数组
-		var touch = e.originalEvent.targetTouches[0];
-		var thochlethng = e.originalEvent.targetTouches.length
-		//是否横屏
-		if (resolving == 0) {
-			let ping
-			for (let i = 0; i < touchfor.length; i++) {
-				let cawidthXs = touchfor[i].pageY * (1280 / voheight)
-				let caheightYs = 720 - touchfor[i].pageX * (720 / vowidth)
-				ping = {
-					"data": {
-						"action": 0,
-						"count": touchfor.length,
-						"pointerId": i,
-						"x": cawidthXs.toFixed(2),
-						"y": caheightYs.toFixed(2)
-					},
-					"event": "0"
-				}
-			}
-			// wsss.send(JSON.stringify(ping));
-			console.log('打开安卓卡鼠标按下获取 开始xy开始画图======', data.sn)
-			wsss.send(ExexuteMove(JSON.stringify(ping), data.sn))
-			console.log("鼠标按下>>>", ping, data.sn)
-		} else {
-			let ping
-			for (let i = 0; i < touchfor.length; i++) {
-				let cawidthXs = touchfor[i].pageX * (720 / vowidth)
-				let caheightYs = touchfor[i].pageY * (1280 / voheight)
-				ping = {
-					"data": {
-						"action": 0,
-						"count": touchfor.length,
-						"pointerId": i,
-						"x": cawidthXs.toFixed(2),
-						"y": caheightYs.toFixed(2)
-					},
-					"event": "0"
-				}
-
-			}
-			// wsss.send(JSON.stringify(ping));
-			console.log('打开安卓卡=22=============', data.sn)
-			wsss.send(ExexuteMove(JSON.stringify(ping), data.sn))
-			console.log("鼠标按下>>>", ping, data.sn)
-		}
-
-		canDraw = true;
-
-	};
-
-	//鼠标离开 把蒙版canvas的图片生成到canvas中
-	var touchend = function(e) {
-		var touchfor = e.originalEvent.changedTouches; //for 的手指数组
-		var touch = e.originalEvent.changedTouches[0];
-		var thochlethng = e.originalEvent.changedTouches.length
-		//	 alert(thochlethng)
-		//是否横屏 morePortionUp
-		if (resolving == 0) {
-			let ping
-			for (let i = 0; i < touchfor.length; i++) {
-				let cawidthXs = touchfor[i].pageY * (1280 / voheight)
-				let caheightYs = 720 - touchfor[i].pageX * (720 / vowidth)
-				ping = {
-					"data": {
-						"action": 1,
-						"count": touchfor.length,
-						"pointerId": i,
-						"x": cawidthXs.toFixed(2),
-						"y": caheightYs.toFixed(2)
-					},
-					"event": "1"
-				}
-			}
-
-			// wsss.send(JSON.stringify(ping));
-			console.log('打开安卓卡==33============', data.sn)
-			wsss.send(ExexuteMove(JSON.stringify(ping), data.sn))
-
-		} else {
-			let ping
-			for (let i = 0; i < touchfor.length; i++) {
-				let cawidthXs = touchfor[i].pageX * (720 / vowidth)
-				let caheightYs = touchfor[i].pageY * (1280 / voheight)
-				ping = {
-					"data": {
-						"action": 1,
-						"count": touchfor.length,
-						"pointerId": i,
-						"x": cawidthXs.toFixed(2),
-						"y": caheightYs.toFixed(2)
-					},
-					"event": "1"
-				}
-			}
-
-			// wsss.send(JSON.stringify(ping));
-			console.log('打开安卓卡=55=============', data.sn)
-			wsss.send(ExexuteMove(JSON.stringify(ping), data.sn))
-		}
-
-		canDraw = false;
-
-	};
-
-	//清空层 云手机超出屏幕的开关
-	var clearContext = function(type) {
-		canDraw = false;
-	}
-
-	// 鼠标移动
-	var touchmove = function(e) {
-
-		e = e || window.event;
-		var touchfor = e.originalEvent.targetTouches; //for 的手指数组
-		var touch = e.originalEvent.targetTouches[0];
-		var thochlethng = e.originalEvent.targetTouches.length
-		let ping
-		//是否横屏  morePortionMove
-		if (resolving == 0) {
-			let obj = []
-			for (let i = 0; i < touchfor.length; i++) {
-				let cawidthXs = touchfor[i].pageY * (1280 / voheight)
-				let caheightYs = 720 - touchfor[i].pageX * (720 / vowidth)
-
-				ping = {
-					"data": {
-						"action": 2,
-						"count": touchfor.length,
-						"pointerId": i,
-						"x": cawidthXs.toFixed(2),
-						"y": caheightYs.toFixed(2)
-					},
-					"event": "2"
-				}
-
-			}
-
-			// wsss.send(JSON.stringify(ping));
-			console.log('打开安卓卡==66============', data.sn)
-			wsss.send(ExexuteMove(JSON.stringify(ping), data.sn))
-		} else {
-			let ping
-			for (let i = 0; i < touchfor.length; i++) {
-				let cawidthXs = touchfor[i].pageX * (720 / vowidth)
-				let caheightYs = touchfor[i].pageY * (1280 / voheight)
-				ping = {
-					"data": {
-						"action": 2,
-						"count": touchfor.length,
-						"pointerId": i,
-						"x": cawidthXs.toFixed(2),
-						"y": caheightYs.toFixed(2)
-					},
-					"event": "2"
-				}
-
-			}
-
-			// wsss.send(JSON.stringify(ping));
-			console.log('打开安卓卡==88============', data.sn)
-			wsss.send(ExexuteMove(JSON.stringify(ping), data.sn))
-		}
-
-
-
-		//				var ping = {"data":{"action":2,"count":1,"pointerId":0,"x":cawidthX.toFixed(2),"y":caheightY.toFixed(2)},"event":"2"}	    
-
-
-
-	};
-
-	//鼠标离开区域以外 除了涂鸦 都清空
-	var mouseout = function() {
-
-		if (graphType != 'handwriting') {
-			clearContext();
-
-		}
-	}
-
-	$(canvas_bak).unbind();
-	$(canvas_bak).bind('touchstart', touchstart);
-	$(canvas_bak).bind('touchmove', touchmove);
-	$(canvas_bak).bind('touchend', touchend);
-	$(canvas_bak).bind('mouseout', mouseout);
-}
-
-//选择功能按钮 修改样式
-function chooseImg(obj) {
-
-}

+ 0 - 811
decoker/screenIosEdit/WXtrialInterface.html

@@ -1,811 +0,0 @@
-<!DOCTYPE html>
-<html>
-
-	<head>
-		<meta charset="utf-8">
-		<title></title>
-		<meta http-equiv="X-UA-Compatible" content="IE=edge">
-		<meta name="viewport" content="initial-scale=1,maximum-scale=1, minimum-scale=1,user-scalable=no">
-		<meta name="x5-orientation" content="portrait" />
-		<meta name="screen-orientation" content="portrait" />
-		<meta name="viewport" content="width=device-width, minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
-
-		<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
-		<meta name="apple-mobile-web-app-capable" content="yes">
-		<meta name="apple-mobile-web-app-status-bar-style" content="black">
-		<meta name="format-detection" content="telephone=no, email=no">
-		<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
-		<meta name="apple-mobile-web-app-capable" content="yes">
-		<!-- 删除苹果默认的工具栏和菜单栏 -->
-		<meta name="apple-mobile-web-app-status-bar-style" content="black">
-		<!-- 设置苹果工具栏颜��? -->
-		<meta name="format-detection" content="telphone=no, email=no">
-		<!-- 忽略页面中的数字识别为电话,忽略email识别 -->
-		<!-- 启用360浏览器的极速模��?(webkit) -->
-		<meta name="renderer" content="webkit">
-		<!-- 避免IE使用兼容模式 -->
-		<meta http-equiv="X-UA-Compatible" content="IE=edge">
-		<!-- 针对手持设备优化,主要是针对一些老的不识别viewport的浏览器,比如黑��? -->
-		<meta name="HandheldFriendly" content="true">
-		<!-- 微软的老式浏览��? -->
-		<meta name="MobileOptimized" content="320">
-		<!-- uc强制竖屏 -->
-		<!-- <meta name="screen-orientation" content="portrait"> -->
-		<!-- QQ强制竖屏 -->
-		<!-- <meta name="x5-orientation" content="portrait"> -->
-		<!-- 不能旋转,问题出在这 -->
-		<!-- UC强制全屏 -->
-		<meta name="full-screen" content="yes">
-		<!-- QQ强制全屏 -->
-		<meta name="x5-fullscreen" content="true">
-		<!-- UC应用模式 -->
-		<meta name="browsermode" content="application">
-		<!-- QQ应用模式 -->
-		<meta name="x5-page-mode" content="app">
-		<!-- windows phone 点击无高��? -->
-		<meta name="msapplication-tap-highlight" content="no">
-		<title></title>
-		<link rel="stylesheet" type="text/css" href="css/WXtrialInterface.css" />
-	</head>
-
-	<body class="scroll h-player" style="overscroll-behavior: contain;">
-
-		<div class="container" id="player">
-			<div class="muted" id="btnMuted">
-				<div class="control-right-img" data-id="1">
-					<img src="../static/img/xuanfu_icon.png">
-				</div>
-			</div>
-
-			<div id="wine">
-
-				<!-- <video id="video1" muted="muted" x5-video-orientation="landscape" playsinline="true" autoplay="true"
-				 webkit-playsinline="true" x5-playsinline="true" x5-video-player-type="h5" x5-video-player-fullscreen="false" style="pointer-events: none;"></video> -->
-				<div id="box">
-					<canvas id="playCanvas" width="450" height="800"></canvas>
-				</div>
-			</div>
-			<div class="leftmains">
-				<div class="PictureQualityMain">
-					<div class="PictureQuality " data-id="3072000">高清</div>
-					<div class="PictureQuality avit" data-id="2243000">标清</div>
-					<div class="PictureQuality" data-id="400000">极速</div>
-					<div class="PictureQuality" data-id="400000">自动</div>
-				</div>
-
-				<div class="operation">
-					<div class="upload" id="showsuss" data-text="uploads">
-						<img src="../static/img/wx/shangchuan_icon.png">
-						<div>上传</div>
-					</div>
-					<div class="upload" onclick="cp(document.getElementById('user_ref_id'));" data-text="Shearplate">
-						<img src="../static/img/wx/jianqieban_icon.png">
-						<div>剪切板</div>
-					</div>
-					<div class="upload" id="upload" data-text="Signout">
-						<img src="../static/img/wx/tuichu_icon.png">
-						<div>退出</div>
-					</div>
-				</div>
-
-			</div>
-			<div class="bottommains">
-				<div class="botmat1">
-					<div class="botmat1img" data-text="gengduo">
-						<img src="../static/img/wx/gengduo_icon.png">
-					</div>
-
-				</div>
-				<div class="botmat1">
-					<div class="botmat1img" data-text="home">
-						<img src="../static/img/wx/home_icon.png">
-					</div>
-
-				</div>
-				<div class="botmat1">
-					<div class="botmat1img" data-text="return">
-						<img src="../static/img/wx/fanhui_icon.png">
-					</div>
-
-				</div>
-			</div>
-
-			<div class="mainbox" style="display: none;">
-				<div class="boxTitle">提示</div>
-				<div class="boxText">
-					<div>由于小程序的功能限制,此功能暂时</div>
-					<div>无法使用,请下载APP使用更多功能</div>
-
-				</div>
-				<div class="boxbt" onclick="cp(document.getElementById('user_ref_id'));">立即前往下载</div>
-
-				<div class="boximg"><img src="../static/img/wx/guanbi_icon.png"></div>
-			</div>
-
-			<div class="sbox" style="display: none;">
-				<div class="sboxText">下载地址已复制到剪切板</div>
-				<div class="sboxbu">确定</div>
-			</div>
-
-		</div>
-
-		<div id="copy-txt" style="position: absolute;opacity: 0;">
-			<span id="user_ref_id">www.androidsCloud.com</span>
-		</div>
-
-		<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
-		<script src="../static/js/jquery-1.11.0.min.js"></script>
-		<!-- ffm软解 -->
-		<script type="text/javascript" src="helper.js"></script>
-		<script type="text/javascript" src="pcm-player.js"></script>
-		<script type="text/javascript" src="webgl.js"></script>
-		<!--  音频-->
-		<!-- <script src="../static/js/classlist.js"></script>
-		<script src="../static/js/players.js"></script>
-		<script src="../static/js/auroraplayer.js"></script>
-		<script src="../static/js/aurora.js"></script>
-		<script src="../static/js/aac.js"></script>
-		<script src="../static/js/web.js?id=101"></script> -->
-		<!-- <script src="../static/js/webapk.js"></script> -->
-		<!--  视频-->
-
-		<!-- <script type="text/javascript" src="../static/js/Decoder.js"></script>
-		<script type="text/javascript" src="../static/js/YUVCanvas.js"></script>
-		<script type="text/javascript" src="../static/js/Player.js"></script> -->
-		<!-- <script src="https://cdn.bootcss.com/vConsole/3.2.0/vconsole.min.js"></script> -->
-		<script src="WXdraw.js?id=105"></script>
-
-		<script>
-			var topwinHeight = window.screen.height - window.innerHeight + 30; //计算title top 头部
-			$('#wine').css({
-				"width": window.screen.width,
-				"height": window.screen.height - topwinHeight - 20,
-				"position": "absolute",
-
-			})
-			var winese = document.createElement("wine");
-			wine.style.top = "-" + winese + 'px';
-
-			var url = window.location.href;
-			url = url.split('/')
-			// var baseUrl = window.location.href; //"http://192.168.31.20"
-			// var baseUrl = 'https://'+url[2] //url[2] //'http://192.168.31.159'//'http://' + url[2] 
-			var query = window.location.search.substring(1);
-			// query = "clientType=1&cardIp=14.215.128.96&port=2012&sn=RK3930C2301900012&demoTime=3600&id=377&diskName=SC93mBww"
-			var vars = query.split("&");
-			console.log(vars)
-			// var baseUrl = 'http://192.168.31.20'
-			// var baseUrl = 'test.androidscloud.com'
-			// var baseUrl = "http://192.168.199.243";
-			var baseUrl = "http://192.168.199.243";
-			var data = {}
-			//			 审核
-			$.ajax({
-				url: baseUrl + "/api/user/v1/config/download/isShow",
-				data: {},
-				type: 'get',
-				dataType: 'json',
-				success: function(data) {
-
-					if (data.data) {
-						$("#showsuss").show()
-					} else {
-						$("#showsuss").hide()
-					}
-					//                       
-				}
-			})
-			var clientType = vars.find(e => {
-				return e.startsWith('clientType')
-			}) || ''
-			// console.log(clientType)
-			data.clientType = clientType.substring(11, clientType.length)
-			//			小程序直接进入
-			var diskName = vars.find(e => {
-				return e.startsWith('diskName')
-			}) || ''
-
-			data.diskName = diskName.substring(9, diskName.length)
-
-			// document.title = decodeURI(data.diskName)
-			if (data.clientType == 1) {
-				var cardIp = vars.find(e => {
-					return e.startsWith('cardIp')
-				}) || ''
-				var port = vars.find(e => {
-					return e.startsWith('port')
-				}) || ''
-
-				var sn = vars.find(e => {
-					return e.startsWith('sn')
-				}) || ''
-				var demoTime = vars.find(e => {
-					return e.startsWith('demoTime')
-				}) || ''
-				var id = vars.find(e => {
-					return e.startsWith('id')
-				}) || ''
-
-
-				data.clientType = clientType.substring(11, clientType.length)
-
-				data.cardIp = cardIp.substring(7, cardIp.length)
-
-				data.port = port.substring(5, port.length)
-
-				data.sn = sn.substring(3, sn.length)
-
-				data.demoTime = demoTime.substring(9, demoTime.length)
-				data.id = id.substring(3, id.length)
-				console.log("打印sn卡", data.sn)
-
-			} else if (data.clientType == 2) { //分享屏幕
-				console.log("走到分享屏幕里面啦==========", data.clientTypes);
-				$(".leftmains").css({
-					"right": "-4rem"
-				})
-				$('.leftmains').hide()
-				$('.bottommains').hide()
-				$('#btnMuted').hide()
-				let ip = vars.find(e => {
-					return e.startsWith('ip')
-				}) || ''
-				var username = vars.find(e => {
-					return e.startsWith('username')
-				}) || ''
-				var id = vars.find(e => {
-					return e.startsWith('id')
-				}) || ''
-				var userCardId = vars.find(e => {
-					return e.startsWith('userCardId')
-				}) || ''
-				data.id = id.substring(3, id.length)
-				data.username = username.substring(9, username.length)
-				data.ip = ip.substring(3, ip.length)
-				data.userCardId = userCardId.substring(11, userCardId.length)
-			} else {
-				// $(".leftmains").css({
-				// 					"right":"-4rem"
-				// 				})
-				// 	$('.leftmains').hide()
-				// 	$('.bottommains').hide()
-				// 	$('#btnMuted').hide()
-				var username = vars.find(e => {
-					return e.startsWith('username')
-				}) || ''
-
-				var userCardId = vars.find(e => {
-					return e.startsWith('userCardId')
-				}) || ''
-				data.username = username.substring(9, username.length)
-				data.userCardId = userCardId.substring(11, userCardId.length)
-				console.log(data.ip)
-			}
-
-
-			//           心跳
-			//			var time = 1000 * 30;
-			//			var interval;
-			//			fun()
-			//
-			//			function run() {
-			//
-			//				interval = setInterval(fun, time);
-			//			}
-			//
-			//			function fun() {
-			//				$.ajax({
-			//					url: baseUrl + "/api/game/v1/cloudGame/dev/get/cardSn",
-			//					data: {
-			//						sn: data.sn
-			//					},
-			//					type: 'get',
-			//					dataType: 'json',
-			//					success: function(data) {
-			//
-			//					}
-			//				})
-			//
-			//			};
-			//			run();
-			// data.clientType=1
-			// data.sn="RK3930C2301900044"
-			// data.cardIp="14.215.128.96"
-			// data.port=2044
-
-			var orientation = 0 //0 竖屏,1横屏
-			var winHeight = window.screen.height - window.innerHeight
-			// var urlss = url[2]
-			// var urlss='192.168.31.20'
-			// var urlss = "14.215.128.96"
-			var urlss = 'test.androidscloud.com'
-			document.body.addEventListener('touchmove', function(e) {
-				e.preventDefault()
-			}, {
-				passive: false
-			})
-
-			// 
-			// urlss = "14.215.128.96"
-			// console.log()
-			// data.clientType = 1
-			// data.sn="RK3930C2301900044"
-			// data.cardIp="14.215.128.96"
-			// data.port=2044
-			// if (data.clientType == 3) {
-			// 	var players = AV.Player.fromWebSocket("wss://" + urlss + '/authVideoWebSocket?' + "clientType=" + data.clientType +
-			// 		"&username=" + data.username + "&userCardId=" + data.userCardId);
-			// } else if (data.clientType == 2) {
-			// 	// var players = AV.Player.fromWebSocket("wss://" + urlss + '/shareWebSocket?' + "clientType=" + data.clientType +
-			// 	// 	"&username=" + data.username + "&userCardId=" + data.userCardId + "&ip=" + data.ip);
-
-			// 	var players = AV.Player.fromWebSocket(
-			// 		"wss://test.androidscloud.com/videoWebSocket?clientType=1&cardIp=14.215.128.96&port=2005&sn=RK3930C2301900005");
-			// } else {
-			// 	var players = AV.Player.fromWebSocket("wss://" + urlss + '/videoWebSocket?' + "clientType=" + data.clientType +
-			// 		"&cardIp=" + data.cardIp + "&port=" + data.port + "&sn=" + data.sn);
-			// }
-			// // 			debugger
-			// var players = AV.Player.fromWebSocket('ws://14.215.128.96/authVideoWebSocket?clientType=3&username=WqXTc1593762177&userCardId=377');
-			// players.play();
-			// players.volume = 100
-			//var players = AV.Player.fromWebSocket('ws://14.215.128.96/videoWebSocket?clientType=0&cardIp=30.30.30.58&port=9100&sn=RK3930C2301900060');
-
-			var warid = {
-				id: data.id,
-				type: 1,
-				sn: data.sn
-			}
-			//结束时间 type=2
-			var warids = {
-				id: data.id,
-				type: 2,
-				sn: data.sn
-			}
-
-			//			$.ajax({})
-
-			// 关闭浏览器
-			//			window.onbeforeunload = function() {}
-
-			//撤销的array
-			var cancelList = new Array();
-			//撤销的次数
-			var cancelIndex = 0;
-			var inputType = 0 //输入类型 0:手写,1:键盘输入
-			//判断是否ie
-			var IE_HACK = (/msie/i.test(navigator.userAgent) &&
-				!/opera/i.test(navigator.userAgent));
-			//			云手机相关逻辑	 
-			// var player = new Player({
-			// 	size: {
-			// 		width: 1280,
-			// 		height: 720
-			// 	}
-			// });
-			// var secanv = document.getElementById("wine");
-
-			// secanv.appendChild(player.canvas);
-			// console.log("player=========>>>>", player);
-			// console.log("secanv>>>>", secanv);
-			//             &cardIp="+data.data.extranetIp+"&port="+data.data.extranetPort+"&sn="+data.data.sn
-
-			$(function() {
-				initCanvas();
-			});
-			//初始化
-			var initCanvas = function() {
-
-			}
-
-			window.onload = function() {};
-
-			$("#voew").on("click", function() {})
-
-			$("#box").on("click", function() {
-				//				draw_graph('pencil', this)
-
-			})
-
-			// console.log(player)
-			$('#mocan').on('click', function() {
-				draw_graph('pencil', this)
-			})
-
-			// //初始化一下就可以了,
-			// let vConsole = new VConsole();
-			//			 //你打印的数据 比如
-			console.log('test');
-			//就可像小程序一样的看了和调试了。
-			$('.no-ne-an').on('click', function() {
-				//结束时间 type=2
-				let warids = {
-					id: data.id,
-					type: 2,
-					sn: data.sn
-				}
-				$.ajax({
-					url: baseUrl + "/api/game/v1/cloudGame/dev/getSn",
-					data: warid,
-					type: 'get',
-					dataType: 'json',
-					success: function(data) {
-						history.go(-1)
-						if (data.status == 0) {
-
-						} else {
-							alert(data.msg)
-						}
-						//
-					}
-				})
-			})
-
-			var btnMuted = document.querySelector("#btnMuted");
-			btnMuted && (function() {
-				var setHistory = function(left, top) {
-					try {
-						localStorage.setItem("muted-btn-loc", JSON.stringify({
-							left: left,
-							top: top
-						}));
-					} catch (ex) {}
-				};
-				var getHistory = function() {
-					try {
-						var value = localStorage.getItem("muted-btn-loc");
-						if (!value) return null;
-						value = JSON.parse(value);
-						if (!value) return null;
-						return value;
-					} catch (ex) {
-						return null
-					}
-				};
-				var fixLoc = function(loc) {
-					var rect = btnMuted.getBoundingClientRect();
-					rect = {
-						top: rect.top,
-						left: rect.left,
-						width: rect.width,
-						height: rect.height
-					}; //部分低版本浏览器,该属性为只读
-					if (loc) {
-						rect.left = loc.left;
-						rect.top = loc.top;
-					}
-					var minX = 0;
-					var minY = 0;
-					var docRect = document.documentElement.getBoundingClientRect();
-					var maxY = docRect.height - rect.height;
-					var maxX = docRect.width - rect.width;
-					var left = rect.left;
-					var top = rect.top;
-					left = Math.min(left, maxX);
-					left = Math.max(left, minX);
-					top = Math.min(top, maxY);
-					top = Math.max(top, minY);
-					console.log(rect.top, top, loc);
-					if (loc || top !== rect.top || left !== rect.left) {
-						btnMuted.style.cssText += "left:" + left + "px;top:" + top + "px;";
-					}
-				}
-				window.addEventListener("resize", function() {
-					fixLoc();
-				});
-				var touchPoint = {
-					pageY: 0,
-					pageX: 0
-				};
-				var currentLoc = {
-					top: 0,
-					left: 0,
-					curTop: 0,
-					curLeft: 0
-				};
-				var toMove = false;
-				var touchmove = function(e) {
-					e.preventDefault();
-					var point = e.changedTouches[0];
-					var top = -touchPoint.pageY + point.pageY;
-					var left = -touchPoint.pageX + point.pageX;
-					if (toMove) {
-						top += currentLoc.top;
-						left += currentLoc.left;
-						currentLoc.curLeft = left;
-						currentLoc.curTop = top;
-						btnMuted.style.cssText += "left:" + left + "px;top:" + top + "px;";
-					} else {
-						if (Math.abs(top) >= 5 || Math.abs(left) >= 5) {
-							toMove = true;
-						}
-					}
-
-				};
-				var touchend = function() {
-					window.removeEventListener("touchmove", touchmove, {
-						passive: false
-					});
-					window.removeEventListener("touchend", touchend, {
-						passive: false
-					});
-
-					if (toMove) {
-						setHistory(currentLoc.curLeft, currentLoc.curTop);
-						fixLoc();
-					} else {
-						//按点击处理
-
-						var set = $('.control-right-img').attr("data-id")
-						if (set == '1') {
-							$('.control-right-img').attr({
-								"data-id": "2"
-							})
-							//							$('.control-right-img').find('img').attr({
-							//								"src": "../static/img/musicturn.png"
-							//							})
-							// players.volume = 100
-							$(".leftmains").css({
-								"right": "-4rem"
-							})
-							// console.log(players)
-							// players.play();
-						} else {
-
-							$('.control-right-img').attr({
-								"data-id": "1"
-							})
-
-							$(".leftmains").css({
-								"right": "0rem"
-							})
-							//							$('.control-right-img').find('img').attr({
-							//								"src": "../static/img/musicfalse.png"
-							//							})
-							// players.volume = 0
-							// players.off('pause');
-							// players.pause();
-							// var embed = document.embedPlay;
-							// console.log(players, "fdsfdsf")
-						}
-					}
-				}
-				btnMuted.addEventListener("touchstart", function(e) {
-					e.preventDefault();
-					toMove = false;
-					var point = e.changedTouches[0];
-					touchPoint.pageX = point.pageX;
-					touchPoint.pageY = point.pageY;
-					var rect = e.target.getBoundingClientRect();
-					currentLoc.top = rect.top;
-					currentLoc.left = rect.left;
-					window.addEventListener("touchmove", touchmove, {
-						passive: false
-					});
-					window.addEventListener("touchend", touchend, {
-						passive: false
-					});
-
-				}, {
-					passive: false
-				});
-				var history = getHistory();
-				if (history) {
-					fixLoc(history);
-				}
-				btnMuted.classList.remove("hide");
-			})();
-
-			$(".boximg").on("click", function() {
-				$(".mainbox").css({
-					"display": "none"
-				})
-			})
-
-			//			剪切板
-			$(".sboxbu").on("click", function() {
-				$(".sbox").css({
-					"display": "none"
-				})
-			})
-			//			剪切板
-			$(".uploadss").on("click", function() {
-				$(".sbox").css({
-					"display": "none"
-				})
-			})
-
-			$("#upload").on("click", function() {
-				wx.miniProgram.switchTab({
-					url: '/pages/home/home'
-				})
-			})
-
-
-
-
-
-			function selectText(x) {
-				if (document.selection) {
-					var range = document.body.createTextRange();
-					range.moveToElementText(x);
-					range.select();
-				} else if (window.getSelection) {
-					var selection = window.getSelection();
-					var range = document.createRange();
-					selection.removeAllRanges();
-					range.selectNodeContents(x);
-					selection.addRange(range);
-				}
-			}
-
-			function cp(x) {
-				$(".mainbox").css({
-					"display": "none"
-				})
-				$(".sbox").css({
-					"display": "block"
-				})
-				selectText(x);
-				document.execCommand("copy");
-
-			}
-
-			var isFinish = false;
-			var aacInitFinish = false;
-			var pcmPlayer = new PCMPlayer({
-				encoding: '16bitInt',
-				channels: 1,
-				sampleRate: 44100,
-				flushingTime: 22,
-				debug: false
-			});
-
-			Module = {};
-			Module.onRuntimeInitialized = function() {
-				console.log("Wasm 加载成功!")
-				isFinish = true;
-			}
-
-			var decodeWoker = new Worker('decoder.js');
-			var myVideo = document.getElementById("playCanvas");
-			
-			decodeWoker.onmessage = function(event) {
-				// console.log("decodeWoker.onmessage",event.data)
-				var objData = event.data;
-
-				switch (objData.cmd) {
-					case 0:
-						// console.log(objData.data);
-						break;
-					case 1:
-						var time = new Date().getTime();
-						webglPlayer.renderFrame(objData.data, 720, 1280, 720 * 1280, (720 / 2) * (1280 / 2));break;
-					case 2:
-						pcmPlayer.feed(objData.data);break;
-						//console.log("渲染耗时", new Date().getTime() - time + "ms");break;
-				}
-
-			}
-
-
-			if (typeof(Worker) !== "undefined") {
-				console.log("支持webworker");
-			} else {
-				alert("不支持webworker");
-			}
-
-			var isFinish = false;
-			// this.canvas = document.getElementById("playCanvas");
-			var webglPlayer = new WebGLPlayer(myVideo, {
-				preserveDrawingBuffer: false
-			});
-
-			var player = new PCMPlayer({
-			        encoding: '16bitInt',
-			        channels: 1,
-			        sampleRate: 44100,
-			        flushingTime: 22,
-					debug:false
-					});
-			var webSocketWorker = new Worker('websocket.js');
-			var startTime = new Date().getTime();
-
-			webSocketWorker.onmessage = function(event) {
-				decodeWoker.postMessage(event.data);
-			}
-
-			document.addEventListener("visibilitychange", () => {
-				if (document.visibilityState == "visible") {
-
-				} else {
-					console.log("页面不可见");
-				}
-			});
-
-			function Close() //webworker 关闭,清理
-			{
-				var cmd = {
-					cmd: 0
-				};
-				decodeWoker.postMessage(cmd);
-				decodeWoker.terminate();
-				webSocketWorker.postMessage(cmd);
-				webSocketWorker.terminate();
-			}
-			// myVideo.onmousedown = function(event) {
-			// 	console.log("22222")
-			// 	//放在此处只是为了方便演示,实际使用中查找横竖屏只要刚连接上时调用一次就好。	
-			// 	//var checkBuffer = GetScreenState();
-			// 	//ws.send(checkBuffer);
-
-				// if(!isFeed)
-				// {
-				// 	console.log("重新申请I帧");
-				// 	requestTime = new Date().getTime();			
-				// 	var buffer = RequestIFrame();
-				// 	ws.send(buffer);
-				// }
-
-			// 	//console.log("报文 %s", PrintArry(buffer));
-
-
-			// 	if (event.button == 0) {
-			// 		var posX = event.offsetX * 1080 * 1.0 / myVideo.clientWidth;
-			// 		var posY = event.offsetY * 1920 * 1.0 / myVideo.clientHeight;
-			// 		var buffer = ExexuteMouseDown(posX.toString(), posY.toString());
-			// 		// ws.send(buffer);
-			// 		// decodeWoker.postMessage(event.data);
-			// 		console.log("打印buffer", PrintArry(buffer))
-			// 		decodeWoker.postMessage(buffer);
-			// 		isDrag = true;
-			// 	}
-
-			// }
-			var isDrag = false;
-			myVideo.onmousedown = function(event) {
-				console.log('5555555555安卓卡',data.sn)
-				if (event.button == 0) {
-					var posX = event.offsetX * 720 * 1.0 / myVideo.clientWidth;
-					var posY = event.offsetY * 1280 * 1.0 / myVideo.clientHeight;
-					var buffer = ExexuteMouseDown(posX.toString(), posY.toString(),data.sn);
-					// console.log('55555', buffer)
-					webSocketWorker.postMessage(buffer);
-					isDrag = true;
-				}
-
-			}
-
-			myVideo.onmousemove = function(event) {
-				if (isDrag && event.button == 0) {
-					var posX = event.offsetX * 720 * 1.0 / myVideo.clientWidth;
-					var posY = event.offsetY * 1280 * 1.0 / myVideo.clientHeight;
-					var buffer = ExexuteMouseMove(posX.toString(), posY.toString(),data.sn);
-					// ws.send(buffer);
-					console.log('55555', buffer)
-					webSocketWorker.postMessage(buffer);
-					console.log("移动位置 %d, %d", posX, posY);
-				}
-
-			}
-
-			myVideo.onmouseup = function(event) {
-				console.log('5555555555')
-				isDrag = false;
-				var posX = event.offsetX * 720 * 1.0 / myVideo.clientWidth;
-				var posY = event.offsetY * 1280 * 1.0 / myVideo.clientHeight;
-				var buffer = ExexuteMouseUp(posX.toString(), posY.toString(),data.sn);
-				// ws.send(buffer);
-				webSocketWorker.postMessage(buffer);
-
-			}
-
-			myVideo.onkeydown = function(event) {
-				console.log('5555555555')
-				ExexuteKeyDown(e.keyCode,data.sn);
-			}
-		</script>
-		<script type="text/javascript" src="aac.js"></script>
-	</body>
-
-</html>

+ 0 - 340
decoker/screenIosEdit/css/WXtrialInterface.css

@@ -1,340 +0,0 @@
-body {
-				font-size: .2592592593rem;
-				margin: 0 auto;
-				width: 100%;
-				min-width: 320px;
-			}
-			
-			.h-player {
-				height: 100%;
-				overflow: hidden;
-				background: #000;
-			}
-			
-			.container {
-				width: 100%;
-				height: 100%;
-				position: relative;
-				user-select: none;
-			}
-			
-			#video1 {
-				display: block;
-				width: 100%;
-				height: 100%;
-				top: 0px;
-				left: 0px;
-				opacity: 1;
-			}
-			
-			#box {
-				width: 100%;
-				height: 100%;
-				position: absolute;
-				left: 0;
-				top: 0;
-				z-index: 9999;
-				/*width: 667px;
-    height: 375px; http://192.168.31.8:8848/cloudmMobilePhone1.11/Player/trialInterface2.html
-    position: absolute;
-    left: -146px;
-    top: 146px;
-   background: red;*/
-				/*    transform: rotate(-90deg);*/
-				/* opacity: 0.3;*/
-			}
-			
-			.scroll {
-				position: absolute;
-				overflow: scroll;
-				-webkit-overflow-scrolling: touch;
-				top: 0;
-				left: 0;
-				bottom: 0;
-				right: 0;
-			}
-			
-			body:before {
-				width: 100%;
-				height: 100%;
-				content: ' ';
-				position: fixed;
-				z-index: -1;
-				top: 0;
-				left: 0;
-				background: #000;
-			}
-			
-			#wine {
-				user-select: none;
-				-webkit-user-drag: none;
-				position: absolute;
-				z-index: 0;
-				/*  visibility: hidden;*/
-			}
-			
-			#video1 {
-				/*	 transform: rotate(180deg);*/
-			}
-			
-			canvas {
-				display: block;
-				width: 100%;
-				height: 100%;
-				z-index: 999;
-			}
-			/*主屏*/
-			
-			.control {
-				width: 900px;
-				overflow: hidden;
-				margin: 0 auto;
-				margin-top: 90px;
-				margin-bottom: 17px;
-			}
-			
-			.control-left-img {
-				width: 26px;
-				height: 26px;
-			}
-			
-			.control-left-img img {
-				width: 100%;
-				height: 100%;
-			}
-			
-			#mainScreen-main {
-				/* overflow: hidden; */
-				user-select: none;
-				-webkit-user-drag: none;
-				position: relative;
-				z-index: 0;
-				width: 100%;
-				height: 100%;
-				top: 0px;
-				/* left: 652.667px; */
-				/* left: 270PX; */
-				/* transform-origin: 0% 0%; */
-				background: #000;
-			}
-			
-			#mocan {
-				position: absolute;
-				left: -269px;
-				top: 2px;
-				/* opacity: 0.2; */
-				width: 901px;
-				height: 555px;
-				z-index: 9999;
-				opacity: 0.7;
-			}
-			
-			#no-ne {
-				width: 100%;
-				height: 100%;
-				position: absolute;
-				top: 0;
-				background: #000000;
-				z-index: 99999;
-				font-size: 18px;
-				color: #FFFFFF;
-				text-align: center;
-			}
-			
-			.no-ne-text {
-				margin-top: 60%;
-			}
-			
-			.no-ne-an {
-				width: 171px;
-				height: 47px;
-				background: #eb6100;
-				line-height: 47px;
-				text-align: center;
-				color: #FFFFFF;
-				margin: 0 auto;
-				margin-top: 20px;
-			}
-			
-			.container .muted {
-				position: absolute;
-				right: .46296rem;
-				top: .46296rem;
-				z-index: 9999999;
-				/*background: #000;*/
-				border-radius: 50%;
-				   /* opacity: 0.5;*/
-			}
-			
-			.muted {
-				width: 2.62963rem;
-				height: 2.62963rem;
-				background-position: -1.78704rem -8.43519rem;
-			}
-			
-			html {
-				height: 100%
-			}
-			
-			.control-right-img {
-				width: 42px;
-				height: 42px;
-				margin: 0 auto;
-				/* margin: 1rem; */
-				margin-top: 0.6rem;
-			}
-			
-			.control-right-img img {
-				width: 100%;
-				height: 100%;
-			}
-			
-			.leftmains {
-				width: 3.5rem;
-				height: 100%;
-				background: #333333;
-				position: fixed;
-				right: 0rem;
-				top: 0;
-					
-transition: all 0.2s ease-in;
-			}
-			
-			.PictureQualityMain {
-				margin-top: 3rem;
-			}
-			
-			.PictureQuality {
-				margin: 0 auto;
-				width: 2.5rem;
-				height: 1.8rem;
-				line-height: 1.8rem;
-				color: #fff;
-				text-align: center;
-				font-size: 15px;
-				margin-top: 1rem;
-			}
-			
-			.avit {
-				background: rgba(255, 255, 255, 1);
-				color: #000 !important;
-				border-radius: 3px;
-			}
-			
-			.upload {
-				margin: 0 auto;
-				width: 3rem;
-				height: 1.8rem;
-				line-height: 1.8rem;
-				color: #fff;
-				text-align: center;
-				font-size: 16px;
-				margin-top: 3rem;
-			}
-			
-			.upload img {
-				width: 1.5rem;
-				height: 1.5rem;
-			}
-			
-			.upload div {
-				margin-top: -0.5rem;
-				font-size: 14px;
-			}
-			
-			.operation {
-				margin-top: 9rem;
-			}
-			
-			.bottommains {
-				width: 100%;
-				height: 50px;
-				background: #333333;
-				position: fixed;
-				left: 0;
-				bottom: 0;
-			}
-			
-			.botmat1 {
-				width: 33%;
-				float: left;
-			}
-			
-			.botmat1img {
-				margin: 0 auto;
-				width: 1.5rem;
-				height: 1.5rem;
-				margin-top: 0.5rem;
-			}
-			
-			.botmat1img img {
-				width: 100%;
-				height: 100%;
-			}
-			
-			.mainbox {
-				width: 18rem;
-				height: 10rem;
-				background: #fff;
-				position: fixed;
-				top: 38%;
-				left: 5%;
-				border-radius: 5px;
-			}
-			
-			.boxTitle {
-				text-align: center;
-				font-size: 18px;
-				padding: 10px 0px;
-			}
-			
-			.boxText {
-				text-align: center;
-				font-size: 16px;
-			}
-			
-			.boxbt {
-				width: 60%;
-				height: 2.5rem;
-				background: #0886F5;
-				margin: 0 auto;
-				font-size: 16px;
-				text-align: center;
-				line-height: 2.5rem;
-				color: #fff;
-				border-radius: 5px;
-				margin-top: 1rem;
-			}
-			
-			.sbox {
-				width: 18rem;
-				height: 5.5rem;
-				background: #fff;
-				position: fixed;
-				top: 38%;
-				left: 5%;
-				border-radius: 5px;
-			}
-			
-			.sboxText {
-				padding: 17px;
-				font-size: 16px;
-			}
-			
-			.sboxbu {
-				text-align: right;
-				color: #0886F5;
-				font-size: 16px;
-				margin-right: 2rem;
-			}
-			
-			.boximg {
-				position: absolute;
-				width: 1rem;
-				height: 1rem;
-				left: 45%;
-				bottom: -22%;
-			}
-			#showsuss{
-				display: none;
-			}

+ 0 - 134
decoker/screenIosEdit/css/homePage.css

@@ -1,134 +0,0 @@
-* {
-	margin: 0;
-	padding: 0;
-}
-
-.heads {
-	padding: 40px 30px 0px 30px;
-	overflow: hidden;
-}
-
-.heads-left {
-	color: #3399FF;
-}
-
-.heads-right {
-	width: 60px;
-	height: 60px;
-}
-
-.heads-right image {
-	width: 100%;
-	height: 100%;
-}
-
-.left {
-	float: left;
-}
-
-.right {
-	float: right;
-}
-
-#wine {
-	width: 100%;
-	height: 100%;
-}
-
-.newhelp {
-	display: flex;
-	font-size: 12px;
-	font-family: PingFangSC-Regular, PingFang SC;
-	font-weight: 400;
-	color: #999999;
-	line-height: 17px;
-	align-items: center;
-	position: absolute;
-	top: 0;
-	left: 0;
-	margin-top: 10px;
-	margin-left: 15px;
-}
-
-.newhelp .font {
-	text-decoration: underline;
-	margin-left: 2px;
-}
-
-.newhelp .helpImg {
-	width: 0.875rem;
-	height: 0.875rem;
-}
-
-.newhelp .helpImg img {
-	width: 100%;
-	height: 100%;
-}
-
-.buyIcon {
-	position: absolute;
-	top: 0;
-	right: 0;
-	/* 	margin-top: 0.625rem;
-	margin-right: 0.625rem;
-	 */
-}
-
-.swiper-container {
-	width: 100%;
-	height: 100%;
-}
-
-.swiper-slide {
-	/* padding: 43px 53px; */
-	padding: 12% 14%;
-	box-sizing: border-box;
-	text-align: center;
-	font-size: 18px;
-	/* background: #fff; */
-	/* height: 667px; */
-	height: 100%;
-	/* Center slide text vertically */
-	display: -webkit-box;
-	display: -ms-flexbox;
-	display: -webkit-flex;
-	display: flex;
-	-webkit-box-pack: center;
-	-ms-flex-pack: center;
-	-webkit-justify-content: center;
-	justify-content: center;
-	-webkit-box-align: center;
-	-ms-flex-align: center;
-	-webkit-align-items: center;
-	align-items: center;
-}
-
-.swiper-button-next {
-	width: 15px;
-	height: 15px;
-	background: url(../../static/img/xia_icon.png);
-	right: 15px;
-}
-
-.swiper-button-prev {
-	width: 15px;
-	height: 15px;
-	background: url(../../static/img/shang_icon.png);
-	left: 15px;
-}
-
-.swiper-button-next:after,
-.swiper-container-rtl .swiper-button-prev:after {
-	content: "" !important;
-}
-
-.swiper-button-prev:after,
-.swiper-container-rtl .swiper-button-next:after {
-	content: "" !important;
-}
-
-.thl-time {
-	text-align: left;
-	margin-left: -0.4rem !important;
-	c
-}

File diff suppressed because it is too large
+ 0 - 13
decoker/screenIosEdit/css/swiper-bundle.min.css


File diff suppressed because it is too large
+ 0 - 14
decoker/screenIosEdit/css/swiper-bundle.min.js


+ 0 - 163
decoker/screenIosEdit/decoder.js

@@ -1,163 +0,0 @@
-var isFinish = false;
-var decodeCount = 0;
-var h264Queue = [];
-var ret;
-
-self.Module = {
-	onRuntimeInitialized: function() {
-		isFinish = true;
-		ret = Module._openDecoder(720, 1280);
-		if (!ret) {
-			console.log("打开编码器成功");
-		}
-	}
-};
-
-self.importScripts("ffmpeghelper.js");
-
-self.addEventListener('message', function(e) {
-	
-	var buffer = e.data;
-	
-	if(buffer[0] == 0xff)//音频解码
-	{
-		if(isFinish)
-		{
-			decodeAAC(buffer);
-		}
-	}
-	else
-	{
-		h264Queue.push(buffer);
-	}
-
-}, false);
-
-function PrintfLog(str) {
-	var curTime = new Date().getTime();
-	var objData = {
-		cmd: 0,
-		data: str,
-		time: curTime
-	};
-	self.postMessage(objData);
-}
-
-function decodeAAC(data)
-{
-		var retPtr = Module._malloc(2048);//接收的数据
-		var inputPtr = Module._malloc(data.length);//输入数据
-			
-		for( i = 0;i < data.length;i++)
-		{
-			Module.HEAPU8[(inputPtr)+i] = data[i];//转换为堆数据
-		}
-			
-		var pcmLen = Module._feedAudio(inputPtr, data.length, retPtr);
-			
-		if(pcmLen > 0)
-		{
-			var pcmData = new Uint8Array(pcmLen);		
-			for(i = 0;i < pcmLen;i++)
-			{
-				pcmData[i] = Module.HEAPU8[(retPtr)+i];
-			}
-			var curTime = new Date().getTime();	
-			var objData = {cmd:2, data:pcmData, time:curTime};
-			self.postMessage(objData);
-		}
-		else
-		{
-			console.log("aac 解码失败, %d", pcmLen);
-		}
-			
-		Module._free(inputPtr);
-		Module._free(retPtr);
-}
-
-var timeFlag = setInterval(
-	function() {
-		if (h264Queue.length > 0 && isFinish) {
-
-			if (h264Queue.length > 15 && isFinish) 
-			{
-				PrintfLog("-------解不过来 ---------" + h264Queue.length);
-				h264Queue.length = 0;
-				return;
-			}
-
-			decodeH264(h264Queue.shift());
-		} else {
-
-		}
-	}, 1);
-
-
-function decodeH264(data) {
-	 
-	var nalType = data[4] & 0x1f;
-	if(nalType == 7)
-	{	
-		console.log("decode sps");
-	}
-	
-	if(nalType == 8)
-	{	
-		console.log("decode pps");
-	}
-	
-	if(nalType == 5)
-	{	
-		console.log("decode i");
-	}
-	
-	var yuvData = new Uint8Array(2457600);
-	var retPtr = Module._malloc(2457600); //接收的数据
-	if(retPtr == undefined)
-	{
-		retPtr = Module._malloc(2457600);
-	}
-	
-	var inputPtr = Module._malloc(data.length); //输入数据
-
-	for (i = 0; i < data.length; i++) {
-		Module.HEAPU8[(inputPtr) + i] = data[i]; //转换为堆数据
-	}
-
-	var time = new Date().getTime();
-	var ret = Module._feedData(inputPtr, data.length, retPtr);
-
-	if (ret >= 0) {
-		//console.log("解码成功 %d, 耗时 %d ms", ret, new Date().getTime() - time);	
-		if (decodeCount > 50) {
-			var curCost = new Date().getTime() - time;
-			//PrintfLog("解码耗时 " + curCost + " ms");
-			decodeCount = 0;
-		}
-		decodeCount++;
-		//console.log("解码耗时 %d ms", curCost);
-	} else {
-		//console.log("解码失败 %d", ret);
-	}
-
-	
-	for (i = 0; i < yuvData.length; i++) {
-		yuvData[i] = Module.HEAPU8[(retPtr) + i];
-	}
-
-	var curTime = new Date().getTime();
-	var objData = {
-		cmd: 1,
-		data: yuvData,
-		time: curTime
-	};
-	self.postMessage(objData);
-	Module._free(inputPtr);
-	Module._free(retPtr);
-}
-
-
-function closeDecoder() {
-	Module._destroyDecoder();
-	clearInterval(timeFlag);
-}

+ 0 - 309
decoker/screenIosEdit/draw.js

@@ -1,309 +0,0 @@
-//画布
-var canvas;
-var context;
-//蒙版
-var canvas_bak;
-var context_bak;
-
-var canvasWidth = 720;
-var canvasHeight = 1280;
-
-var canvasTop;
-var canvasLeft;
-
-//画笔大小
-var size = 1;
-var color = '#000000';
-var resolving
-
-
-
-
-                       var url = window.location.href;
-                       url = url.split('/')
-                       var baseUrl =url[2]
-			           var query = window.location.search.substring(1);
-			          var vars = query.split("&");
-			          var data = {}
-			var clientType = vars.find(e => {
-                return e.startsWith('clientType')
-            })|| ''
-			var cardIp = vars.find(e => {
-                return e.startsWith('cardIp')
-            }) || ''
-			var port = vars.find(e => {
-                return e.startsWith('port')
-            })|| ''
-			
-			var sn = vars.find(e => {
-                return e.startsWith('sn')
-            })|| ''
-			var username = vars.find(e => {
-				return e.startsWith('username')
-			})|| ''
-			var userCardId = vars.find(e => {
-				return e.startsWith('userCardId')
-			})|| ''
-			 var data = {}         
-              data.clientType=clientType.substring(11, clientType.length)
-              
-              data.cardIp=cardIp.substring(7, cardIp.length)
-              
-              data.port=port.substring(5, port.length)
-              data.sn=sn.substring(3, sn.length)
-			  
-			  data.username =username.substring(9, username.length)
-			  data.userCardId =userCardId.substring(11, userCardId.length)
-              // var urlss= url[2]  //'14.215.128.96'
-			  var urlss = 'test.androidscloud.com'
-			  var cUrl = data.clientType === 3? "ws://"+urlss+"/authControlWebSocket?"+"clientType="+data.clientType+"&username="+data.username+"&userCardId="+data.userCardId : "ws://"+urlss+"/controlWebSocket?"+"clientType="+data.clientType+"&cardIp="+data.cardIp+"&port="+data.port+"&sn="+data.sn
-			  // var cUrl = "ws://14.215.128.96//controlWebSocket?clientType=1&sn=RK3930C2301900045&cardIp=14.215.128.96&port=2045"
-var wsss = new WebSocket(cUrl);
-
-
-
-//var wsss = new WebSocket("ws://14.215.128.96/controlWebSocket?clientType=0&cardIp=30.30.30.58&port=9100&sn=RK3930C2301900060");
-
-wsss.onopen = function() {
-	var pings = {
-		"event": "getScreenStatus"
-	}
-	wsss.send(JSON.stringify(pings));
-   var bitRate ={"data":{"bitRate":1000},"event":"bitRate"}
-     wsss.send(JSON.stringify(bitRate));
-};
-
-wsss.onmessage = function(event) {
-	var resets = JSON.parse(event.data)
-
-	resolving = resets.data.orientation
-	console.log('>>>resolvingresolvingresolving', resolving)
-	
-	
-	
-         
-			
-	
-	
-	if(resolving == 1) {
-
-		canvas_bak = document.getElementsByTagName("canvas");
-
-	} else {
-		canvas_bak = document.getElementsByClassName("mocan");
-	}
-	
-	
-	
-
-	if(resolving == 1) {
-
-		$('#mocan').removeClass('mocan')
-		$('#mainScreen-main').addClass('mainScreen-main')
-		$('.mainScreen-main').on('click', function() {
-			 
-				//		    	console.log(this)
-				draw_graph('pencil', this)
-
-			
-
-			})
-		$('canvas').css({
-			"display": "block",
-			"width": "100%",
-			"height": "100%",
-			"position": "absolute",
-			"top": "0px",
-			"left": "0px",
-			"z-index": "999",
-			"transform": "rotate(0deg)"
-		})
-		$('#mainScreen-main').css({"display": "block"})
-	} else {
-//      $("#mainScreen-main").
-$('#mainScreen-main').removeClass('mainScreen-main')
-$('#mocan').addClass('mocan')
-
-
-
-
-$('.mocan').on('click', function() {
-			 
-				//		    	console.log(this)
-				draw_graph('pencil', this)
-
-			
-
-			})
-
-
-
-
-
-
-		$('canvas').css({
-			"display": "block",
-			"width": "153%",
-			"height": "162%",
-			"position": "absolute",
-			"top": "-171px",
-			"left": "-94px",
-			"z-index": "0",
-			"transform": "rotate(-90deg)"
-		})
-		$('#mainScreen-main').css({"display": "block"})
-		$('#no-ne').css({
-			"width": "901px",
-			"height": "555px",
-			"position": "absolute",
-			"top": "0",
-			"left": "-269px",
-			"background": "#000000",
-			"z-index": "99999",
-			"font-size": "18px",
-			"color": "#FFFFFF",
-			"text-align": "center",
-			
-		})
-		$('.no-ne-text').css({
-			"margin-top": "24%",
-		})
-	}
-	
-
-	//			context_bak = canvas_bak.getContext('2d');		
-	$(canvas_bak).css("z-index", 999);
-};
-
-
-
-wsss.onclose = function(event) {
-
-};
-wsss.onerror = function(event) {
-
-};
-
-//画图形
-var draw_graph = function(graphType, obj) {
-
-	//把蒙版放于画板上面
-	//$("#canvas_bak").css("z-index",1);
-	$("#container").css("z-index", 30);
-	$("#dedit").css("z-index", 20);
-	//先画在蒙版上 再复制到画布上
-
-	chooseImg(obj);
-	var canDraw = false;
-
-	var startX;
-	var startY;
-
-	//鼠标按下获取 开始xy开始画图
-	var mousedown = function(e) {
-		
-		
-			var pingssfe = {
-		      "event": "getScreenStatus"
-	        }
-			wsss.send(JSON.stringify(pingssfe));
-		
-		// 
-		//横屏
-		if(resolving == 1) {
-			var ping = {"data":{"action":0,"count":1,"pointerId":0,"x":e.offsetX * 2,"y":e.offsetY * 2.3},"event":"0"}
-			 console.log("黄飞111》》》")
-			
-		} else if(resolving == 0) {
-			var ping ={"data":{"action":0,"count":1,"pointerId":0,"x":e.offsetX * 1.422,"y":e.offsetY * 1.3},"event":"0"}
-	
-		 console.log("黄飞222》》》")
-		
-		}
-  
-		wsss.send(JSON.stringify(ping));
-
-  
-		e = e || window.event;
-		/*startX = e.clientX - canvasLeft;
-		startY = e.clientY - canvasTop;*/
-		//	    console.log('鼠标按下获取:x',e.clientX-canvasLeft,'y:',e.clientY - canvasTop)
-		
-		canDraw = true;
-
-	};
-
-	//鼠标离开 把蒙版canvas的图片生成到canvas中
-	var mouseup = function(e) {
-
-		e = e || window.event;
-		//		startX = e.clientX - canvasLeft;11111
-		//		startY = e.clientY - canvasTop;
-		//		console.log('鼠标离开>>>',e.clientX - canvasLeft)
-		if(resolving == 1) {
-			var ping = {"data":{"action":1,"count":1,"pointerId":0,"x":e.offsetX * 2,"y":e.offsetY * 2.3},"event":"1"}
-		} else if(resolving == 0) {
-			var ping = {"data":{"action":1,"count":1,"pointerId":0,"x":e.offsetX * 1.422,"y":e.offsetY * 1.3},"event":"1"}
-		}
-
-		wsss.send(JSON.stringify(ping));
-		// var seets = {"event":"getScreenStatus"}
-		//   wsss.send(JSON.stringify(seets));
-		canDraw = false;
-
-	};
-
-	//清空层 云手机超出屏幕的开关
-	var clearContext = function(type) {
-		canDraw = false;
-	}
-
-	// 鼠标移动
-	var mousemove = function(e) {
-		//		console.log('鼠标移动7>>>','X:',e.clientX,'Y:',e.clientY)
-		e = e || window.event;
-
-		//方块  4条直线搞定
-		if(graphType == 'square') {
-			if(canDraw) {}
-			//直线
-		} else if(graphType == 'line') {} else if(graphType == 'pencil') {
-			if(canDraw) {
-
-				//				context_bak.lineTo(e.clientX   - canvasLeft ,e.clientY  - canvasTop);
-				//				context_bak.stroke();	
-				if(resolving == 1) {
-					var ping = {"data":{"action":2,"count":1,"pointerId":0,"x":e.offsetX * 2,"y":e.offsetY * 2.3},"event":"2"}
-				} else if(resolving == 0) {
-					var ping = {"data":{"action":2,"count":1,"pointerId":0,"x":e.offsetX * 1.422,"y":e.offsetY * 1.3},"event":"2"}
-				}
-				wsss.send(JSON.stringify(ping));
-			}
-			//圆 未画得时候 出现一个小圆
-		} else if(graphType == 'circle') {} else if(graphType == 'handwriting') {
-			var hwSize = 1;
-			if(canDraw) {} else {}
-			//橡皮擦 不管有没有在画都出现小方块 按下鼠标 开始清空区域
-		} else if(graphType == 'rubber') {}
-	};
-
-	//鼠标离开区域以外 除了涂鸦 都清空
-	var mouseout = function() {
-
-		if(graphType != 'handwriting') {
-			clearContext();
-
-		}
-	}
-
-	$(canvas_bak).unbind();
-	$(canvas_bak).bind('mousedown', mousedown);
-	$(canvas_bak).bind('mousemove', mousemove);
-	$(canvas_bak).bind('mouseup', mouseup);
-	$(canvas_bak).bind('mouseout', mouseout);
-}
-
-//选择功能按钮 修改样式
-function chooseImg(obj) {
-
-}

File diff suppressed because it is too large
+ 0 - 1
decoker/screenIosEdit/ffmpeghelper.js


BIN
decoker/screenIosEdit/ffmpeghelper.wasm


File diff suppressed because it is too large
+ 0 - 1
decoker/screenIosEdit/ffmpeghelper.worker.js


File diff suppressed because it is too large
+ 0 - 269
decoker/screenIosEdit/helper.js


File diff suppressed because it is too large
+ 0 - 185
decoker/screenIosEdit/helper55.js


File diff suppressed because it is too large
+ 0 - 1239
decoker/screenIosEdit/home.html


File diff suppressed because it is too large
+ 0 - 1192
decoker/screenIosEdit/homeNew.html


+ 0 - 100
decoker/screenIosEdit/homePage.html

@@ -1,100 +0,0 @@
-<!DOCTYPE html>
-<html>
-	<head>
-		<meta charset="utf-8">
-		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
-		<title>首页</title>
-		<link rel="stylesheet" type="text/css" href="css/swiper-bundle.min.css" />
-		<link rel="stylesheet" type="text/css" href="css/homePage.css" />
-		<script src="css/swiper-bundle.min.js"></script>
-	</head>
-	<body style="background: #F8F9FA;overflow:scroll;overflow-y: hidden;overflow-x: hidden;">
-		<div style="width: 100%;height: 100%;" id="homeapp">
-			<div class="newhelp" style="z-index: 50;">
-				<div class="helpImg">
-					<img src="../static/img/bangzu_icon.png" />
-				</div>
-				<div class="font helpfont">使用帮助?</div>
-			</div>
-			<div class="buyIcon" style="z-index: 50;">
-				<img src="../static/img/goumai_icon.png" />
-			</div>
-			
-			<div class="swiper-container">
-				<div class="swiper-wrapper">
-					<div class="swiper-slide"  v-for="(item,index) in homeList" :key="item.id" :class="[index==0 ? 'swiper-slide-active' : '' , index==1 ? 'swiper-slide-next' : '']">
-						<div class="canvas" style="z-index: 1;" @click="homeinfo(item)">
-							<div style="height: 100%;" class="wine" :id="'wine'+index">
-							</div>
-							<canvas id="playCanvas" width="450" height="800"></canvas>
-							<div class="camvas-head" style="z-index: 5555;">
-								<div class="tophead">
-									<div class="th_left">
-										<!-- {{item.buyVipType}} -->
-										<img src="../static/img/xingyao_icon.png" v-if="item.buyVipType='SVIP'" />
-										<img src="../static/img/xingdong_icon.png" v-else />
-									</div>
-									<div class="th_right">
-										<div class="thl-font">{{item.diskName}}</div>
-										<div class="thl-time">{{remainTime(item.ctime,item.exceptTime)}}</div>
-									</div>
-								</div>
-								<div class="th_renew homeRenew" style="z-index: 5000;" @click="renew(item)">
-									续费
-								</div>
-							</div>
-						</div>
-					</div>
-					<div class="swiper-slide">
-						<div class="canvas" style="display: none;">
-							<div style="height: 100%;" class="kongWine">
-								<div class="kphone">
-									<div class="kp_img">
-										<img src="../static/img/goumai_pic.png" />
-									</div>
-									<div class="kp_btn" style="z-index: 5000;">
-										购买云手机
-									</div>
-								</div>
-							</div>
-			
-						</div>
-					</div>
-				</div>
-				<!-- Add Arrows -->
-				<div class="swiper-button-next" @click="swiperNext()"></div>
-				<div class="swiper-button-prev" @click="swiperPrev()"></div>
-			</div>
-		</div>
-	</body>
-	<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.0.js"></script>
-	<!--  视频-->
-	<script src="../static/js/jquery-1.11.0.min.js"></script>
-	<script type="text/javascript" src="../static/js/Decoder.js"></script>
-	<script type="text/javascript" src="../static/js/YUVCanvas.js"></script>
-	<script type="text/javascript" src="../static/js/Player.js"></script>
-	<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
-	<script src="https://cdn.bootcss.com/vConsole/3.2.0/vconsole.min.js"></script>
-	<script>
-		var html = document.querySelector("html");
-		var clientWidth = html.getBoundingClientRect().width;
-		html.style.fontSize = clientWidth / 23.4375 + "px";
-
-		var app = new Vue({
-			el: '#homeapp',
-			data: {
-				message: 'Hello Vue!',
-				homeList: [],
-				urlData: {},
-				rbdData: {},
-				activeIndexData: "",
-				swipeDirection: "",
-			},
-			mounted() {
-				
-			},methods:{
-				
-			}
-		})
-	</script>
-</html>

BIN
decoker/screenIosEdit/img/fenxiang_icon.png


BIN
decoker/screenIosEdit/img/fenxiang_icon@2x.png


BIN
decoker/screenIosEdit/img/goumai_icon(1).png


BIN
decoker/screenIosEdit/img/goumai_icon.png


BIN
decoker/screenIosEdit/img/goumai_icon@2x(1).png


BIN
decoker/screenIosEdit/img/goumai_icon@2x.png


BIN
decoker/screenIosEdit/img/homebg.png


BIN
decoker/screenIosEdit/img/jia_bu_icon.png


BIN
decoker/screenIosEdit/img/jia_bu_icon@2x.png


BIN
decoker/screenIosEdit/img/jia_ke_icon.png


BIN
decoker/screenIosEdit/img/jia_ke_icon@2x.png


+ 0 - 0
decoker/screenIosEdit/img/jian_bu_icon.png


Some files were not shown because too many files changed in this diff