Browse Source

Merge branch 'dev-5.2' of http://192.168.32.253:3000/Software/android-cloud-H5 into dev-5.2

heyang 3 years ago
parent
commit
2601b664e8
87 changed files with 1000 additions and 14967 deletions
  1. 0 603
      CloudGames/experienceCenter.html
  2. 0 1096
      CloudGames/trialInterface.html
  3. 1 1
      androidscloudH5/gzhDownload.html
  4. BIN
      androidscloudH5/image/longwu/long_4.png
  5. BIN
      androidscloudH5/image/longwu/long_5.png
  6. BIN
      androidscloudH5/image/topnavXdhmy.png
  7. 2 2
      androidscloudH5/pageJzsy.html
  8. 2 2
      androidscloudH5/pageLwu.html
  9. 2 2
      androidscloudH5/pageRxfs.html
  10. 2 2
      androidscloudH5/pageXdhmy.html
  11. 0 42
      index.html
  12. BIN
      microserviceUserH5/static/img/iosEnter/index-phone.png
  13. BIN
      microserviceUserH5/static/img/iosEnter/index-what.png
  14. 2 2
      microserviceUserH5/vcloud/actFission.html
  15. 1 1
      microserviceUserH5/vcloud/actFissionList.html
  16. 1 1
      microserviceUserH5/vcloud/actFissionShare.html
  17. 82 0
      microserviceUserH5/vcloud/agreement.html
  18. 14 4
      microserviceUserH5/vcloud/invite.html
  19. 12 2
      microserviceUserH5/vcloud/invite1.html
  20. 14 4
      microserviceUserH5/vcloud/invite2.html
  21. 112 0
      microserviceUserH5/vcloud/iosEnter.html
  22. 16 6
      microserviceUserH5/vcloud/register.html
  23. 20 10
      screenAndroid/WXdraw.js
  24. 39 56
      screenAndroid/WXtrialInterface.html
  25. 136 128
      screenAndroid/helper.js
  26. 191 0
      screenAndroid/spsParser.js
  27. BIN
      screenH5/H264high.mp4
  28. 0 1068
      screenH5/WXtrialInterface.html
  29. BIN
      screenH5/avc.wasm
  30. 0 537
      screenH5/home238wss.html
  31. 0 537
      screenH5/home66Ws.html
  32. 0 537
      screenH5/home96Wss.html
  33. 0 1093
      screenH5/homeNew.html
  34. BIN
      screenH5/in.h264
  35. 0 42
      screenH5/index.html
  36. 0 1096
      screenH5/trialInterface.html
  37. 0 989
      screenH5/wxhomeInfo.html
  38. 10 11
      screenIos/WXdraw.js
  39. 38 59
      screenIos/WXtrialInterface.html
  40. 110 60
      screenIos/decoder.js
  41. 1 1
      screenIos/ffmpeghelper.js
  42. BIN
      screenIos/ffmpeghelper.wasm
  43. 192 198
      screenIos/helper.js
  44. 0 1
      wasm/ffmpeghelper.js
  45. BIN
      wasm/ffmpeghelper.wasm
  46. 0 185
      wasm/helper.js
  47. 0 163
      wasm/index.html
  48. 0 126
      wasm/pcm-player.js
  49. 0 148
      wasm/webgl.js
  50. BIN
      websocket/DesktopClient.exe.lnk
  51. BIN
      websocket/Fleck.dll
  52. BIN
      websocket/WebsocketTest.exe
  53. BIN
      websocket/formatAAC.aac
  54. 0 169
      websocket/helper.js
  55. BIN
      websocket/images/loader-thumb.jpg
  56. 0 336
      websocket/index.html
  57. BIN
      websocket/input.aac
  58. 0 2576
      websocket/jmuxer.js
  59. 0 2563
      websocket/jmuxer.min.js
  60. BIN
      websocket/shuchu.aac
  61. 0 60
      websocket/云手机云控控制指令
  62. 0 4
      websocket/使用介绍.md
  63. BIN
      websocket/测试/CdllTest.exe
  64. BIN
      websocket/测试/D3DContent.dll
  65. BIN
      websocket/测试/D3DHost.exe
  66. BIN
      websocket/测试/DesktopClient.exe
  67. 0 8
      websocket/测试/DesktopClient.exe.Config
  68. BIN
      websocket/测试/Newtonsoft.Json.dll
  69. BIN
      websocket/测试/Panuon.UI.Silver.dll
  70. BIN
      websocket/测试/PresentationFramework.Aero2.dll
  71. BIN
      websocket/测试/SDL2.dll
  72. BIN
      websocket/测试/System.Data.Common.dll
  73. BIN
      websocket/测试/System.Xml.XPath.XDocument.dll
  74. BIN
      websocket/测试/VideoDll.dll
  75. BIN
      websocket/测试/avcodec-58.dll
  76. BIN
      websocket/测试/avdevice-58.dll
  77. BIN
      websocket/测试/avfilter-7.dll
  78. BIN
      websocket/测试/avformat-58.dll
  79. BIN
      websocket/测试/avutil-56.dll
  80. BIN
      websocket/测试/d3dx9_43.dll
  81. BIN
      websocket/测试/d3nv.dll
  82. 0 12
      websocket/测试/decode.log
  83. BIN
      websocket/测试/swresample-3.dll
  84. BIN
      websocket/测试/swscale-5.dll
  85. 0 0
      websocket/测试/udp日志.log
  86. 0 424
      websocket/测试/videodll.log
  87. 0 0
      websocket/测试/抓取.yuv

+ 0 - 603
CloudGames/experienceCenter.html

@@ -1,603 +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" href="../static/css/index.css">
-    <style>
-			.heads {
-				position: absolute;
-				top: 0;
-				left: 0;
-				width: 100%;
-				height: 60px;
-				background: rgba(0, 0, 0, 0.3);
-			}
-			
-			.heads-right {
-				width: 280px;
-				height: 60px;
-			}
-			
-			.heads-img-left {
-				width: 24px;
-				height: 24px;
-				margin-top: 18px;
-				margin-right: 2rem;
-			}
-		}
-		.heads-img-left img {
-			width: 100%;
-			height: 100%;
-		}
-		
-    </style>
-</head>
-
-<body>
-			<div class="heads">
-			<div class="heads-right right">
-				<div class="heads-img-left right">
-					<img src="../static/img/home_icon.png">
-				</div>
-				
-			</div>
-		</div>
-    <div class="containerse">
-        <div class="main">
-            <div class="head-title top-title">
-                <div class="head-text">体验中心</div>
-            </div>
-        </div>
-
-        <div class="site">
-            <div class="wrapper horizontal demo1" ondragstart="return false">
-                <ul class="container" id="containerse">
-
-                </ul>
-
-                <div class="kuan">
-                    <div class="kuan-leth"></div>
-                    <div class="kuan-right"></div>
-                    <img src="../static/img/expenienceCenter/biankuang_tiyanzhongxin_pic.png">
-                    <div class="bt-an">
-                        <!--<img src="img/anniu_icon.png">-->
-                        开始试玩
-                    </div>
-                </div>
-
-                <i class="btn-direct btn-left" id="prev">
-						<img src="../static/img/expenienceCenter/zuo2_icon.png">
-					</i>
-                <i class="btn-direct btn-right" id="nevr">
-						<img src="../static/img/expenienceCenter/you2_icon.png">
-					</i>
-            </div>
-        </div>
-
-        <div class="nav">
-            <!--<div class="nav-gse nav-gse-ave left">
-					<div class="nav-bg ">
-						<div class="nav-buseqw nav-mnaires"> </div>
-						<div class="nav-img">
-							<img src="img/expenienceCenter/youimg.png">
-						</div>
-
-					</div>
-				</div>
-
-				<div class="nav-gse left">
-					<div class="nav-bg ">
-						<div class="nav-buseqw nav-mnai"> </div>
-						<div class="nav-img">
-							<img src="img/expenienceCenter/youimg.png">
-						</div>
-
-					</div>
-				</div>
-
-				<div class="nav-gse left">
-					<div class="nav-bg ">
-						<div class="nav-buseqw nav-mnai"> </div>
-						<div class="nav-img">
-							<img src="img/expenienceCenter/youimg.png">
-						</div>
-
-					</div>
-				</div>-->
-
-            <!--<div class="nav-bg left">
-					<div class="nav-mnai"> </div>
-					 	<div class="nav-img">
-						<img src="img/youimg.png">
-					</div>
-
-				</div>-->
-        </div>
-
-        <div class="mains">
-            <div class="head-title">
-                <div class="head-text">游戏说明</div>
-            </div>
-        </div>
-
-        <div class="site sitenow">
-            <div class="wrapper horizontal demo2 con-bottom" ondragstart="return false">
-                <ul class="container containerss" id="contain2" style="">
-                    <!--<li class="cards_list" n="6" style="position: absolute; left: 50%; transition: all 400ms ease 0s; margin-left: -40px; z-index: 4; opacity: 0.9; transform: scale(0.9, 0.9);">
-							<div class="img" id="bottom_block_0">
-								<img src="img/expenienceCenter/bg.png" alt="">
-							</div>
-						</li>
-						<li class="cards_list" n="7" style="position: absolute; left: 50%; transition: all 400ms ease 0s; margin-left: 80px; z-index: 3; opacity: 0.81; transform: scale(0.81, 0.81);">
-							<div class="img" id="bottom_block_1">
-								<img src="img/expenienceCenter/bg2.png" alt="">
-							</div>
-						</li>
-						<li class="cards_list" n="8" style="position: absolute; left: 50%; transition: all 400ms ease 0s; margin-left: 200px; z-index: 2; opacity: 0.729; transform: scale(0.729, 0.729);">
-							<div class="img" id="bottom_block_2">
-								<img src="img/expenienceCenter/bg2.png" alt="">
-							</div>
-						</li>-->
-
-                </ul>
-                <div class="kuan">
-                    <div class="kuan-leths"></div>
-                    <div class="kuan-rights"></div>
-                    <img src="../static/img/expenienceCenter/biankuang_shuoming_pic.png">
-                    <!--<div class="bt-an">-->
-                    <!--<img src="img/anniu_icon.png">-->
-                    <!--开始试玩-->
-                    <!--</div>-->
-                </div>
-                <i class="btn-direct btn-left">
-						<img src="../static/img/expenienceCenter/zuo2_icon.png">
-					</i>
-                <i class="btn-direct btn-right">
-						<img src="../static/img/expenienceCenter/you2_icon.png">
-					</i>
-            </div>
-        </div>
-
-    </div>
-
-    <script src="../static/js/jquery-1.10.2.js"></script>
-    <script src="../static/js/jquery.min.js"></script>
-    <script src="../static/js/carousel.js"></script>
-    <script>
-        var linkid
-        var url = window.location.href;
-        url = url.split('/')
-            // var baseUrl = window.location.href; //"http://192.168.31.20"
-        var baseUrl ='http://' + url[2]
-        var $demo1 = $("div.demo1"),
-            $demo2 = $("div.demo2"),
-            $demo3 = $("div.demo3"),
-            $demo4 = $("div.demo4");
-        $(document).ready(function() {
-            var srt = ''
-            var sty = ''
-            var sse = {
-                id: 1,
-                pageNum: 1,
-                pageSize: 10
-            }
-            $.ajax({
-                url: baseUrl + "/api/game/v1/client/gameInfo?id=1",
-                type: 'get',
-                contentType: "application/json",
-                dataType: 'json',
-                success: function(data) {
-                    var dataList = data.data
-                        // dataList = [dataList[0]]
-                        // 测试多条数据
-                        // dataList = [...dataList, ...dataList, ...dataList];
-                    var visitType
-                    var conType
-                    linkid = data.data
-                    if (data.status == 0) {
-                        var srt2 = ""
-                        var datalistse = dataList[0].visitImage
-
-                        console.log(dataList)
-                        for (var n = 0; n < datalistse.length; n++) {
-                            var imgese = baseUrl + datalistse[n]
-                                //						console.log(datalistse[n])
-                            srt2 += '<li class="cards_list cards_lists cards_listsss" id="cards_list" n="' + i + '" data-n="' + i +
-                                '" data-id="34" data-wareHouseId="59" >' +
-                                '<div class="img">' +
-                                '<img src="' + imgese + '" alt="">' +
-                                '</div>' +
-                                '</li>';
-                        }
-                        $("#contain2").append(srt2)
-
-                        //						nav
-                        for (var i = 0; i < dataList.length; i++) {
-                            var imge = baseUrl + dataList[i].visitVideo
-                            var iconImg = baseUrl + dataList[i].visitIcon
-                            visitType = dataList[i].visitVideoType
-                            if (visitType == 'image') {
-                                srt += '<li class="cards_list cards_listnew" n="' + i + '" data-n="' + i +
-                                    '" data-id="34" data-wareHouseId="59" style="">' +
-                                    '<div class="img">' +
-                                    '<img src="' + imge + '" alt="">' +
-                                    '</div>' +
-                                    '</li>';
-                            } else {
-                                srt += '<li class="cards_list cards_listnew" n="' + i + '" data-n="' + i +
-                                    '" data-id="34" data-wareHouseId="59" style="">' +
-                                    '<div class="img">' +
-                                    '<video controls="controls" class="video-size"  autoplay muted loop>' +
-                                    '  <source src="' + imge + '" type="video/ogg" />' +
-                                    '  <source src="' + imge + '" type="video/mp4" />' +
-                                    '</video>' +
-                                    '</div>' +
-                                    '</li>';
-                            }
-
-                            if (i == 0) {
-                                sty += '<div class="nav-gse nav-gse-ave left" data-id=' + i + '>' +
-                                    '<div class="nav-bg ">' +
-                                    '<div class="nav-buseqw nav-mnaires"> </div>' +
-                                    '<div class="nav-img">' +
-                                    '<img src="' + iconImg + '">' +
-                                    '</div>' +
-                                    '</div>' +
-                                    '</div>';
-                            } else {
-                                sty += '<div class="nav-gse left" data-id=' + i + '>' +
-                                    '<div class="nav-bg ">' +
-                                    '<div class="nav-buseqw nav-mnai"> </div>' +
-                                    '<div class="nav-img">' +
-                                    '<img src="' + iconImg + '">' +
-                                    '</div>' +
-                                    '</div>' +
-                                    '</div>';
-                            }
-
-                        }
-                        $('#containerse').append(srt)
-                        $('.nav').append(sty)
-                        console.log("111111111111.", dataList.length)
-						// datalistse = datalistse.slice(0,3)
-                        if (dataList.length == 1) {
-                            $('.container .cards_listnew').css({
-                                "margin-left": "-177%"
-                            })
-                        }
-                        if (datalistse.length == 1) {
-
-
-                            $('#containerse .cards_list').css({
-                                "margin-left": "-177%"
-                            })
-
-                            $('.cards_listsss').css({
-                                "margin-left": "-177%"
-                            })
-
-
-                        }
-
-                        $('.nav-gse').on('click', function() {
-
-                            console.log('黄飞》》》', $(this).attr("data-id"))
-
-
-                            console.time("t");
-
-                            var carousel1 = new Carousel($demo1.children("ul.container"), {
-                                opacity: .9,
-                                scale: [.9],
-                                transition: "0ms",
-                                switchBtn: $demo1.children("i.btn-direct"),
-                                isClickCard: true,
-                                isAuto: false,
-                                interval: 4000,
-                                dataList: dataList,
-                                n: $(this).attr("data-id"),
-                                nav: 1,
-                                showPicNumber: 3
-                            });
-
-
-
-                            $(this).addClass('nav-gse-ave')
-                            $(this).siblings().removeClass('nav-gse-ave')
-                                //					css({"background":"red"})
-                            $(this).find('.nav-bg').find('.nav-mnai').removeClass('nav-mnai')
-                            $(this).siblings().find('.nav-bg').find('.nav-buseqw').addClass('nav-mnai')
-                            commprev($(this).attr("data-id"))
-                        })
-
-                        $("div.wrapper").each(function(i, e) {
-                            $(e).attr("ondragstart", "return false");
-                        });
-
-
-
-                        console.time("t");
-
-                        var carousel1 = new Carousel($demo1.children("ul.container"), {
-                            opacity: .9,
-                            scale: [.9],
-                            transition: "0ms",
-                            switchBtn: $demo1.children("i.btn-direct"),
-                            isClickCard: true,
-                            isAuto: false,
-                            interval: 4000,
-                            dataList: dataList,
-                            n: 0,
-                            nav: 0,
-                            showPicNumber: 3
-                        });
-                        var carousel2 = new Carousel($demo2.children("ul.container"), {
-                            opacity: .6,
-                            scale: [.9],
-                            transition: "0ms",
-                            switchBtn: $demo2.children("i.btn-direct"),
-                            isClickCard: true,
-                            isAuto: false,
-                            interval: 4000,
-                            dataList: dataList,
-                            n: 0,
-                            nav: 0,
-                            // showPicNumber: 3
-                        });
-
-                    }
-                    /* var CheckId = +findCheckId[1]
-                    dataList.map( e => {
-                    	linkid = e
-                    	if (e.wareHouseId === CheckId) {
-                    		bottomList = e.visitImage
-                    		bottomList.map( (e, k) => {
-                    			bottomId = '#bottom_block_' + k
-                    			tip = `<img src="` + baseUrl + e + `" alt="">`
-                    			$(bottomId).append(tip)
-                    		})
-                    	}
-                    })*/
-
-                    var perindex
-                    $("#prev").on("click", function() {
-
-                        setTimeout(() => {
-                            commprev("prev")
-                        }, 100);
-
-                    })
-                    $(document).on("click", "#nevr", function() {
-                        // alert(2)
-                        setTimeout(() => {
-                            commprev("nevr")
-                        }, 100);
-
-                    })
-
-                    function commprev(text) {
-                        if (text >= 0) {
-
-                            perindex = text
-                        } else {
-                            $("#containerse li").each(function(i, e) {
-                                if ($(e).css("opacity") == 1) {
-                                    perindex = i
-                                }
-                            });
-                        }
-
-                        //			             上一个
-                        if (text == "prev") {
-
-                            //								  alert(perindex);
-                            $(".nav .nav-gse").eq(perindex).addClass('nav-gse-ave')
-                            $(".nav .nav-gse").eq(perindex).siblings().removeClass('nav-gse-ave')
-
-                            $(".nav .nav-gse").eq(perindex).find('.nav-bg').find('.nav-mnai').removeClass('nav-mnai')
-                            $(".nav .nav-gse").eq(perindex).siblings().find('.nav-bg').find('.nav-buseqw').addClass('nav-mnai')
-
-                        } else if (text == "nevr") {
-
-                            //                              alert(perindex);
-                            $(".nav .nav-gse").eq(perindex).addClass('nav-gse-ave')
-                            $(".nav .nav-gse").eq(perindex).siblings().removeClass('nav-gse-ave')
-
-                            $(".nav .nav-gse").eq(perindex).find('.nav-bg').find('.nav-mnai').removeClass('nav-mnai')
-                            $(".nav .nav-gse").eq(perindex).siblings().find('.nav-bg').find('.nav-buseqw').addClass('nav-mnai')
-
-                        } else {
-                            //								alert()
-                            $(".nav .nav-gse").eq(text).addClass('nav-gse-ave')
-                            $(".nav .nav-gse").eq(text).siblings().removeClass('nav-gse-ave')
-
-                            $(".nav .nav-gse").eq(text).find('.nav-bg').find('.nav-mnai').removeClass('nav-mnai')
-                            $(".nav .nav-gse").eq(text).siblings().find('.nav-bg').find('.nav-buseqw').addClass('nav-mnai')
-
-                        }
-
-
-                        $("#contain2 li").remove()
-                        var srt3 = ""
-                        console.log(perindex)
-                        var perindexs = perindex
-                        var datalistse = dataList[perindexs].visitImage
-                        console.log(perindexs)
-                        for (var n = 0; n < datalistse.length; n++) {
-                            var imgese = baseUrl + datalistse[n]
-
-                            //						console.log(datalistse[n])
-                            srt3 += '<li class="cards_list sss" n="' + i + '" data-n="' + i +
-                                '" data-id="34" data-wareHouseId="59" style="">' +
-                                '<div class="img">' +
-                                '<img src="' + imgese + '" alt="">' +
-                                '</div>' +
-                                '</li>';
-                        }
-                        $("#contain2").append(srt3)
-                        if (datalistse.length == 1) {
-                            $('#cards_list').css({
-                                "margin-left": "-53%"
-                            })
-                            $('.sss').css({
-                                "margin-left": "-177%"
-                            })
-                        }
-
-
-                        var carousel2 = new Carousel($demo2.children("ul.container"), {
-                            opacity: .6,
-                            scale: [.9],
-                            transition: "400ms",
-                            switchBtn: $demo2.children("i.btn-direct"),
-                            isClickCard: true,
-                            isAuto: false,
-                            interval: 4000,
-                            dataList: dataList,
-                            // showPicNumber: 3
-                        });
-
-                        //			            console.log('dataList>>>',dataList[perindex])
-
-                    }
-                }
-            })
-        })
-
-        $(".nav-mnai").on('click', function() {
-            $('.cards_list').eq(0).attr('n', '2')
-        })
-
-        $('.bt-an').on('click', function() {
-            var indexs
-            $("#containerse li").each(function(i, e) {
-                if ($(e).css("opacity") == 1) {
-                    indexs = i
-                }
-            });
-            //			alert(linkid[indexs].wareHouseId)
-            //			return
-            var warid = {
-                id: linkid[indexs].wareHouseId,
-                type: 0,
-                sn: ""
-            }
-
-            $.ajax({
-                url: baseUrl + "/api/game/v1/cloudGame/dev/getSn",
-                data: warid,
-                type: 'get',
-                dataType: 'json',
-                success: function(data) {
-
-                    //                   return
-                    if (data.status == 0) {
-                        var trialInterface = {
-                            id: linkid[indexs].wareHouseId,
-                            type: 2,
-                            sn: data.data.sn
-                        }
-                        localStorage.setItem("trialInterface", JSON.stringify(trialInterface))
-                        console.log(data)
-                        if (window.screen.width >= 1000) {
-                        	localStorage.setItem("temps", 2)
-                            window.location.href = "/api/game/center/trialInterface?clientType=0" + "&cardIp=" + data.data.androidcardIp +
-                                "&port=" + data.data.androidcardPort + "&sn=" + data.data.sn + "&demoTime=" + data.data.demoTime + "&id=" +
-                                linkid[indexs].wareHouseId;
-                        } else {
-                        	
-var u = navigator.userAgent;
-if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) {//安卓手机
-console.log("安卓手机");
-window.location.href = "/api/game/center/trialInterface3?clientType=0" + "&cardIp=" + data.data.androidcardIp +"&port=" + data.data.androidcardPort + "&sn=" + data.data.sn + "&demoTime=" + data.data.demoTime + "&id=" +linkid[indexs].wareHouseId
-  
-} else if (u.indexOf('iPhone') > -1) {//苹果手机
-window.location.href = "/api/game/center/trialInterface2?clientType=0" + "&cardIp=" + data.data.androidcardIp +"&port=" + data.data.androidcardPort + "&sn=" + data.data.sn + "&demoTime=" + data.data.demoTime + "&id=" +linkid[indexs].wareHouseId
-                                linkid[indexs].wareHouseId;
-} else if (u.indexOf('Windows Phone') > -1) {//winphone手机
-window.location.href = "/api/game/center/trialInterface2?clientType=0" + "&cardIp=" + data.data.androidcardIp +"&port=" + data.data.androidcardPort + "&sn=" + data.data.sn + "&demoTime=" + data.data.demoTime + "&id=" +linkid[indexs].wareHouseId
- 
-}
-                        	
-                        	
-                        	
-                            
-                        }
-
-                        //
-                    } else {
-                        // 为了兼容云手机
-                        // 						var jsonsn =  localStorage.getItem("trialInterface")
-                        // 						var jsonarr = JSON.parse(jsonsn)
-
-                        // 						console.log(jsonarr.sn);
-                        // 						$.ajax({
-                        // 							url: baseUrl + "/api/game/v1/cloudGame/dev/getSn",
-                        // 							data: jsonarr,
-                        // 							type: 'get',
-                        // 							dataType: 'json',
-                        // 							success: function(data) {
-                        // 								//                   return
-                        // 								if(data.status == 0) {
-
-                        // 								} else {
-                        // 									alert(data.msg)
-                        // 								}
-
-                        // 							}
-                        // 						})
-
-
-
-                        alert(data.msg)
-                    }
-
-                }
-            })
-        })
-        
-        
-        			var homeip = ""
-			$.ajax({
-				url: baseUrl + "/api/user/v1/promote/webUrl",
-				data: {},
-				type: 'get',
-				async: false,
-
-				success: function(data) {
-					console.log("官网》》》", data)
-					homeip = data
-					//
-				}
-			})
-
-			$(".heads-img-left").on("click", function() {  
-				var newStr = homeip.indexOf("http");
-				var urlhome   
-				if(newStr == 0) {
-
-					    
-					console.log("字符串是以http开头的!")
-					urlhome = homeip
-					$(window).attr('location', urlhome);  
-				}
-
-				  
-				if(newStr == -1) {
-					urlhome = 'http://' + homeip
-					$(window).attr('location', urlhome);    
-					console.log("字符串不是以http开头的!")
-
-					  
-				}
-
-			})
-
-    </script>
-
-</body>
-
-</html>

File diff suppressed because it is too large
+ 0 - 1096
CloudGames/trialInterface.html


+ 1 - 1
androidscloudH5/gzhDownload.html

@@ -86,7 +86,7 @@
 
   function clickDown() {
     if (isAndroid) {
-      window.location.href = elMultipartUpload_16208767077616844844/shuangzixing.apk' : 'http://110.53.221.195:8210/document/newFile/download/1/edv834e74a9c43eaac02/LowLevelMultipartUpload_16208767077616844844/shuangzixing.apk '
+      window.location.href = window.location.protocol === 'https:' ? 'https://file.phone.androidscloud.com:8121/document/newFile/download/1/edv834e74a9c43eaac02/LowLevelMultipartUpload_16208767077616844844/shuangzixing.apk' : elMultipartUpload_16208767077616844844/shuangzixing.apk' : 'http://110.53.221.195:8210/document/newFile/download/1/edv834e74a9c43eaac02/LowLevelMultipartUpload_16208767077616844844/shuangzixing.apk'
     }
     if (isiOS) {
       window.location.href = window.location.href = 'https://www.pgyer.com/gemini6'

BIN
androidscloudH5/image/longwu/long_4.png


BIN
androidscloudH5/image/longwu/long_5.png


BIN
androidscloudH5/image/topnavXdhmy.png


+ 2 - 2
androidscloudH5/pageJzsy.html

@@ -101,8 +101,8 @@
 
 				}
 			})
-			window.location.href = window.location.protocol === 'https:' ? 'https://file.phone.androidscloud.com:8121/document/newFile/download/1/edv834e74a9c43eaac02/LowLevelMultipartUpload_16674723078691225655/shuangzixing.apk' :
-				'http://110.53.221.195:8210/document/newFile/download/1/edv834e74a9c43eaac02/LowLevelMultipartUpload_16674723078691225655/shuangzixing.apk'
+			window.location.href = window.location.protocol === 'https:' ? 'https://file.phone.androidscloud.com:8121/document/newFile/download/1/edv834e74a9c43eaac02/LowLevelMultipartUpload_16680392327271219200/shuangzixing.apk' :
+				'http://110.53.221.195:8210/document/newFile/download/1/edv834e74a9c43eaac02/LowLevelMultipartUpload_16680392327271219200/shuangzixing.apk'
 		}
 		$(function() {
 			pushHistory();

+ 2 - 2
androidscloudH5/pageLwu.html

@@ -74,8 +74,8 @@
 
 				}
 			})
-			window.location.href = window.location.protocol === 'https:' ? 'https://file.phone.androidscloud.com:8121/document/newFile/download/1/edv834e74a9c43eaac02/LowLevelMultipartUpload_16674467314189926466/shuangzixing.apk' :
-				'http://110.53.221.195:8210/document/newFile/download/1/edv834e74a9c43eaac02/LowLevelMultipartUpload_16674467314189926466/shuangzixing.apk'
+			window.location.href = window.location.protocol === 'https:' ? 'https://file.phone.androidscloud.com:8121/document/newFile/download/1/edv834e74a9c43eaac02/LowLevelMultipartUpload_16680350402266726400/shuangzixing.apk' :
+				'http://110.53.221.195:8210/document/newFile/download/1/edv834e74a9c43eaac02/LowLevelMultipartUpload_16680350402266726400/shuangzixing.apk'
 		}
 		$(function() {
 			pushHistory();

+ 2 - 2
androidscloudH5/pageRxfs.html

@@ -101,8 +101,8 @@
 
 				}
 			})
-			window.location.href = window.location.protocol === 'https:' ? 'https://file.phone.androidscloud.com:8121/document/newFile/download/1/edv834e74a9c43eaac02/LowLevelMultipartUpload_16674761318123110422/shuangzixing.apk' :
-				'http://110.53.221.195:8210/document/newFile/download/1/edv834e74a9c43eaac02/LowLevelMultipartUpload_16674761318123110422/shuangzixing.apk'
+			window.location.href = window.location.protocol === 'https:' ? 'https://file.phone.androidscloud.com:8121/document/newFile/download/1/edv834e74a9c43eaac02/LowLevelMultipartUpload_16680406777906790499/shuangzixing.apk' :
+				'http://110.53.221.195:8210/document/newFile/download/1/edv834e74a9c43eaac02/LowLevelMultipartUpload_16680406777906790499/shuangzixing.apk'
 		}
 		$(function() {
 			pushHistory();

+ 2 - 2
androidscloudH5/pageXdhmy.html

@@ -72,8 +72,8 @@
 
 				}
 			})
-			window.location.href = window.location.protocol === 'https:' ? 'https://file.phone.androidscloud.com:8121/document/newFile/download/1/edv834e74a9c43eaac02/LowLevelMultipartUpload_16674493104583475244/shuangzixing.apk' :
-				'http://110.53.221.195:8210/document/newFile/download/1/edv834e74a9c43eaac02/LowLevelMultipartUpload_16674493104583475244/shuangzixing.apk'
+			window.location.href = window.location.protocol === 'https:' ? 'https://file.phone.androidscloud.com:8121/document/newFile/download/1/edv834e74a9c43eaac02/LowLevelMultipartUpload_16680379050659020888/shuangzixing.apk' :
+				'http://110.53.221.195:8210/document/newFile/download/1/edv834e74a9c43eaac02/LowLevelMultipartUpload_16680379050659020888/shuangzixing.apk'
 		}
 		$(function() {
 			pushHistory();

+ 0 - 42
index.html

@@ -1,42 +0,0 @@
-<!doctype html>
-<head>
-    <title>Using multiple file formats in JavaScript</title>
-
- 
-    <script type= "text/javascript">
-        function checkAudioCompat() {
-            var myAudio = document.createElement('audio');
-            var msg = document.getElementById("display");
- 
-            msg.innerHTML = "";
- 
-            if (myAudio.canPlayType) {
-                // CanPlayType returns maybe, probably, or an empty string.
-                var playMsg = myAudio.canPlayType('audio/mpeg');
-                if ( "" != playMsg) {
-                    msg.innerHTML += "mp3 is " + playMsg + " supported<br/>";
-                }
-                playMsg = myAudio.canPlayType('audio/ogg; codecs="vorbis"'); 
-                if ( "" != playMsg){
-                    msg.innerHTML += "ogg is " + playMsg + " supported<br/>";                    
-                }
- 
-                playMsg = myAudio.canPlayType('audio/mp4; codecs="mp4a.40.5"');
-                if ( "" != playMsg){
-                    msg.innerHTML += "aac is "+playMsg+" supported<br/>";
-                }
-            }
-            else {
-                msg.innerHTML += "no audio support";                
-            }
-        }
-    </script>
-</head>
-<body>
-    <button onclick="checkAudioCompat();">
-        Test for audio format type
-    </button>
-    <div id="display"> </div>
-    <audio src="./1.aac" controls></audio>
-</body>
-</html>

BIN
microserviceUserH5/static/img/iosEnter/index-phone.png


BIN
microserviceUserH5/static/img/iosEnter/index-what.png


+ 2 - 2
microserviceUserH5/vcloud/actFission.html

@@ -329,7 +329,7 @@
 				<div class="select-title">选择你要分享的内容</div>
 				<div class="select-list">
 					<div v-for="(item,index) in tagList" :key="index" @click="toDetail(item)">
-						<img :src="fileCenterApi + `/document/newFile/download/0/edv834e74a9c43eaac02?fileKey=${item.cover}`" class="icon" alt="">
+						<img :src="fileCenterApi + `/document/newFile/download/0/347905r86eb745a1sc38?fileKey=${item.cover}`" class="icon" alt="">
 					</div>
 				</div>
 			</div>
@@ -487,7 +487,7 @@
 
 				},
 				standarImg(id) {
-					return `${fileCenterApi}/document/newFile/download/0/edv834e74a9c43eaac02?fileKey=${id}`;
+					return `${fileCenterApi}/document/newFile/download/0/347905r86eb745a1sc38?fileKey=${id}`;
 				},
 				getShare() {
 					systemBuriedPoint({

+ 1 - 1
microserviceUserH5/vcloud/actFissionList.html

@@ -79,7 +79,7 @@
 		<van-list v-model="loading" :finished-text="finishedText" :finished="finished"
 			:immediate-check=false @load="onLoad">
 			<div v-for="(item,index) in tagList" :key="index" class="item" @click="toDetail(item)">
-				<img :src="fileCenterApi + `/document/newFile/download/0/edv834e74a9c43eaac02?fileKey=${item.fileId}`" class="icon" alt="">
+				<img :src="fileCenterApi + `/document/newFile/download/0/347905r86eb745a1sc38?fileKey=${item.fileId}`" class="icon" alt="">
 				<div class="right">
 					<div class="titles">{{item.strategyTitle}}</div>
 					<div class="contents">{{getContent(index,item.content)}}</div>

+ 1 - 1
microserviceUserH5/vcloud/actFissionShare.html

@@ -786,7 +786,7 @@
                     }
                 },
                 standarImg(id) {
-                    return `${fileCenterApi}/document/newFile/download/0/edv834e74a9c43eaac02?fileKey=${id}`;
+                    return `${fileCenterApi}/document/newFile/download/0/347905r86eb745a1sc38?fileKey=${id}`;
                 },
                 getMarquee() {
                     getMarquee().then(res => {

+ 82 - 0
microserviceUserH5/vcloud/agreement.html

@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+  <meta charset="UTF-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <title>Document</title>
+  <style>
+    @media screen and (max-width: 750px) {
+      html {
+        font-size: calc(100vw/7.5);
+      }
+    }
+
+    @media screen and (min-width: 750px) {
+      html {
+        font-size: calc(750px/7.5);
+      }
+    }
+
+    body {
+      padding: 0.3rem;
+    }
+
+    h1 {
+      font-size: 0.32rem;
+    }
+
+    h2 {
+      font-size: 0.31rem;
+    }
+
+    h3 {
+      font-size: 0.3rem;
+    }
+
+    h4 {
+      font-size: 0.29rem;
+    }
+
+    h5 {
+      font-size: 0.28rem;
+    }
+
+    h6 {
+      font-size: 0.27rem;
+    }
+
+    p {
+      font-size: 0.28rem;
+      color: #333;
+    }
+  </style>
+</head>
+
+<body>
+</body>
+
+</html>
+<script src="../static/js/vender/config.js"></script>
+<script type="text/javascript" src="../static/js/vender/jquery-3.4.1.min.js"></script>
+<script>
+  var agreementCoding = GetRequest().agreementCoding ? GetRequest().agreementCoding : 'XYPZYSXY2001'
+  console.log(agreementCoding);
+  $.ajax({
+    url: baseUrl + "/api/public/v4/agreement/content",
+    data: {
+      agreementCoding: agreementCoding
+    },
+    type: 'get',
+    dataType: 'json',
+    success: function (res) {
+      if (res.status === 0) {
+        var pos1 = res.data.content.lastIndexOf('<body>') + 6
+        var pos2 = res.data.content.lastIndexOf('</body>')
+        var content = pos1 >= 0 && pos2 >= 0 ? res.data.content.slice(pos1, pos2) : res.data.content
+        $('body').append(content);
+      }
+    }
+  })
+</script>

+ 14 - 4
microserviceUserH5/vcloud/invite.html

@@ -11,10 +11,20 @@
   <script src="../static/js/vender/jquery-3.4.1.min.js"></script>
   <script src="../static/js/vender/toastr/toastr.min.js"></script>
   <script src="../static/js/vender/config.js"></script>
+  <style>
+    .my-tips{
+      position: fixed;
+      top: 50%;
+      left: 50%;
+      transform: translate(-50%, -50%);
+      font-size: 0.28rem;
+    }
+  </style>
 </head>
 
 <body>
-  <div class="invite-container pr">
+  <div class="my-tips">当前功能维护中,暂无法使用</div>
+  <!-- <div class="invite-container pr">
     <div class="rules" onclick="handleShow()">活动规则</div>
     <div class="h658">
       <img src="../static/img/invite/inviteTop.png" class="bottom-img" alt="">
@@ -75,12 +85,12 @@
     </div>
   </div>
   <input type="text" style="opacity: 0;z-index: -10;position: fixed;" id="passwordCopy" value="">
-  <input type="text" style="opacity: 0;z-index: -10;position: fixed;" id="inviteCopy" value="">
+  <input type="text" style="opacity: 0;z-index: -10;position: fixed;" id="inviteCopy" value=""> -->
   <script>
     toastr.options.positionClass = 'toast-center-center';
     toastr.options.timeOut = '1500';
   </script>
-  <script type="text/javascript">
+  <!-- <script type="text/javascript">
     let timer, flag = true;
     var url = window.location.href;
     url = url.split('/')
@@ -334,7 +344,7 @@
       if (timer) { clearTimeout(timer); }
       timer = setTimeout(() => { flag = true }, 1500);
     }
-  </script>
+  </script> -->
 </body>
 
 </html>

+ 12 - 2
microserviceUserH5/vcloud/invite1.html

@@ -11,10 +11,20 @@
     <script src="../static/js/vender/jquery-3.4.1.min.js"></script>
     <script src="../static/js/vender/toastr/toastr.min.js"></script>
     <script src="../static/js/vender/config.js"></script>
+    <style>
+        .my-tips{
+          position: fixed;
+          top: 50%;
+          left: 50%;
+          transform: translate(-50%, -50%);
+          font-size: 0.28rem;
+        }
+      </style>
 </head>
 
 <body>
-    <div class="invite-container">
+    <div class="my-tips">当前功能维护中,暂无法使用</div>
+    <!-- <div class="invite-container">
         <div class="pr">
             <picture>
                 <source media="(max-width: 640px)" srcset="../static/img/inviteTop.png 640w" />
@@ -202,7 +212,7 @@
                 })
             }
         }
-    </script>
+    </script> -->
 </body>
 
 </html>

+ 14 - 4
microserviceUserH5/vcloud/invite2.html

@@ -11,10 +11,20 @@
 	<script src="../static/js/vender/jquery-3.4.1.min.js"></script>
 	<script src="../static/js/vender/toastr/toastr.min.js"></script>
 	<script src="../static/js/vender/config.js"></script>
+	<style>
+		.my-tips{
+			position: fixed;
+			top: 50%;
+			left: 50%;
+			transform: translate(-50%, -50%);
+			font-size: 0.28rem;
+		}
+	</style>
 </head>
 
 <body>
-	<div class="invite-container pr">
+    <div class="my-tips">当前功能维护中,暂无法使用</div>
+	<!-- <div class="invite-container pr">
 		<div class="rules" onclick="handleShow()">活动规则</div>
 		<div class="h658">
 			<img src="../static/img/invite/inviteTop.png" class="bottom-img" alt="">
@@ -75,12 +85,12 @@
 		</div>
 	</div>
 	<input type="text" style="opacity: 0;z-index: -10;position: fixed;" id="passwordCopy" value="">
-	<input type="text" style="opacity: 0;z-index: -10;position: fixed;" id="inviteCopy" value="">
+	<input type="text" style="opacity: 0;z-index: -10;position: fixed;" id="inviteCopy" value=""> -->
 	<script>
 		toastr.options.positionClass = 'toast-center-center';
 		toastr.options.timeOut = '1500';
 	</script>
-	<script type="text/javascript">
+	<!-- <script type="text/javascript">
 		let timer, flag = true;
 		var url = window.location.href;
 		url = url.split('/')
@@ -334,7 +344,7 @@
 			if (timer) { clearTimeout(timer); }
 			timer = setTimeout(() => { flag = true }, 1500);
 		}
-	</script>
+	</script> -->
 </body>
 
 </html>

+ 112 - 0
microserviceUserH5/vcloud/iosEnter.html

@@ -0,0 +1,112 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+
+<head>
+	<meta charset="UTF-8">
+	<title>双子星</title>
+	<meta name="viewport" content="width=device-width, initial-scale=1">
+	<link rel="icon" href="../static/img/favicon2.ico" type="img/x-ico">
+	<link rel="stylesheet" href="../static/js/vender/bootstrap/css/bootstrap.min.css">
+	<link rel="stylesheet" href="../static/css/experience2.css">
+	<link rel="stylesheet" href="../static/js/vender/toastr/toastr.min.css">
+	<script src="../static/js/vender/jquery-3.4.1.min.js"></script>
+	<script src="../static/js/vender/bootstrap/js/bootstrap.min.js"></script>
+	<script src="../static/js/vender/toastr/toastr.min.js"></script>
+	<script src="../static/js/vender/config.js"></script>
+	<script>
+		toastr.options.positionClass = 'toast-center-center';
+	</script>
+</head>
+<div class="container">
+	<div class="index-icon" id="index-what">
+		<img class="img" src="../static/img/iosEnter/index-what.png" />
+	</div>
+	<!-- <div class="index-icon" id="index-phone">
+		<img class="img" src="../static/img/iosEnter/index-phone.png" />
+	</div> -->
+</div>
+<script type="text/javascript" th:inline="javascript">
+	let node = document.getElementById('index-what');
+	node.addEventListener('click', () => {
+		window.location.href = 'https://www.baidu.com/s'
+	})
+</script>
+</body>
+<style>
+	.container{
+		width: 100%;
+		height: 98vh;
+		padding-top: 0.2rem;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		background-color: rgba(16, 16, 16, 1);
+	}
+	.index-icon{
+		width: 6.5rem;
+		height: 2.28rem;
+		padding-top: 0.36rem;
+	}
+	.img{
+		width: 100%;
+		height: 100%;
+	}
+	#toast-container>.toast-error {
+		background-image: none !important;
+	}
+
+	.toast-error {
+		background-color: rgba(0, 0, 0, 0.8);
+	}
+
+	#toast-container>div {
+		font-size: 14px;
+		min-width: 80px !important;
+		padding: 12px !important;
+		box-shadow: none;
+	}
+
+	@media (max-width: 480px) and (min-width: 241px) {
+		#toast-container>div {
+			min-width: 80px !important;
+			width: auto;
+		}
+	}
+
+	@media only screen and (min-width: 640px) {
+		.toast-center-center {
+			top: 50%;
+			left: 50%;
+			transform: translate(-50%, -50%);
+		}
+	}
+
+	@media only screen and (max-width: 640px) {
+		.toast-center-center {
+			top: 50%;
+			left: 50%;
+			transform: translate(-50%, -50%);
+		}
+	}
+
+	input::-webkit-input-placeholder {
+		color: #BBBBBB;
+	}
+
+	input::-moz-placeholder {
+		/* Mozilla Firefox 19+ */
+		color: #BBBBBB;
+	}
+
+	input:-moz-placeholder {
+		/* Mozilla Firefox 4 to 18 */
+		color: #BBBBBB;
+	}
+
+	input:-ms-input-placeholder {
+		/* Internet Explorer 10-11 */
+		color: #BBBBBB;
+	}
+</style>
+
+</html>

+ 16 - 6
microserviceUserH5/vcloud/register.html

@@ -22,10 +22,20 @@
   <script>
     toastr.options.positionClass = 'toast-center-center';
   </script>
+  <style>
+    .my-tips{
+      position: fixed;
+      top: 50%;
+      left: 50%;
+      transform: translate(-50%, -50%);
+      font-size: 0.28rem;
+    }
+  </style>
 </head>
 
 <body>
-  <div id="mpanel2"></div>
+  <div class="my-tips">当前功能维护中,暂无法使用</div>
+  <!-- <div id="mpanel2"></div>
   <div id="form-btn"></div>
   <div class="top free-code-con" style="position:relative;">
     <div>
@@ -60,8 +70,8 @@
         </div>
       </div>
     </div>
-  </div>
-  <script type="text/javascript" th:inline="javascript">
+  </div> -->
+  <!-- <script type="text/javascript" th:inline="javascript">
     var parameters = GetRequest();
     var phone = parameters["phone"];
     var timer, flag = true;
@@ -177,8 +187,8 @@
     function getHead(fileId) {
       $('.head img').attr('src', '../static/img/invite/header-img.png');
       if (fileId) {
-        let urls = baseUrl == 'http://110.53.221.195:8210';
-        $('.head img').attr('src', `${urls}/document/newFile/download/0/edv834e74a9c43eaac02?fileKey=` + fileId);
+        let urls = baseUrl == 'http://prese.phone.androidscloud.com' ? 'http://110.53.221.195:8210' : 'https://wjzx.androidscloud.com:9091';
+        $('.head img').attr('src', `${urls}/document/newFile/download/0/347905r86eb745a1sc38?fileKey=` + fileId);
       }
     }
     function encrypt(word, keyStr) {
@@ -277,7 +287,7 @@
       if (timer) { clearTimeout(timer); }
       timer = setTimeout(() => { flag = true }, 1500);
     }
-  </script>
+  </script> -->
 </body>
 <style>
   #toast-container>.toast-error {

+ 20 - 10
screenAndroid/WXdraw.js

@@ -24,7 +24,6 @@ var form = {};
 
 var cardToken = parameters["cardToken"];
 cardToken = cardToken && cardToken.replace(/@/g, "=");
-cardToken = cardToken.replace(/\$/g, "+");
 form.cardIp = parameters["cardIp"];
 form.port = parameters["port"];
 form.username = parameters["username"];
@@ -33,8 +32,8 @@ form.ip = parameters["ip"];
 form.domainName = parameters["domainName"];
 var isWSS = true;
 var cUrl = isWSS ? "wss://" + form.domainName + "?cardIp=" + form.ip + "&token=" + cardToken : "ws://" + form.domainName + "?cardIp=" + form.ip + "&token=" + cardToken;
-var videoWidth = parameters['mealType'] === "STARPRO" || parameters['mealType'] === "STAR" ? 1080 : 720
-var videoHeight = parameters['mealType'] === "STARPRO" || parameters['mealType'] === "STAR" ? 1920 : 1280
+var videoWidth = Number(parameters['resolvingPower']) ? Number(parameters['resolvingPower']) : 720
+var videoHeight = videoWidth === 720 ? 1280 : 1920
 
 var wsss, errorTime = 0;
 var first = true;
@@ -124,17 +123,28 @@ $(".botmat1img").on("click", function () {
   }
 
 })
-//高清控制
+// 高清控制
 $(".PictureQuality").on("click", function () {
   $(this).addClass("avit").siblings().removeClass('avit')
   var id = $(this).attr("data-id")
-  var bitRate = {
-    "data": {
-      "bitRate": id
-    },
-    "type": "bitRate"
+  var buffer = makeSharpness(Number(id));
+  ws.send(buffer);
+  isFeed = false;
+  isAudioPlay = false;
+  $('.weui-mask_transparent').show();
+  $('.weui-toast').show();
+  if (jmuxer) {
+    jmuxer.destroy();
   }
-  wsss.send(JSON.stringify(bitRate))
+  jmuxer = new JMuxer({
+    node: 'playerVideo',
+    flushingTime: 33,
+    fps: 30,
+    mode: 'video',
+    debug: false
+  });
+  myVideo.play();
+  isWaitSps = true;
 })
 //画图形
 var draw_graph = function (graphType, obj) {

+ 39 - 56
screenAndroid/WXtrialInterface.html

@@ -137,10 +137,10 @@
     </div>
     <div class="leftmains">
       <div class="PictureQualityMain">
-        <div class="PictureQuality " data-id="1803000">高清</div>
-        <div class="PictureQuality avit" data-id="1243000">标清</div>
-        <div class="PictureQuality" data-id="400000">极速</div>
-        <div class="PictureQuality" data-id="200">自动</div>
+        <div class="PictureQuality" data-id="4">高清</div>
+        <div class="PictureQuality avit" data-id="3">标清</div>
+        <div class="PictureQuality" data-id="2">极速</div>
+
       </div>
       <div class="operation">
         <div class="upload" id="showsuss" data-text="uploads">
@@ -223,8 +223,9 @@
   <script type="text/javascript" src="pcm-player.js"></script>
   <script type="text/javascript" src="https://cdn.bootcss.com/vConsole/3.2.0/vconsole.min.js"></script>
   <script src="https://cdn.bootcss.com/jquery-weui/1.2.1/js/jquery-weui.min.js"></script>
-  <script type="text/javascript" src="WXdraw.js?v=110"></script>
+  <script type="text/javascript" src="WXdraw.js"></script>
   <script type="text/javascript" src="jmuxer.js"></script>
+  <script type="text/javascript" src="spsParser.js"></script>
   <script>
     var url = window.location.href;
     url = url.split('/');
@@ -283,15 +284,10 @@
     var winese = document.createElement("wine");
     wine.style.top = "-" + winese + 'px';
 
-    var requestCount = 0;
     var isVisuable = true;
     var isFeed = true;
-    var isDrag = false;
-    var isEnough = true;
     var isFinish = false;
-
-    var delayTime = new Date().getTime();
-    var curTime = new Date().getTime();
+    var isWaitSps = false;
     var myVideo = document.getElementById("playerVideo");
     Module = {};
     Module.onRuntimeInitialized = function () {
@@ -302,7 +298,6 @@
     var ip = parameters["ip"];
     var cardToken = parameters["cardToken"];
     cardToken = cardToken && cardToken.replace(/@/g, "=");
-    cardToken = cardToken.replace(/\$/g, "+");
     var appletPushAddress = parameters["appletPushAddress"];
     var socketURL = isWSS ? "wss://" + appletPushAddress + "?cardIp=" + ip + "&token=" + cardToken : "ws://" + appletPushAddress + "?cardIp=" + ip + "&token=" + cardToken;
 
@@ -315,8 +310,6 @@
     });
 
     window.onload = function () {
-      curTime = new Date().getTime();
-
       var myPlay = document.getElementById("wine");
 
       myPlay.onkeydown = function (event) {
@@ -348,7 +341,7 @@
           ws.send("ping");
         } else {
           clearInterval(intervaler);
-          $.toast("画面异常,请重新进入", "text");
+          $.toast("画面异常,请重新进入1", "text");
           if (navigator.userAgent.toLowerCase().includes('toutiaomicroapp')) {
             tt.miniProgram.switchTab({
               url: '/pages/home/home'
@@ -373,7 +366,7 @@
         clearInterval(intervaler);
         throttle(doConnect, 100);
         if (errorTime > 1000) {
-          $.toast("画面异常,请重新进入", "text");
+          $.toast("画面异常,请重新进入2", "text");
           wsss.close();
           if (navigator.userAgent.toLowerCase().includes('toutiaomicroapp')) {
             tt.miniProgram.switchTab({
@@ -402,9 +395,33 @@
           }
         }
 
+        if (data.frameType != undefined && data.frameType != 1 && data.frameType != 6) {
+          if (data.frameType == 7) {
+            let info = spsParser(data.video);
+
+            if (info.width != myVideo.videoWidth && info.height != myVideo.videoHeight) {
+              if (myVideo.videoWidth == 0) {
+                console.log("SPS计算得到宽 %d, 高 %d, 控件宽 %d, %d", info.width, info.height, myVideo.videoWidth, myVideo.videoHeight);
+              }
+            }
+          }
+        }
+
         if (data.video != null) { //喂视频
+          if (data.frameType == 0x05 && isVisuable) {
+            isFeed = true;
+          }
+
+          if (data.frameType == 7 || data.frameType == 8) {
+            isFeed = true;
+            isAudioPlay = true;
+            isWaitSps = false;
+          }
+
           if (isFeed) {
-            jmuxer.feed(data);
+            if (!isWaitSps) {
+              jmuxer.feed(data);
+            }
           }
         }
       });
@@ -468,11 +485,13 @@
       var input = new Uint8Array(data),
         duration,
         video,
+        frameType,
         audio;
       if (input[0] == 0 && input[1] == 0 && input[2] == 0 && input[3] == 1) {
         video = input;
         duration = 24;
         var nalType = input[4] & 0x1f;
+        frameType = nalType;
 
         if (!isFeed) {
           if (nalType == 0x05 && isVisuable) {
@@ -480,15 +499,7 @@
           }
         }
       } else if (input[0] == 0xff) {
-        if (!isEnough) {
-          requestCount++;
-        }
         audio = input;
-
-        if (new Date().getTime() - curTime > 100) {
-          delayTime = new Date().getTime();
-        }
-        curTime = new Date().getTime();
         duration = 24;
       } else if (input[0] == 0x68) {
         if (input[23] == 0x5c) {
@@ -500,7 +511,7 @@
             ws.send(checkBuffer);
           }
           else {
-            $.toast("画面异常,请重新进入", "text");
+            $.toast("画面异常,请重新进入3", "text");
             clearInterval(intervaler);
             ws.close();
             wsss.close();
@@ -537,7 +548,8 @@
       return {
         audio: audio,
         video: video,
-        duration: duration
+        duration: duration,
+        frameType: frameType
       };
     }
 
@@ -737,7 +749,6 @@
         }
       });
     }
-    var orientation = 0; //0 竖屏,1横屏
 
     var btnMuted = document.querySelector("#btnMuted");
     btnMuted && (function () {
@@ -875,24 +886,6 @@
       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 () {
       clearInterval(intervaler);
       ws.close();
@@ -1149,16 +1142,6 @@
         success: function (res) {}
       })
     }
-    function cp(x) {
-      $(".mainbox").css({
-        "display": "none"
-      })
-      $(".sbox").css({
-        "display": "block"
-      })
-      selectText(x);
-      document.execCommand("copy");
-    }
     window.onbeforeunload = function () {
       ws.close();
       wsss.close();

File diff suppressed because it is too large
+ 136 - 128
screenAndroid/helper.js


+ 191 - 0
screenAndroid/spsParser.js

@@ -0,0 +1,191 @@
+//https://blog.csdn.net/lizhijian21/article/details/80982403
+function ceil(val) {
+  return Math.ceil(val);
+}
+
+//获取buf 的前n个bit组成的值
+function u(bitCount, input) {
+  let ret = 0;
+
+  for (var i = 0; i < bitCount; i++) {
+    ret <<= 1;
+
+
+    if (input.data[Math.floor(input.index / 8)] & (0x80 >> (input.index % 8))) {
+      ret += 1;
+    }
+
+    input.index++;
+  }
+
+  return ret;
+}
+
+/*无符号指数哥伦布编码(UE)
+*哥伦布编码的码字code_word由三部分组成:code_word = [M个0] + [1] + [Info]
+*其中,Info是一个携带信息的M位数据,每个哥伦布码的长度为(2M+1)位,每个码字都可由code_num产生。
+*根据码字code_word解码出code_num值的过程如下:
+*1. 首先读入M位以"1"为结尾的0;
+*2. 根据得到的M,读入接下来的M位Info数据;
+*3. 根据这个公式得到计算结果code_num = Info – 1 + 2M
+*/
+
+function ue(input, len) {
+  let zeroNum = 0;
+  while (input.index < len * 8) {
+    if (input.data[Math.floor(input.index / 8)] & (0x80 >> (input.index % 8)))//遇到1则停止,统计0的个数
+    {
+      break;
+    }
+
+    zeroNum++;
+    input.index++;
+  }
+
+  input.index++;
+
+  let ret = 0;
+  //计算
+  for (var i = 0; i < zeroNum; i++) {
+    ret <<= 1;
+    if (input.data[Math.floor(input.index / 8)] & (0x80 >> input.index % 8)) {
+      ret += 1;
+    }
+
+    input.index++;
+  }
+
+  return (1 << zeroNum) - 1 + ret;
+}
+
+//有符号哥伦布编码
+function se(input, len) {
+  let ueVal = ue(input, len);
+  let k = ueVal;
+  let nValue = ceil(k / 2);
+
+  if (ueVal % 2 == 0)
+    nValue = -nValue;
+  return nValue;
+}
+
+
+function spsParser(buf) {
+  let startBitIndex = 0;
+
+  buf = buf.slice(4);//去除00 00 00 01竞争码
+  let len = buf.length;
+
+  //输入参数
+  let input = {
+    data: buf,
+    index: startBitIndex
+  };
+
+
+  let forbidden_zero_bit = u(1, input);
+  let nal_ref_idc = u(2, input);
+  let nal_unit_type = u(5, input);
+  let chroma_format_idc;
+
+  if (nal_unit_type == 7) {
+    let profile_idc = u(8, input);
+    let constraint_set0_flag = u(1, input);
+    let constraint_set1_flag = u(1, input);
+    let constraint_set2_flag = u(1, input);
+    let constraint_set3_flag = u(1, input);
+    let constraint_set4_flag = u(1, input);
+    let constraint_set5_flag = u(1, input);
+
+    let reserved_zero_2bits = u(2, input);
+    let level_idc = u(8, input);
+    let seq_parameter_set_id = ue(input, len);
+
+    if (profile_idc == 100 | profile_idc == 110 || profile_idc == 122 || profile_idc == 144) {
+      chroma_format_idc = ue(input, len);
+
+      if (chroma_format_idc == 3) {
+        var residual_colour_transform_flag = u(1, input);
+      }
+
+      let bit_depth_luma_minus8 = ue(input, len);
+      let bit_depth_chroma_minus8 = ue(input, len);
+      let qpprime_y_zero_transform_bypass_flag = u(1, input);
+      let seq_scaling_matrix_present_flag = u(1, input);
+
+      let seq_scaling_list_present_flag = new Uint8Array(8);
+      if (seq_scaling_matrix_present_flag) {
+        for (var i = 0; i < 8; i++) {
+          seq_scaling_list_present_flag[i] = u(1, input);
+        }
+      }
+    }
+
+
+    let log2_max_frame_num_minus4 = ue(input, len);
+    let pic_order_cnt_type = ue(input, len);
+
+    if (pic_order_cnt_type == 0)
+      log2_max_pic_order_cnt_lsb_minus4 = ue(input, len);
+
+    else if (pic_order_cnt_type == 1) {
+      let delta_pic_order_always_zero_flag = u(1, input);
+      let offset_for_non_ref_pic = se(input, len);
+      let offset_for_top_to_bottom_field = se(input, len);
+      let num_ref_frames_in_pic_order_cnt_cycle = ue(input, len);
+
+      let offset_for_ref_frame = new Uint8Array[num_ref_frames_in_pic_order_cnt_cycle];
+
+      for (var i = 0; i < num_ref_frames_in_pic_order_cnt_cycle; i++)
+        offset_for_ref_frame[i] = se(input, len);
+    }
+
+    let num_ref_frames = ue(input, len);
+    let gaps_in_frame_num_value_allowed_flag = u(1, input);
+    let pic_width_in_mbs_minus1 = ue(input, len);
+    let pic_height_in_map_units_minus1 = ue(input, len);
+
+    let width = (pic_width_in_mbs_minus1 + 1) * 16;//可能还要进行裁剪处理
+    let height = (pic_height_in_map_units_minus1 + 1) * 16;
+
+    let frame_mbs_only_flag = u(1, input);
+
+    if (!frame_mbs_only_flag) {
+      u(1, input);
+    }
+
+    let direct_8x8_inference_flag = u(1, input);
+    let frame_cropping_flag = u(1, input);
+
+    if (frame_cropping_flag) {
+      let frame_crop_left_offset = ue(input, len);
+      let frame_crop_right_offset = ue(input, len);
+      let frame_crop_top_offset = ue(input, len);
+      let frame_crop_bottom_offset = ue(input, len);
+
+      let crop_unit_x = 1;
+      let crop_unit_y = 2 - frame_mbs_only_flag;
+
+      if (chroma_format_idc == 1) {   //4:2:0
+        crop_unit_x = 2;
+        crop_unit_y = 2 * (2 - frame_mbs_only_flag);
+      }
+      else if (chroma_format_idc == 2) {    //4:2:2
+        crop_unit_x = 2;
+        crop_unit_y = 2 - frame_mbs_only_flag;
+      }
+
+
+      width -= crop_unit_x * (frame_crop_left_offset + frame_crop_right_offset);
+      height -= crop_unit_y * (frame_crop_top_offset + frame_crop_bottom_offset);
+    }
+
+    return {
+      width: width,
+      height: height
+    }
+
+  }
+}
+
+

BIN
screenH5/H264high.mp4


File diff suppressed because it is too large
+ 0 - 1068
screenH5/WXtrialInterface.html


BIN
screenH5/avc.wasm


+ 0 - 537
screenH5/home238wss.html

@@ -1,537 +0,0 @@
-<!DOCTYPE html>
-<html>
-	<head>
-		<meta charset="utf-8">
-		<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" href="../static/css/home.css?id=102">
-		<style>
-			canvas {
-				display: block;
-				width: 100%;
-				height: 100%;
-				z-index: 999;
-			}
-			.wine{
-				width: 100%;
-				height: 100%;
-			}
-			.mainbox {
-			    width: 18rem;
-    height: 10rem;
-    background: #fff;
-    position: fixed;
-    top: 38%;
-    left: 12%;
-    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;
-			}
-			
-			.boximg {
-				position: absolute;
-				width: 1rem;
-				height: 1rem;
-				left: 45%;
-				bottom: -22%;
-			}
-			.maxs{
-				width: 100%;
-				height: 100%;
-				position: fixed;
-				background:rgba(0,0,0,0.5);
-               
-			}
-			.helps{
-				    width: 35px;
-    height: 30px;
-    background: rgba(187,187,187,1);
-    border-radius: 30px 0px 0px 30px;
-    font-size: 13px;
-    line-height: 30px;
-    color: rgba(255,255,255,1);
-    position: absolute;
-    right: 0;
-    bottom: 181px;
-    text-align: center;
-			}
-			
-			.helps-img{
-				width: 50%;
-    height: 50%;
-    margin: 0 auto;
-    margin-top: 0.5rem;
-			}
-			
-			.diskName{
-				margin-left: 6px;
-			}
-			#showsuss{
-				display: none;
-			}
-    </style>
-		<div style="width: 100%;height: 100%;">
-
-			<div class="canvas" style="display: none;">
-				<div id="wine" style="height: 90%;">
-					<!--<image src="img/u760.jpg"></image>-->
-				</div>
-				<div class="camvas-head">
-					<div class="vip">
-						<img class="vipimg" src="../static/img/vip_icon.png"></img>
-						<text class="diskName"></text>
-
-					</div>
-					<div class="canvastime"></div>
-				</div>
-			</div>
-			<!-- 没登录状态 -->
-			<div class="canvasfalse" style="display: none;">
-				<div class="notLoggedin">
-					<image src="../static/img/tianjiashouji_pic.png"></image>
-				</div>
-
-				<!--    审核-->
-				<div id="showsuss">
-					<div class="notLoggedin-text">
-						<div>下载云手机</div>
-						<div>体验更多功能</div>
-					</div>
-
-					<div class="notLoggedin-bt">
-						立即下载
-					</div>
-				</div>
-
-			</div>
-
-			<!--<div class="addto">
-        <img class="addto-img" src="../static/img/tianjia_icon.png"></img>
-    </div>-->
-
-			<div class="help">使用帮助?</div>
-			<div class="helps" data-id="1">
-				<img class="helps-img" src="../static/img/bangzu_icon.png">
-			</div>
-
-			<div class="maxs" style="display: none;">
-				<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="boxbt" onclick="cp(document.getElementById('user_ref_id'));">立即前往下载</div>
-					<div class="boximg"><img src="../static/img/wx/guanbi_icon.png"></div>
-				</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.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 type="text/javascript">
-			var url = window.location.href;
-
-			url = url.split('/')
-			console.log(url)
-			// var baseUrl = 'https://' + url[2] //'http://192.168.31.159'//'http://' + url[2] 
-			var baseUrl = 'http://192.168.31.20' 
-			var query = window.location.search.substring(1);
-			var vars = query.split("&");
-			//						 var urls = "https://xcx.androidscloud.com"
-			//			 审核
-			$.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 baseUrl = window.location.href; //"http://192.168.31.20"
-
-			document.body.addEventListener('touchmove', function(e) {
-				e.preventDefault()
-			}, {
-				passive: false
-			})
-			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 demoTime = vars.find(e => {
-				return e.startsWith('demoTime')
-			}) || ''
-			var id = vars.find(e => {
-				return e.startsWith('id')
-			}) || ''
-			var vip = vars.find(e => {
-				return e.startsWith('vip')
-			}) || ''
-			var diskName = vars.find(e => {
-				return e.startsWith('diskName')
-			}) || ''
-			var times = vars.find(e => {
-				return e.startsWith('times')
-			}) || ''
-			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')
-			}) || ''
-			//				$(".aaa").text(clientType.substring(11, clientType.length))
-			// let cardIp = getUrlParam('cardIp');
-			// console.log(cardIp)
-			getQueryString: (name) => {
-				let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
-				let r = window.location.search.substr(1).match(reg);
-				console.log(name)
-				if (r != null) {
-					return unescape(decodeURI(r[2]));
-					return null;
-				}
-			}
-
-			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)
-			data.vip = vip.substring(4, vip.length)
-			data.diskName = diskName.substring(9, diskName.length)
-			data.times = times.substring(6, times.length)
-			data.username = username.substring(9, username.length)
-			data.userCardId = userCardId.substring(11, userCardId.length)
-			data.ip = ip.substring(3, ip.length)
-			let timestext = "剩" + decodeURI(data.times) || data.demoTime / 3600 + "小时"
-			$(".diskName").text(decodeURI(data.diskName) || data.username)
-			console.log("timestext>>>>>>", timestext);
-			$(".canvastime").text(timestext)
-
-
-			if (data.vip == "0") {
-				$(".canvasfalse").css({
-					"display": "block"
-				})
-				$(".canvas").css({
-					"display": "none"
-				})
-			} else {
-				$(".canvas").css({
-					"display": "block"
-				})
-				$(".canvasfalse").css({
-					"display": "none"
-				})
-			}
-
-			//			云手机相关逻辑	 
-			var player = new Player({
-				size: {
-					width: 768,
-					height: 1024
-				}
-			});
-
-			//		document.body.appendChild(player.canvas);
-			// var urlss = url[2]
-			var urlss='test.androidscloud.com'
-			var secanv = document.getElementById("wine");
-			console.log("player",player.canvas,player);
-			secanv.appendChild(player.canvas);
-			// var strhost = Number(data.clientType) ===2? "wss://"+ urlss +"/shareWebSocket?clientType=2&username="+data.username+"&userCardId="+data.userCardId+"&ip="+data.ip : Number(data.clientType) ===3?"wss://"+ urlss +"/authVideoWebSocket?clientType=3&username="+data.username+"&userCardId="+data.userCardId :"wss://"+ urlss +"/videoWebSocket?clientType="+ data.clientType +"&cardIp="+data.cardIp  +"&port="+ data.port +"&sn="+data.sn;
-			// var strhost = "wss://" + urlss + "/videoWebSocket?clientType=" + data.clientType + "&cardIp=" + data.cardIp +
-			// 	"&port=" + data.port + "&sn=" + data.sn;
-			var strhost="ws://127.0.0.1:8080";
-			// var strhost="wss://test.androidscloud.com/videoWebSocket?clientType=1&cardIp=14.215.128.96&port=2005&sn=RK3930C2301900005";
-			var client = new WebSocket(strhost);
-             console.log('wsssss==============', client)
-
-			client.binaryType = 'arraybuffer';
-            // debugger
-			client.onopen = function(evt) {
-				// onOpen(evt) 
-			};
-			client.onclose = function(evt) {
-				// onClose(evt) 
-			};
-			client.onmessage = function(evt) {
-				onMessage(evt)
-			};
-			client.onerror = function(evt) {
-				// onError(evt) 
-			};
-
-
-
-			function onMessage(evt) {
-				console.log("onMessage==============",evt);
-				var messageData = new Uint8Array(evt.data);
-          
-				player.decode(messageData);
-			}
-
-
-			$("canvas").on("click", function() {
-				client.close()
-				// 		    	?clientType=0&cardIp=30.30.30.42&port=9100&sn=RK3930C2301900042&demoTime=3600&id=3
-				setTimeout(() => {
-					wx.miniProgram.navigateTo({
-						url: '/pages/trialInterface/trialInterface?clientType=' + data.clientType + "&cardIp=" + data.cardIp +
-							"&port=" + data.port + "&sn=" + data.sn + "&username=" + data.username + "&userCardId=" + data.userCardId +
-							"&demoTime=3600&id=" + data.id + "&diskName=" + decodeURI(data.diskName)
-					})
-				}, 100);
-
-			})
-
-			$(".helps").click(function() {
-
-				// wx.miniProgram.navigateTo({
-				// 	url: '/pages/viewurl/viewurl'
-				// })
-				//按点击处理		
-				var set = $('.helps').attr("data-id")
-				if (set == '1') {
-					$('.helps').attr({
-						"data-id": "2"
-					})
-
-					$(".helps").hide();
-					$(".help").css({
-						"right": "0"
-					})
-				} else {
-					$('.helps').attr({
-						"data-id": "1"
-					})
-					$(".help").css({
-						"right": "-4rem"
-					})
-
-				}
-			});
-
-			function stopPropagation(e) {
-				if (e.stopPropagation)
-					e.stopPropagation();
-				else
-					e.cancelBubble = true;
-			}
-
-			$(document).bind('click', function() {
-				$(".help").css({
-					"right": "-4rem"
-				})
-				$('.helps').attr({
-					"data-id": "1"
-				})
-				$(".helps").show();
-			});
-
-			$('.help').bind('click', function(e) {
-				stopPropagation(e);
-				wx.miniProgram.navigateTo({
-					url: '/pages/viewurl/viewurl'
-				})
-			});
-             $('.helps').bind('click', function(e) {
-             	stopPropagation(e);
-             });
-
-
-			// 		    
-			// 		    var player = new Player({
-			//				size: {
-			//					width: 1280,
-			//					height: 720
-			//				}
-			//			});
-			//			var secanv = document.getElementById("wine");
-			//			secanv.appendChild(player.canvas);
-			// 		    var players = AV.Player.fromWebSocket("ws://" + urlss + '/videoWebSocket?' + "clientType=" + data.clientType +
-			//				"&cardIp=" + data.cardIp + "&port=" + data.port + "&sn=" + data.sn);
-			//              players.play();
-
-			$(".boximg").on("click", function() {
-				$(".mainbox").css({
-					"display": "none"
-				})
-				$(".maxs").css({
-					"display": "none"
-				})
-			})
-			$(".maxs").on("click", function() {
-				$(".mainbox").css({
-					"display": "none"
-				})
-				$(".maxs").css({
-					"display": "none"
-				})
-			})
-			$(".addto").on("click", function() {
-				$(".mainbox").css({
-					"display": "block"
-				})
-				$(".maxs").css({
-					"display": "block"
-				})
-			})
-
-			$(".notLoggedin-bt").on("click", function() {
-				//				$(".mainbox").css({
-				//					"display": "block"
-				//				})
-				//				$(".maxs").css({
-				//					"display": "block"
-				//				})
-			})
-
-
-
-			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");
-				alert("复制成功")
-			}
-		</script>
-	</head>
-	<body>
-
-	</body>
-</html>

+ 0 - 537
screenH5/home66Ws.html

@@ -1,537 +0,0 @@
-<!DOCTYPE html>
-<html>
-	<head>
-		<meta charset="utf-8">
-		<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" href="../static/css/home.css?id=102">
-		<style>
-			canvas {
-				display: block;
-				width: 100%;
-				height: 100%;
-				z-index: 999;
-			}
-			.wine{
-				width: 100%;
-				height: 100%;
-			}
-			.mainbox {
-			    width: 18rem;
-    height: 10rem;
-    background: #fff;
-    position: fixed;
-    top: 38%;
-    left: 12%;
-    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;
-			}
-			
-			.boximg {
-				position: absolute;
-				width: 1rem;
-				height: 1rem;
-				left: 45%;
-				bottom: -22%;
-			}
-			.maxs{
-				width: 100%;
-				height: 100%;
-				position: fixed;
-				background:rgba(0,0,0,0.5);
-               
-			}
-			.helps{
-				    width: 35px;
-    height: 30px;
-    background: rgba(187,187,187,1);
-    border-radius: 30px 0px 0px 30px;
-    font-size: 13px;
-    line-height: 30px;
-    color: rgba(255,255,255,1);
-    position: absolute;
-    right: 0;
-    bottom: 181px;
-    text-align: center;
-			}
-			
-			.helps-img{
-				width: 50%;
-    height: 50%;
-    margin: 0 auto;
-    margin-top: 0.5rem;
-			}
-			
-			.diskName{
-				margin-left: 6px;
-			}
-			#showsuss{
-				display: none;
-			}
-    </style>
-		<div style="width: 100%;height: 100%;">
-
-			<div class="canvas" style="display: none;">
-				<div id="wine" style="height: 90%;">
-					<!--<image src="img/u760.jpg"></image>-->
-				</div>
-				<div class="camvas-head">
-					<div class="vip">
-						<img class="vipimg" src="../static/img/vip_icon.png"></img>
-						<text class="diskName"></text>
-
-					</div>
-					<div class="canvastime"></div>
-				</div>
-			</div>
-			<!-- 没登录状态 -->
-			<div class="canvasfalse" style="display: none;">
-				<div class="notLoggedin">
-					<image src="../static/img/tianjiashouji_pic.png"></image>
-				</div>
-
-				<!--    审核-->
-				<div id="showsuss">
-					<div class="notLoggedin-text">
-						<div>下载云手机</div>
-						<div>体验更多功能</div>
-					</div>
-
-					<div class="notLoggedin-bt">
-						立即下载
-					</div>
-				</div>
-
-			</div>
-
-			<!--<div class="addto">
-        <img class="addto-img" src="../static/img/tianjia_icon.png"></img>
-    </div>-->
-
-			<div class="help">使用帮助?</div>
-			<div class="helps" data-id="1">
-				<img class="helps-img" src="../static/img/bangzu_icon.png">
-			</div>
-
-			<div class="maxs" style="display: none;">
-				<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="boxbt" onclick="cp(document.getElementById('user_ref_id'));">立即前往下载</div>
-					<div class="boximg"><img src="../static/img/wx/guanbi_icon.png"></div>
-				</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.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 type="text/javascript">
-			var url = window.location.href;
-
-			url = url.split('/')
-			console.log(url)
-			// var baseUrl = 'https://' + url[2] //'http://192.168.31.159'//'http://' + url[2] 
-			var baseUrl = 'http://192.168.31.20' 
-			var query = window.location.search.substring(1);
-			var vars = query.split("&");
-			//						 var urls = "https://xcx.androidscloud.com"
-			//			 审核
-			$.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 baseUrl = window.location.href; //"http://192.168.31.20"
-
-			document.body.addEventListener('touchmove', function(e) {
-				e.preventDefault()
-			}, {
-				passive: false
-			})
-			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 demoTime = vars.find(e => {
-				return e.startsWith('demoTime')
-			}) || ''
-			var id = vars.find(e => {
-				return e.startsWith('id')
-			}) || ''
-			var vip = vars.find(e => {
-				return e.startsWith('vip')
-			}) || ''
-			var diskName = vars.find(e => {
-				return e.startsWith('diskName')
-			}) || ''
-			var times = vars.find(e => {
-				return e.startsWith('times')
-			}) || ''
-			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')
-			}) || ''
-			//				$(".aaa").text(clientType.substring(11, clientType.length))
-			// let cardIp = getUrlParam('cardIp');
-			// console.log(cardIp)
-			getQueryString: (name) => {
-				let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
-				let r = window.location.search.substr(1).match(reg);
-				console.log(name)
-				if (r != null) {
-					return unescape(decodeURI(r[2]));
-					return null;
-				}
-			}
-
-			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)
-			data.vip = vip.substring(4, vip.length)
-			data.diskName = diskName.substring(9, diskName.length)
-			data.times = times.substring(6, times.length)
-			data.username = username.substring(9, username.length)
-			data.userCardId = userCardId.substring(11, userCardId.length)
-			data.ip = ip.substring(3, ip.length)
-			let timestext = "剩" + decodeURI(data.times) || data.demoTime / 3600 + "小时"
-			$(".diskName").text(decodeURI(data.diskName) || data.username)
-			console.log("timestext>>>>>>", timestext);
-			$(".canvastime").text(timestext)
-
-
-			if (data.vip == "0") {
-				$(".canvasfalse").css({
-					"display": "block"
-				})
-				$(".canvas").css({
-					"display": "none"
-				})
-			} else {
-				$(".canvas").css({
-					"display": "block"
-				})
-				$(".canvasfalse").css({
-					"display": "none"
-				})
-			}
-
-			//			云手机相关逻辑	 
-			var player = new Player({
-				size: {
-					width: 768,
-					height: 1024
-				}
-			});
-
-			//		document.body.appendChild(player.canvas);
-			// var urlss = url[2]
-			var urlss='test.androidscloud.com'
-			var secanv = document.getElementById("wine");
-			console.log("player",player.canvas,player);
-			secanv.appendChild(player.canvas);
-			// var strhost = Number(data.clientType) ===2? "wss://"+ urlss +"/shareWebSocket?clientType=2&username="+data.username+"&userCardId="+data.userCardId+"&ip="+data.ip : Number(data.clientType) ===3?"wss://"+ urlss +"/authVideoWebSocket?clientType=3&username="+data.username+"&userCardId="+data.userCardId :"wss://"+ urlss +"/videoWebSocket?clientType="+ data.clientType +"&cardIp="+data.cardIp  +"&port="+ data.port +"&sn="+data.sn;
-			// var strhost = "wss://" + urlss + "/videoWebSocket?clientType=" + data.clientType + "&cardIp=" + data.cardIp +
-			// 	"&port=" + data.port + "&sn=" + data.sn;
-			var strhost="ws://192.168.11.66:9101";
-			// var strhost="wss://test.androidscloud.com/videoWebSocket?clientType=1&cardIp=14.215.128.96&port=2005&sn=RK3930C2301900005";
-			var client = new WebSocket(strhost);
-             console.log('wsssss==============', client)
-
-			client.binaryType = 'arraybuffer';
-            // debugger
-			client.onopen = function(evt) {
-				// onOpen(evt) 
-			};
-			client.onclose = function(evt) {
-				// onClose(evt) 
-			};
-			client.onmessage = function(evt) {
-				onMessage(evt)
-			};
-			client.onerror = function(evt) {
-				// onError(evt) 
-			};
-
-
-
-			function onMessage(evt) {
-				// console.log("onMessage==============",evt);
-				var messageData = new Uint8Array(evt.data);
-
-				player.decode(messageData);
-			}
-
-
-			$("canvas").on("click", function() {
-				client.close()
-				// 		    	?clientType=0&cardIp=30.30.30.42&port=9100&sn=RK3930C2301900042&demoTime=3600&id=3
-				setTimeout(() => {
-					wx.miniProgram.navigateTo({
-						url: '/pages/trialInterface/trialInterface?clientType=' + data.clientType + "&cardIp=" + data.cardIp +
-							"&port=" + data.port + "&sn=" + data.sn + "&username=" + data.username + "&userCardId=" + data.userCardId +
-							"&demoTime=3600&id=" + data.id + "&diskName=" + decodeURI(data.diskName)
-					})
-				}, 100);
-
-			})
-
-			$(".helps").click(function() {
-
-				// wx.miniProgram.navigateTo({
-				// 	url: '/pages/viewurl/viewurl'
-				// })
-				//按点击处理		
-				var set = $('.helps').attr("data-id")
-				if (set == '1') {
-					$('.helps').attr({
-						"data-id": "2"
-					})
-
-					$(".helps").hide();
-					$(".help").css({
-						"right": "0"
-					})
-				} else {
-					$('.helps').attr({
-						"data-id": "1"
-					})
-					$(".help").css({
-						"right": "-4rem"
-					})
-
-				}
-			});
-
-			function stopPropagation(e) {
-				if (e.stopPropagation)
-					e.stopPropagation();
-				else
-					e.cancelBubble = true;
-			}
-
-			$(document).bind('click', function() {
-				$(".help").css({
-					"right": "-4rem"
-				})
-				$('.helps').attr({
-					"data-id": "1"
-				})
-				$(".helps").show();
-			});
-
-			$('.help').bind('click', function(e) {
-				stopPropagation(e);
-				wx.miniProgram.navigateTo({
-					url: '/pages/viewurl/viewurl'
-				})
-			});
-             $('.helps').bind('click', function(e) {
-             	stopPropagation(e);
-             });
-
-
-			// 		    
-			// 		    var player = new Player({
-			//				size: {
-			//					width: 1280,
-			//					height: 720
-			//				}
-			//			});
-			//			var secanv = document.getElementById("wine");
-			//			secanv.appendChild(player.canvas);
-			// 		    var players = AV.Player.fromWebSocket("ws://" + urlss + '/videoWebSocket?' + "clientType=" + data.clientType +
-			//				"&cardIp=" + data.cardIp + "&port=" + data.port + "&sn=" + data.sn);
-			//              players.play();
-
-			$(".boximg").on("click", function() {
-				$(".mainbox").css({
-					"display": "none"
-				})
-				$(".maxs").css({
-					"display": "none"
-				})
-			})
-			$(".maxs").on("click", function() {
-				$(".mainbox").css({
-					"display": "none"
-				})
-				$(".maxs").css({
-					"display": "none"
-				})
-			})
-			$(".addto").on("click", function() {
-				$(".mainbox").css({
-					"display": "block"
-				})
-				$(".maxs").css({
-					"display": "block"
-				})
-			})
-
-			$(".notLoggedin-bt").on("click", function() {
-				//				$(".mainbox").css({
-				//					"display": "block"
-				//				})
-				//				$(".maxs").css({
-				//					"display": "block"
-				//				})
-			})
-
-
-
-			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");
-				alert("复制成功")
-			}
-		</script>
-	</head>
-	<body>
-
-	</body>
-</html>

+ 0 - 537
screenH5/home96Wss.html

@@ -1,537 +0,0 @@
-<!DOCTYPE html>
-<html>
-	<head>
-		<meta charset="utf-8">
-		<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" href="../static/css/home.css?id=102">
-		<style>
-			canvas {
-				display: block;
-				width: 100%;
-				height: 100%;
-				z-index: 999;
-			}
-			.wine{
-				width: 100%;
-				height: 100%;
-			}
-			.mainbox {
-			    width: 18rem;
-    height: 10rem;
-    background: #fff;
-    position: fixed;
-    top: 38%;
-    left: 12%;
-    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;
-			}
-			
-			.boximg {
-				position: absolute;
-				width: 1rem;
-				height: 1rem;
-				left: 45%;
-				bottom: -22%;
-			}
-			.maxs{
-				width: 100%;
-				height: 100%;
-				position: fixed;
-				background:rgba(0,0,0,0.5);
-               
-			}
-			.helps{
-				    width: 35px;
-    height: 30px;
-    background: rgba(187,187,187,1);
-    border-radius: 30px 0px 0px 30px;
-    font-size: 13px;
-    line-height: 30px;
-    color: rgba(255,255,255,1);
-    position: absolute;
-    right: 0;
-    bottom: 181px;
-    text-align: center;
-			}
-			
-			.helps-img{
-				width: 50%;
-    height: 50%;
-    margin: 0 auto;
-    margin-top: 0.5rem;
-			}
-			
-			.diskName{
-				margin-left: 6px;
-			}
-			#showsuss{
-				display: none;
-			}
-    </style>
-		<div style="width: 100%;height: 100%;">
-
-			<div class="canvas" style="display: none;">
-				<div id="wine" style="height: 90%;">
-					<!--<image src="img/u760.jpg"></image>-->
-				</div>
-				<div class="camvas-head">
-					<div class="vip">
-						<img class="vipimg" src="../static/img/vip_icon.png"></img>
-						<text class="diskName"></text>
-
-					</div>
-					<div class="canvastime"></div>
-				</div>
-			</div>
-			<!-- 没登录状态 -->
-			<div class="canvasfalse" style="display: none;">
-				<div class="notLoggedin">
-					<image src="../static/img/tianjiashouji_pic.png"></image>
-				</div>
-
-				<!--    审核-->
-				<div id="showsuss">
-					<div class="notLoggedin-text">
-						<div>下载云手机</div>
-						<div>体验更多功能</div>
-					</div>
-
-					<div class="notLoggedin-bt">
-						立即下载
-					</div>
-				</div>
-
-			</div>
-
-			<!--<div class="addto">
-        <img class="addto-img" src="../static/img/tianjia_icon.png"></img>
-    </div>-->
-
-			<div class="help">使用帮助?</div>
-			<div class="helps" data-id="1">
-				<img class="helps-img" src="../static/img/bangzu_icon.png">
-			</div>
-
-			<div class="maxs" style="display: none;">
-				<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="boxbt" onclick="cp(document.getElementById('user_ref_id'));">立即前往下载</div>
-					<div class="boximg"><img src="../static/img/wx/guanbi_icon.png"></div>
-				</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.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 type="text/javascript">
-			var url = window.location.href;
-
-			url = url.split('/')
-			console.log(url)
-			// var baseUrl = 'https://' + url[2] //'http://192.168.31.159'//'http://' + url[2] 
-			var baseUrl = 'http://192.168.31.20' 
-			var query = window.location.search.substring(1);
-			var vars = query.split("&");
-			//						 var urls = "https://xcx.androidscloud.com"
-			//			 审核
-			$.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 baseUrl = window.location.href; //"http://192.168.31.20"
-
-			document.body.addEventListener('touchmove', function(e) {
-				e.preventDefault()
-			}, {
-				passive: false
-			})
-			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 demoTime = vars.find(e => {
-				return e.startsWith('demoTime')
-			}) || ''
-			var id = vars.find(e => {
-				return e.startsWith('id')
-			}) || ''
-			var vip = vars.find(e => {
-				return e.startsWith('vip')
-			}) || ''
-			var diskName = vars.find(e => {
-				return e.startsWith('diskName')
-			}) || ''
-			var times = vars.find(e => {
-				return e.startsWith('times')
-			}) || ''
-			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')
-			}) || ''
-			//				$(".aaa").text(clientType.substring(11, clientType.length))
-			// let cardIp = getUrlParam('cardIp');
-			// console.log(cardIp)
-			getQueryString: (name) => {
-				let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
-				let r = window.location.search.substr(1).match(reg);
-				console.log(name)
-				if (r != null) {
-					return unescape(decodeURI(r[2]));
-					return null;
-				}
-			}
-
-			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)
-			data.vip = vip.substring(4, vip.length)
-			data.diskName = diskName.substring(9, diskName.length)
-			data.times = times.substring(6, times.length)
-			data.username = username.substring(9, username.length)
-			data.userCardId = userCardId.substring(11, userCardId.length)
-			data.ip = ip.substring(3, ip.length)
-			let timestext = "剩" + decodeURI(data.times) || data.demoTime / 3600 + "小时"
-			$(".diskName").text(decodeURI(data.diskName) || data.username)
-			console.log("timestext>>>>>>", timestext);
-			$(".canvastime").text(timestext)
-
-
-			if (data.vip == "0") {
-				$(".canvasfalse").css({
-					"display": "block"
-				})
-				$(".canvas").css({
-					"display": "none"
-				})
-			} else {
-				$(".canvas").css({
-					"display": "block"
-				})
-				$(".canvasfalse").css({
-					"display": "none"
-				})
-			}
-
-			//			云手机相关逻辑	 
-			var player = new Player({
-				size: {
-					width: 768,
-					height: 1024
-				}
-			});
-
-			//		document.body.appendChild(player.canvas);
-			// var urlss = url[2]
-			var urlss='test.androidscloud.com'
-			var secanv = document.getElementById("wine");
-			console.log("player",player.canvas,player);
-			secanv.appendChild(player.canvas);
-			// var strhost = Number(data.clientType) ===2? "wss://"+ urlss +"/shareWebSocket?clientType=2&username="+data.username+"&userCardId="+data.userCardId+"&ip="+data.ip : Number(data.clientType) ===3?"wss://"+ urlss +"/authVideoWebSocket?clientType=3&username="+data.username+"&userCardId="+data.userCardId :"wss://"+ urlss +"/videoWebSocket?clientType="+ data.clientType +"&cardIp="+data.cardIp  +"&port="+ data.port +"&sn="+data.sn;
-			// var strhost = "wss://" + urlss + "/videoWebSocket?clientType=" + data.clientType + "&cardIp=" + data.cardIp +
-			// 	"&port=" + data.port + "&sn=" + data.sn;
-			// var strhost="ws://192.168.11.66:9101";
-			var strhost="wss://test.androidscloud.com/videoWebSocket?clientType=1&cardIp=14.215.128.96&port=2005&sn=RK3930C2301900005";
-			var client = new WebSocket(strhost);
-             console.log('wsssss==============', client)
-
-			client.binaryType = 'arraybuffer';
-            // debugger
-			client.onopen = function(evt) {
-				// onOpen(evt) 
-			};
-			client.onclose = function(evt) {
-				// onClose(evt) 
-			};
-			client.onmessage = function(evt) {
-				onMessage(evt)
-			};
-			client.onerror = function(evt) {
-				// onError(evt) 
-			};
-
-
-
-			function onMessage(evt) {
-				console.log("onMessage==============",evt);
-				var messageData = new Uint8Array(evt.data);
-
-				player.decode(messageData);
-			}
-
-
-			$("canvas").on("click", function() {
-				client.close()
-				// 		    	?clientType=0&cardIp=30.30.30.42&port=9100&sn=RK3930C2301900042&demoTime=3600&id=3
-				setTimeout(() => {
-					wx.miniProgram.navigateTo({
-						url: '/pages/trialInterface/trialInterface?clientType=' + data.clientType + "&cardIp=" + data.cardIp +
-							"&port=" + data.port + "&sn=" + data.sn + "&username=" + data.username + "&userCardId=" + data.userCardId +
-							"&demoTime=3600&id=" + data.id + "&diskName=" + decodeURI(data.diskName)
-					})
-				}, 100);
-
-			})
-
-			$(".helps").click(function() {
-
-				// wx.miniProgram.navigateTo({
-				// 	url: '/pages/viewurl/viewurl'
-				// })
-				//按点击处理		
-				var set = $('.helps').attr("data-id")
-				if (set == '1') {
-					$('.helps').attr({
-						"data-id": "2"
-					})
-
-					$(".helps").hide();
-					$(".help").css({
-						"right": "0"
-					})
-				} else {
-					$('.helps').attr({
-						"data-id": "1"
-					})
-					$(".help").css({
-						"right": "-4rem"
-					})
-
-				}
-			});
-
-			function stopPropagation(e) {
-				if (e.stopPropagation)
-					e.stopPropagation();
-				else
-					e.cancelBubble = true;
-			}
-
-			$(document).bind('click', function() {
-				$(".help").css({
-					"right": "-4rem"
-				})
-				$('.helps').attr({
-					"data-id": "1"
-				})
-				$(".helps").show();
-			});
-
-			$('.help').bind('click', function(e) {
-				stopPropagation(e);
-				wx.miniProgram.navigateTo({
-					url: '/pages/viewurl/viewurl'
-				})
-			});
-             $('.helps').bind('click', function(e) {
-             	stopPropagation(e);
-             });
-
-
-			// 		    
-			// 		    var player = new Player({
-			//				size: {
-			//					width: 1280,
-			//					height: 720
-			//				}
-			//			});
-			//			var secanv = document.getElementById("wine");
-			//			secanv.appendChild(player.canvas);
-			// 		    var players = AV.Player.fromWebSocket("ws://" + urlss + '/videoWebSocket?' + "clientType=" + data.clientType +
-			//				"&cardIp=" + data.cardIp + "&port=" + data.port + "&sn=" + data.sn);
-			//              players.play();
-
-			$(".boximg").on("click", function() {
-				$(".mainbox").css({
-					"display": "none"
-				})
-				$(".maxs").css({
-					"display": "none"
-				})
-			})
-			$(".maxs").on("click", function() {
-				$(".mainbox").css({
-					"display": "none"
-				})
-				$(".maxs").css({
-					"display": "none"
-				})
-			})
-			$(".addto").on("click", function() {
-				$(".mainbox").css({
-					"display": "block"
-				})
-				$(".maxs").css({
-					"display": "block"
-				})
-			})
-
-			$(".notLoggedin-bt").on("click", function() {
-				//				$(".mainbox").css({
-				//					"display": "block"
-				//				})
-				//				$(".maxs").css({
-				//					"display": "block"
-				//				})
-			})
-
-
-
-			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");
-				alert("复制成功")
-			}
-		</script>
-	</head>
-	<body>
-
-	</body>
-</html>

File diff suppressed because it is too large
+ 0 - 1093
screenH5/homeNew.html


BIN
screenH5/in.h264


+ 0 - 42
screenH5/index.html

@@ -1,42 +0,0 @@
-<!doctype html>
-<head>
-    <title>Using multiple file formats in JavaScript</title>
-
- 
-    <script type= "text/javascript">
-        function checkAudioCompat() {
-            var myAudio = document.createElement('audio');
-            var msg = document.getElementById("display");
- 
-            msg.innerHTML = "";
- 
-            if (myAudio.canPlayType) {
-                // CanPlayType returns maybe, probably, or an empty string.
-                var playMsg = myAudio.canPlayType('audio/mpeg');
-                if ( "" != playMsg) {
-                    msg.innerHTML += "mp3 is " + playMsg + " supported<br/>";
-                }
-                playMsg = myAudio.canPlayType('audio/ogg; codecs="vorbis"'); 
-                if ( "" != playMsg){
-                    msg.innerHTML += "ogg is " + playMsg + " supported<br/>";                    
-                }
- 
-                playMsg = myAudio.canPlayType('audio/mp4; codecs="mp4a.40.5"');
-                if ( "" != playMsg){
-                    msg.innerHTML += "aac is "+playMsg+" supported<br/>";
-                }
-            }
-            else {
-                msg.innerHTML += "no audio support";                
-            }
-        }
-    </script>
-</head>
-<body>
-    <button onclick="checkAudioCompat();">
-        Test for audio format type
-    </button>
-    <div id="display"> </div>
-    <audio src="./1.aac" controls></audio>
-</body>
-</html>

File diff suppressed because it is too large
+ 0 - 1096
screenH5/trialInterface.html


+ 0 - 989
screenH5/wxhomeInfo.html

@@ -1,989 +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>
-		<style>
-
-			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;
-			}
-		</style>
-	</head>
-
-	<body class="scroll h-player" style="overscroll-behavior: contain;overflow:scroll;overflow-y: hidden;overflow-x: hidden;">
-
-		<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"></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/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"></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.bootcss.com/vConsole/3.2.0/vconsole.min.js"></script>
-		<script src="../static/distss/WXdraw.js"></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 = "http://192.168.31.20"
-			var baseUrl = "https://test.androidscloud.com"
-			// 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 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)
-			$(".leftmains").css({
-				"right": "-4rem"
-			})
-			$('.leftmains').hide()
-			$('.bottommains').hide()
-			$('#btnMuted').hide()
-			// 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)
-
-			} else if (data.clientType == 2) { //分享屏幕
-				$(".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)
-				// console.log(data.ip)
-				// alert("测试3")
-				// alert("data.userCardId",data.userCardId, "data.ip",data.ip)
-			} 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]
-			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
-			var strhost="";
-			var players = AV.Player.fromWebSocket("wss://test.androidscloud.com:9105");
-			// 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);
-
-			// } 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);
-
-			//             &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");
-
-			}
-		</script>
-
-	</body>
-
-</html>

+ 10 - 11
screenIos/WXdraw.js

@@ -22,7 +22,6 @@ var parameters = GetRequest();
 var form = {};
 var cardToken = parameters["cardToken"];
 cardToken = cardToken && cardToken.replace(/@/g, "=");
-cardToken = cardToken.replace(/\$/g, "+");
 form.cardIp = parameters['cardIp'];
 form.port = parameters['port'];
 form.sn = parameters['sn'];
@@ -32,8 +31,8 @@ form.ip = parameters['ip'];
 form.domainName = parameters["domainName"];
 var isWSS = true;
 var cUrl = isWSS ? "wss://" + form.domainName + "?cardIp=" + form.ip + "&token=" + cardToken : "ws://" + form.domainName + "?cardIp=" + form.ip + "&token=" + cardToken;
-var videoWidth = parameters['mealType'] === "STARPRO" || parameters['mealType'] === "STAR" ? 1080 : 720
-var videoHeight = parameters['mealType'] === "STARPRO" || parameters['mealType'] === "STAR" ? 1920 : 1280
+var videoWidth = parameters['resolvingPower'] ? parameters['resolvingPower'] : 720
+var videoHeight = parameters['resolvingPower'] === 720 ? 1280 : 1920
 var wsss;
 var errorTime = 0;
 var first = true;
@@ -128,17 +127,17 @@ $(".botmat1img").on("click", function () {
     wsss.send(ExexuteKeyBoard(187));
   }
 })
-//高清控制
+// 高清控制
 $(".PictureQuality").on("click", function () {
   $(this).addClass("avit").siblings().removeClass('avit')
   var id = $(this).attr("data-id")
-  var bitRate = {
-    "data": {
-      "bitRate": id
-    },
-    "type": "bitRate"
-  }
-  wsss.send(JSON.stringify(bitRate))
+  var cmd = {
+    type: "switchSharpness",
+  };
+
+  decodeWoker.postMessage(cmd);//通知解码器worker切换分辨率		
+  var buffer = makeSharpness(Number(id));
+  webSocketWorker.postMessage(buffer);
 })
 var canDraw = false;
 //画图形

+ 38 - 59
screenIos/WXtrialInterface.html

@@ -51,10 +51,9 @@
     </div>
     <div class="leftmains">
       <div class="PictureQualityMain">
-        <div class="PictureQuality " data-id="1803000">高清</div>
-        <div class="PictureQuality avit" data-id="1243000">标清</div>
-        <div class="PictureQuality" data-id="400000">极速</div>
-        <div class="PictureQuality" data-id="200">自动</div>
+        <div class="PictureQuality" data-id="4">高清</div>
+        <div class="PictureQuality avit" data-id="3">标清</div>
+        <div class="PictureQuality" data-id="2">极速</div>
       </div>
       <div class="operation">
         <div class="upload" id="showsuss" data-text="uploads">
@@ -136,7 +135,7 @@
   <script type="text/javascript" src="pcm-player.js"></script>
   <script type="text/javascript" src="webgl.js"></script>
   <script type="text/javascript" src="https://cdn.bootcss.com/vConsole/3.2.0/vconsole.min.js"></script>
-  <script type="text/javascript" src="WXdraw.js?id=105"></script>
+  <script type="text/javascript" src="WXdraw.js"></script>
   <script type="text/javascript">
     $(function () {
       //手指滑动多少距离就认为是滑成功
@@ -223,7 +222,7 @@
     var baseUrl = url[0] + '//' + url[2];
     console.log(baseUrl)
     var parameters = GetRequest();
-    var renderCount = 0;
+
     if (parameters['mealType'] === 'VIP') {
       $(".loading_sceen_pic").attr('src', '../static/img/home_bg_VIP.png');
     } else if (parameters['mealType'] === 'SVIP') {
@@ -435,9 +434,6 @@
         });
     }
 
-    // 初始化一下就可以了,
-    // var vConsole = new VConsole();
-
     var btnMuted = document.querySelector("#btnMuted");
     btnMuted && (function () {
       var setHistory = function (left, top) {
@@ -576,25 +572,6 @@
       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 () {
       decodeWoker.postMessage('close');
       decodeWoker.terminate();
@@ -619,35 +596,10 @@
       }
     })
 
-    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 handleClose() {
       $('.mask').hide();
     }
 
-    function cp(x) {
-      $(".mainbox").css({
-        "display": "none"
-      })
-      $(".sbox").css({
-        "display": "block"
-      })
-      selectText(x);
-      document.execCommand("copy");
-
-    }
     var decodeCount = 1;
     var isFinish = false;
     var player = new PCMPlayer({
@@ -685,8 +637,10 @@
       Module._free(inputPtr);
       Module._free(retPtr);
     }
-    var decodeWoker = new Worker('decoder.js?width=' + videoWidth + '&height=' + videoHeight);
+    var decodeWoker = new Worker('decoder.js');
     var myVideo = document.getElementById("playCanvas");
+    var logicWidth = 720;
+		var logicHeight = 1280;
     decodeWoker.onmessage = function (event) {
       var objData = event.data;
 
@@ -694,13 +648,18 @@
         case 0:
           break;
         case 1:
-          if (renderCount++ < 4 || !isAudioPlay) {
-            return
+          if (logicWidth != objData.width || logicHeight != objData.height) {
+            logicWidth = objData.width;
+						logicHeight = objData.height;
           }
-          webglPlayer.renderFrame(objData.data, videoWidth, videoHeight, videoWidth * videoHeight, (videoWidth / 2) * (videoHeight / 2));
+          webglPlayer.renderFrame(objData.data, logicWidth, logicHeight, logicWidth * logicHeight, (logicWidth / 2) * (logicHeight / 2));
           $('.weui-mask_transparent').hide()
           $('.weui-toast').hide()
           $('.loading').hide()
+          break;
+        case 5:
+          var buffer = RequestIFrame();
+          webSocketWorker.postMessage(buffer);
       }
     }
 
@@ -728,11 +687,15 @@
 
     webSocketWorker.onmessage = function (event) {
       var input = event.data;
-      if (input[0] == 0xff && isAudioPlay && renderCount >= 4) {
+      if (input[0] == 0xff && isAudioPlay) {
         decodeAAC(input);
       }
       if (input[0] == 0 && input[1] == 0 && input[2] == 0 && input[3] == 1) {
-        decodeWoker.postMessage(event.data);
+        var cmd = {
+          type: "rawData",
+          data: event.data
+        };
+        decodeWoker.postMessage(cmd);
       }
       if (input[0] == 0x68) {
         if (input[23] == 0x5c) {
@@ -1033,6 +996,22 @@
     myVideo.onkeydown = function (event) {
       ExexuteKeyDown(e.keyCode);
     }
+    var level = 2;
+    function switchSharpness() {
+      var cmd = {
+        type: "switchSharpness",
+      };
+
+      decodeWoker.postMessage(cmd);//通知解码器worker切换分辨率		
+      var buffer = makeSharpness(level);
+      webSocketWorker.postMessage(buffer);
+
+      if (level < 4) {
+        level++;
+      } else {
+        level = 0;
+      }
+    }
     window.onbeforeunload = function () {
       wsss.close();
       decodeWoker.postMessage('close');

+ 110 - 60
screenIos/decoder.js

@@ -1,16 +1,27 @@
 var isFinish = false;
-var decodeCount = 0;
+var isSwitchSharpness = false;
 var h264Queue = [];
-var isFirst = true;
-var ret = ''
-var parameters = GetRequest();
-var videoWidth = parameters['width'];
-var videoHeight = parameters['height'];
+var ret;
+
+var maxWidth = 1080;
+var maxHeight = 1920;
+var globalYuvPtr = undefined;
+var golbalYuvData;//全局,只分配一次
+var renderCount = 0;
+
+function doSomeInit() {
+  var allocSize = maxWidth * maxHeight * 3;
+  golbalYuvData = new Uint8Array(allocSize);
+}
+
 self.Module = {
   onRuntimeInitialized: function () {
-    ret = Module._openDecoder(videoWidth, videoHeight);
+    isFinish = true;
+    doSomeInit();
+    ret = Module._openDecoder();
+
     if (!ret) {
-      isFinish = true;
+      console.log("打开编码器成功");
     }
   }
 };
@@ -18,7 +29,32 @@ self.Module = {
 self.importScripts("ffmpeghelper.js");
 
 self.addEventListener('message', function (e) {
-  h264Queue.push(e.data);
+  var msg = e.data;
+  if (msg.type == "rawData") {
+    var buffer = e.data.data;
+
+    if (buffer[0] !== 0xff) { // 音频解码
+      if (isSwitchSharpness) {
+        var type = buffer[4] & 0x1f;
+        if (type == 7 || type == 8) {
+          console.log("视频类型:" + type);
+          isSwitchSharpness = false;
+          h264Queue.push(buffer);
+        }
+      } else {
+        h264Queue.push(buffer);
+      }
+
+    }
+  }
+
+  if (msg.type == "switchSharpness") { // 分辨率切换实现
+    isSwitchSharpness = true;
+    closeDecoder();
+    var ret = Module._openDecoder();//再次开启解码器
+    var timeFlag = setInterval(decodeVideo, 1);
+    console.log("切换解码器成功");
+  }
 }, false);
 
 function PrintfLog(str) {
@@ -31,76 +67,90 @@ function PrintfLog(str) {
   self.postMessage(objData);
 }
 
-setInterval(
-  function () {
-    if (h264Queue.length > 0 && isFinish) {
-      if (isFirst) {
-        PrintfLog("当前队列大小 :" + h264Queue.length);
-        isFirst = false;
-      }
+function doRequestIFrame() {
+  var objData = {
+    cmd: 5,
+  };
+  self.postMessage(objData);
+}
 
-      if (h264Queue.length > 10 && isFinish) {
-        PrintfLog("解不过来 " + h264Queue.length);
-        return;
-      }
 
-      decodeH264(h264Queue.shift());
-    }
-  }, 1);
+function decodeVideo() {
+  if (h264Queue.length > 0 && isFinish) {
+    decodeH264(h264Queue.shift());
+  }
+}
+
 
+var timeFlag = setInterval(decodeVideo, 1);
+
+//实现C 端到js yuv数据赋值, 并分配给opengl 渲染
+/*yuvData, 存放yuv数据的数组
+* inputYuvPtr C++ 
+*/
+function dispatchYuvData(yuvData, inputYuvPtr, videoWidth, videoHeight, copyLen) {
+  for (i = 0; i < copyLen; i++) {
+    yuvData[i] = Module.HEAPU8[(inputYuvPtr) + i];
+  }
+
+  var curTime = new Date().getTime();
+  var objData = {
+    cmd: 1,
+    data: yuvData,
+    time: curTime,
+    width: videoWidth,
+    height: videoHeight
+  };
+  self.postMessage(objData);
+}
 
 function decodeH264(data) {
-  var size = videoWidth * videoHeight *3;
-  var retPtr = Module._malloc(size); //接收的数据
+  var frameWidth = 0;
+  var frameHeight = 0;
   var inputPtr = Module._malloc(data.length); //输入数据
 
-  for (var i = 0; i < data.length; i++) {
+  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) {
-    if (decodeCount > 50) {
-      var curCost = new Date().getTime() - time;
-      PrintfLog("解码耗时 " + curCost + " ms");
-      decodeCount = 0;
-    }
-    decodeCount++;
+  var allocSize = maxWidth * maxHeight * 3 / 2;
+  if (globalYuvPtr == undefined) {
+    globalYuvPtr = Module._malloc(allocSize);
   }
 
-  var yuvData = new Uint8Array(size);
-  for (var i = 0; i < yuvData.length; i++) {
-    yuvData[i] = Module.HEAPU8[(retPtr) + i];
+  var ret = Module._feedData(inputPtr, data.length, globalYuvPtr);
+
+  if (ret >= 0)//解码成功才考虑渲染
+  {
+    frameWidth = Module._getVideoWidth();//拿到解码器宽、高
+    frameHeight = Module._getVideoHeight();
+    var curCost = new Date().getTime() - time;
+    var copyLen = frameWidth * frameHeight * 3 / 2;//只拷贝必须的长度
+
+    if (renderCount > 1)//第一帧因为画面时全绿色的不渲染
+    {
+      dispatchYuvData(golbalYuvData, globalYuvPtr, frameWidth, frameHeight, copyLen);
+    } else {
+      renderCount++;
+    }
   }
 
-  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);//关闭原有定时器
+  Module._closeDecoder();
+  renderCount = 0;
 
-// 获取url中"?"符后的字串
-function GetRequest() {
-  var url = location.search;
-  var obj = new Object();
-  if (url.indexOf("?") != -1) {
-    var str = url.substring(1);
-    strs = str.split("&");
-    for (var i = 0; i < strs.length; i++) {
-      obj[strs[i].split("=")[0]] = (strs[i].split("=")[1]);
-    }
+  if (globalYuvPtr != undefined) {
+    Module._free(globalYuvPtr);
+    globalYuvPtr = undefined;
   }
-  return obj;
-}
+  console.log("此时buffer长度: %d", h264Queue.length);
+  while (h264Queue.lengh > 0) {
+    h264Queue.shift();
+  }
+}

File diff suppressed because it is too large
+ 1 - 1
screenIos/ffmpeghelper.js


BIN
screenIos/ffmpeghelper.wasm


File diff suppressed because it is too large
+ 192 - 198
screenIos/helper.js


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


BIN
wasm/ffmpeghelper.wasm


File diff suppressed because it is too large
+ 0 - 185
wasm/helper.js


+ 0 - 163
wasm/index.html

@@ -1,163 +0,0 @@
-<html>
-	<head>
-		<link rel="shortcut icon" href="#">
-	</head>
-	
-	<canvas id="playCanvas" width="450" height="800"></canvas>
-	
-	<script type="text/javascript" src="pcm-player.js"></script>
-	<script type="text/javascript" src="webgl.js"></script>
-	<script type="text/javascript" src="helper.js"></script>
-	<script src="https://cdn.bootcss.com/vConsole/3.2.0/vconsole.min.js"></script>
-	<script>
-
-		var decodeCount = 1;
-	    var isFinish = false;
-		var socketURL = "ws://192.168.11.66:9101";
-		
-		var player = new PCMPlayer({
-        encoding: '16bitInt',
-        channels: 2,
-        sampleRate: 44100,
-        flushingTime: 22,
-		debug:false
-		});
-	
-		 this.canvas =  document.getElementById("playCanvas");
-		 var webglPlayer = new WebGLPlayer(this.canvas, {
-            preserveDrawingBuffer: false
-        });
-		
-		let vConsole = new VConsole();
-		
-		Module = {};
-		Module.onRuntimeInitialized = function() 
-		{
-			console.log("Wasm 加载成功!")
-			isFinish = true;
-			
-			var ret = Module._openDecoder(720, 1280);
-			if(!ret)
-			{
-				console.log("打开编码器成功");
-			}
-		}
-		
-		function closeDecoder()
-		{
-			Module._destroyDecoder();
-		}
-		
-		function decodeH264(data)
-		{
-			console.log("调用h264");
-			var 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);
-			}
-			else
-			{
-				console.log("解码识别 %d", ret);
-			}
-			
-			var yuvData = new Uint8Array(2457600);
-			for(i = 0;i < yuvData.length;i++)
-			{
-				yuvData[i] = Module.HEAPU8[(retPtr)+i];
-			}
-			webglPlayer.renderFrame(yuvData, 720, 1280, 720*1280, (720/2)*(1280/2));
-			Module._free(inputPtr);
-			Module._free(retPtr);
-		}
-		
-		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 closeDecoder()
-		{
-		
-		}
-	
-		var ws = new WebSocket(socketURL);
-		ws.binaryType = 'arraybuffer';
-		
-		ws.addEventListener('open', function (event) 
-		{
-			console.log("发送配置帧");
-			ws.send(ConfigChannel("RK3923C1201900139"));
-		});
-		
-		
-		ws.addEventListener('message',function(event) 
-		{	
-			var input = new Uint8Array(event.data);
-			PrintArry(input);
-			
-			if(input[0] == 0xff)
-			{
-				//console.log("音频数据");
-				if(isFinish)
-				{
-					var time = new Date().getTime();
-					//decodeAAC(input);
-					//console.log("音频解码耗时:%d ms", new Date().getTime() - time);
-				}
-				
-			}
-			else
-			{
-				if(isFinish)
-				{
-					decodeH264(input);
-				}
-				
-				//console.log("视频数据");
-			}
-			
-		}
-		);
-	
-		console.log("-----Hello Moile----");
-	</script>
-	<script type="text/javascript" src="ffmpeghelper.js"></script>
-</html>

+ 0 - 126
wasm/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 - 148
wasm/webgl.js

@@ -1,148 +0,0 @@
-function Texture(gl) {
-    this.gl = gl;
-    this.texture = gl.createTexture();
-    gl.bindTexture(gl.TEXTURE_2D, this.texture);
-
-    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
-    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
-
-    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
-    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
-}
-
-Texture.prototype.bind = function (n, program, name) {
-    var gl = this.gl;
-    gl.activeTexture([gl.TEXTURE0, gl.TEXTURE1, gl.TEXTURE2][n]);
-    gl.bindTexture(gl.TEXTURE_2D, this.texture);
-    gl.uniform1i(gl.getUniformLocation(program, name), n);
-};
-
-Texture.prototype.fill = function (width, height, data) {
-    var gl = this.gl;
-    gl.bindTexture(gl.TEXTURE_2D, this.texture);
-    gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, width, height, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, data);
-};
-
-function WebGLPlayer(canvas, options) {
-    this.canvas = canvas;
-    this.gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
-    this.initGL(options);
-}
-
-WebGLPlayer.prototype.initGL = function (options) {
-    if (!this.gl) {
-        console.log("[ER] WebGL not supported.");
-        return;
-    }
-
-    var gl = this.gl;
-    gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);
-    var program = gl.createProgram();
-    var vertexShaderSource = [
-        "attribute highp vec4 aVertexPosition;",
-        "attribute vec2 aTextureCoord;",
-        "varying highp vec2 vTextureCoord;",
-        "void main(void) {",
-        " gl_Position = aVertexPosition;",
-        " vTextureCoord = aTextureCoord;",
-        "}"
-    ].join("\n");
-    var vertexShader = gl.createShader(gl.VERTEX_SHADER);
-    gl.shaderSource(vertexShader, vertexShaderSource);
-    gl.compileShader(vertexShader);
-    var fragmentShaderSource = [
-        "precision highp float;",
-        "varying lowp vec2 vTextureCoord;",
-        "uniform sampler2D YTexture;",
-        "uniform sampler2D UTexture;",
-        "uniform sampler2D VTexture;",
-        "const mat4 YUV2RGB = mat4",
-        "(",
-        " 1.1643828125, 0, 1.59602734375, -.87078515625,",
-        " 1.1643828125, -.39176171875, -.81296875, .52959375,",
-        " 1.1643828125, 2.017234375, 0, -1.081390625,",
-        " 0, 0, 0, 1",
-        ");",
-        "void main(void) {",
-        " gl_FragColor = vec4( texture2D(YTexture, vTextureCoord).x, texture2D(UTexture, vTextureCoord).x, texture2D(VTexture, vTextureCoord).x, 1) * YUV2RGB;",
-        "}"
-    ].join("\n");
-
-    var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);
-    gl.shaderSource(fragmentShader, fragmentShaderSource);
-    gl.compileShader(fragmentShader);
-    gl.attachShader(program, vertexShader);
-    gl.attachShader(program, fragmentShader);
-    gl.linkProgram(program);
-    gl.useProgram(program);
-    if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
-        console.log("[ER] Shader link failed.");
-    }
-    var vertexPositionAttribute = gl.getAttribLocation(program, "aVertexPosition");
-    gl.enableVertexAttribArray(vertexPositionAttribute);
-    var textureCoordAttribute = gl.getAttribLocation(program, "aTextureCoord");
-    gl.enableVertexAttribArray(textureCoordAttribute);
-
-    var verticesBuffer = gl.createBuffer();
-    gl.bindBuffer(gl.ARRAY_BUFFER, verticesBuffer);
-    gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1.0, 1.0, 0.0, -1.0, 1.0, 0.0, 1.0, -1.0, 0.0, -1.0, -1.0, 0.0]), gl.STATIC_DRAW);
-    gl.vertexAttribPointer(vertexPositionAttribute, 3, gl.FLOAT, false, 0, 0);
-    var texCoordBuffer = gl.createBuffer();
-    gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);
-    gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0]), gl.STATIC_DRAW);
-    gl.vertexAttribPointer(textureCoordAttribute, 2, gl.FLOAT, false, 0, 0);
-
-    gl.y = new Texture(gl);
-    gl.u = new Texture(gl);
-    gl.v = new Texture(gl);
-    gl.y.bind(0, program, "YTexture");
-    gl.u.bind(1, program, "UTexture");
-    gl.v.bind(2, program, "VTexture");
-}
-
-WebGLPlayer.prototype.renderFrame = function (videoFrame, width, height, uOffset, vOffset) {
-    if (!this.gl) {
-        console.log("[ER] Render frame failed due to WebGL not supported.");
-        return;
-    }
-
-    var gl = this.gl;
-    gl.viewport(0, 0, gl.canvas.width, gl.canvas.height);
-    gl.clearColor(0.0, 0.0, 0.0, 0.0);
-    gl.clear(gl.COLOR_BUFFER_BIT);
-
-    gl.y.fill(width, height, videoFrame.subarray(0, uOffset));
-    gl.u.fill(width >> 1, height >> 1, videoFrame.subarray(uOffset, uOffset + vOffset));
-    gl.v.fill(width >> 1, height >> 1, videoFrame.subarray(uOffset + vOffset, videoFrame.length));
-
-    gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
-};
-
-WebGLPlayer.prototype.fullscreen = function () {
-	  var canvas = this.canvas;
-    if (canvas.RequestFullScreen) {
-        canvas.RequestFullScreen();
-    } else if (canvas.webkitRequestFullScreen) {
-        canvas.webkitRequestFullScreen();
-    } else if (canvas.mozRequestFullScreen) {
-        canvas.mozRequestFullScreen();
-    } else if (canvas.msRequestFullscreen) {
-        canvas.msRequestFullscreen();
-    } else {
-        alert("This browser doesn't supporter fullscreen");
-    }
-};
-
-WebGLPlayer.prototype.exitfullscreen = function (){
-    if (document.exitFullscreen) {
-        document.exitFullscreen();
-    } else if (document.webkitExitFullscreen) {
-        document.webkitExitFullscreen();
-    } else if (document.mozCancelFullScreen) {
-        document.mozCancelFullScreen();
-    } else if (document.msExitFullscreen) {
-        document.msExitFullscreen();
-    } else {
-        alert("Exit fullscreen doesn't work");
-    }
-}

BIN
websocket/DesktopClient.exe.lnk


BIN
websocket/Fleck.dll


BIN
websocket/WebsocketTest.exe


BIN
websocket/formatAAC.aac


+ 0 - 169
websocket/helper.js

@@ -1,169 +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));
-	 //return PrintArry(outPut);
-	 return outPut;
- }
-
- 
- //触发键盘事件, code表示键盘值
- function ExexuteKeyDown(code)
- {	 
-	 var jsonObj = {"data":{"keyCode":code, "type":"keyDown"}};
-	 var json = JSON.stringify(jsonObj);
-	 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}, "type":"0"};
-	 var json = JSON.stringify(jsonObj);
-	 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}, "type":"2"};
-	 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}, "type":"1"};
-	 var json = JSON.stringify(jsonObj);
-	 var sn = "RK3923C1201900139";
-	 return makeFrame(sn, 0, json);	 
- }
-  
- 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( i = 0;i< sn.length;i++)
-	 {
-		 outPut[index++] = sn[i].charCodeAt();
-	 }
-	 
-	 outPut[index++] = dataType;//指定数据类型为json
-	 //json string转ascii
-	 for( 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;
-	 var str = PrintArry(outPut);
-	 //console.log("打印数组:%s", PrintArry(outPut));
-	 //return PrintArry(outPut);
-	 return outPut;
- }
- 
- //根据报文识别屏幕方向, 0横屏,1竖屏
- function CheckScreenDirection(data)
- {	
-	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;
-			}
-		}
-	}	
- }
- 
- //查询屏幕方向
- function GetScreenState()
- {
-	var sn = "RK3923C1201900139";
-	var outPut = new Uint8Array([0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x02]);
-	return makeFrameExtend(sn,  5, outPut);
- }
-
- //I 帧请求报文生成
- function RequestIFrame()
- {
-	 var sn = "RK3923C1201900139";
-	 var outPut = new Uint8Array([0x20]);
-	 return makeFrameExtend(sn, 6, outPut);
- }
- 

BIN
websocket/images/loader-thumb.jpg


+ 0 - 336
websocket/index.html

@@ -1,336 +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>
-
-		<div id="container" style="width: 600px; margin: 0 auto;">
-			<video width="100%" autoplay poster="images/loader-thumb.jpg" id="player"></video>
-			<audio width="50%" controls autoplay poster="images/loader-thumb.jpg" id="audioPlayer"></audio>
-		</div>
-
-		<body oncontextmenu="Back()">
-		</body>
-
-		<script src="helper.js">
-		</script>
-
-		<script>
-			//隐藏控件 controls
-			var fpsCount = 0;
-			var timeCount = 0;
-			var isFeed = true;
-			var isDrag = false;
-			var curTime = new Date().getTime();
-			var requestTime = new Date().getTime(); //记录离开时间
-			var myVideo = document.getElementById("player");
-			var myAudio = document.getElementById("audioPlayer");
-
-			document.addEventListener("visibilitychange", () => {
-
-				if (document.visibilityState == "visible") {
-					console.log("页面可见,继续喂视频");
-					requestTime = new Date().getTime();
-					myVideo.play();
-				} else {
-					isFeed = false;
-					//myVideo.pause();
-				}
-
-
-			});
-			window.MediaSource = window.MediaSource || window.WebKitMediaSource;
-			this.isMSESupported = !!window.MediaSource;
-
-			if (!this.isMSESupported) {
-				alert("不支持MSE");
-			} else {
-				alert("支持MSE");
-			}
-
-			myVideo.addEventListener('pause', function() {
-				console.log("视频播放暂停");
-				isFeed = false;
-			});
-
-			myAudio.addEventListener('onerror', function() {
-				console.log("音频播放暂停");
-				//myAudio.play();
-			});
-
-			function parse(data) {
-				var input = new Uint8Array(data),
-					dv = new DataView(input.buffer),
-					duration,
-					audioLength,
-					audio,
-					video;
-
-				duration = dv.getUint16(0, true); //获取duration
-				audioLength = dv.getUint16(2, true);
-
-				if (audioLength == 0) {
-					video = input.subarray(4);
-					console.log("只有视频");
-				} else {
-					audio = input.subarray(4, (audioLength + 4));
-					video = input.subarray(audioLength + 4);
-					console.log("视频 + 音频");
-				}
-
-
-				return {
-					audio: audio,
-					video: video,
-					duration: duration
-				};
-			}
-
-
-
-			//解协议
-			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; //
-
-					if (nalType == 0x07 || nalType == 0x08 || nalType == 0x05) //策略, 找到sps、sps、或I帧,才继续渲染
-					{
-						if (!isFeed) {
-							console.log("%d, 检测到I帧,重新渲染, 耗时 %d ms", nalType, new Date().getTime() - requestTime);
-						}
-
-						isFeed = true;
-
-					} else {
-
-					}
-
-				} else if (input[0] == 0xff) {
-					audio = input;
-					duration = 22;
-				} 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("安卓卡此时横屏");
-							//横屏处理
-						}
-					}
-					//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://localhost:8080"
-				// socketURL = "ws://192.168.11.238:8080";//C# websocket服务器中转
-				// socketURL="wss://test.androidscloud.com/videoWebSocket?clientType=1&cardIp=14.215.128.96&port=2005&sn=RK3930C2301900005"
-				//socketURL = "ws://127.0.0.1:8022/videoWebSocket?clientType=0&sn=RK3923C1201900139&cardIp=192.168.11.66&port=9100";
-				/*socketURL = "ws://192.168.31.242:8022/videoWebSocket?clientType=0&sn=RK3923C1201900139&cardIp=192.168.11.66&port=9100";*/
-				//flushingTime, 缓存刷新时间
-				// socketURL = "ws://14.215.128.98:14112";
-				socketURL = "ws://192.168.11.66:9101";
-
-				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: 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('message', function(event) {
-
-					//console.log("喂数据");
-					//jmuxer.feed(data);
-					var data = ParseProto(event.data); //JAVA服务器转发
-					//var data = parse(event.data);//分离音视频数据,C#转发
-					//   console.log("推流详情============",event.data);
-
-					var audioData = {
-						audio: data.audio,
-						video: null,
-						duration: data.duration
-					};
-
-					var videoData = {
-						audio: null,
-						video: data.video,
-						duration: data.duration
-					};
-
-					var streamTemp = myAudio.captureStream();
-
-					if (myAudio.readyState == 2) {
-						console.log("出现声音停止");
-						//alert("出现声音停止");
-						//console.log("出现声音停止,当今进度 %s, %s", myAudio.played.end(0), myAudio.buffered.end(0));
-						myAudio.play();
-					}
-
-					if (data.audio != null) //喂音频
-					{
-						//console.log("feed audio");
-						audioMuxer.feed(audioData);
-
-					}
-
-					if (data.video != null) //喂视频
-					{
-						if (isFeed) {
-							jmuxer.feed(data);
-						}
-
-						//jmuxer.feed(videoData);
-					}
-
-					if (data.video) {
-						if (new Date().getTime() - curTime >= 1000) {
-							//console.log("fps %d", fpsCount);
-							fpsCount = 0;
-							curTime = new Date().getTime();
-						} else {
-							fpsCount++;
-						}
-					}
-				});
-
-
-				myVideo.onmousedown = function(event) {
-					//放在此处只是为了方便演示,实际使用中查找横竖屏只要刚连接上时调用一次就好。	
-					//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);
-						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>

BIN
websocket/input.aac


File diff suppressed because it is too large
+ 0 - 2576
websocket/jmuxer.js


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


BIN
websocket/shuchu.aac


+ 0 - 60
websocket/云手机云控控制指令

@@ -1,60 +0,0 @@
-
-数据格式 :"{"data":{"keyCode":"25"},"type":"keyDown"}"
-
-
-对象中的type事件根据不同操作发送不同的type
-
-音量加减、home键、back等等格式:
-{"data":{"keyCode":"25"},"type":"keyDown"} ps:keyCode的值分别表示为25减音量,24加音量,4为返回键,3为home键,187为切换菜单
-{"data":{"keyCode":"24"},"type":"keyDown"}
-
-设置像素  200:极速/400:高速/1000:高清/600:标清/800:自动
-{"data":{"bitRate":200},"type":"setBitRate"}
-
-关闭连接事件
-{"data":{"x":"0","y":"0"},"type":"closeServer"}
-
-说明:count是从1开始是代表当前的触摸点个数,action表示当前的动作,type跟着action走,只是action为整数类型,type为字符串
-
-   pointerId是从0开始表示当前的触摸点id值
-
-
-单点点击效果:先发送一个down(0)事件后再发送up(1)事件即可,然后发送一个count(触摸点个数)
- {"data":{"action":0,"count":1,"pointerId":0,"x":"15.10","y":"12.36"},"type":"0"}
- {"data":{"action":1,"count":1,"pointerId":0,"x":"15.10","y":"12.36"},"type":"1"}
-
-屏幕单点按下:发送一个down事件(action 记为0,type也为0)
- {"data":{"action":0,"count":1,"pointerId":0,"x":"15.10","y":"12.36"},"type":"0"}
-
-屏幕单点抬起:发送一个up事件
- {"data":{"action":1,"count":1,"pointerId":0,"x":"15.10","y":"12.36"},"type":"1"}
-
-屏幕单点长按事件
-{"data":{"action":0,"count":1,"pointerId":0,"x":"15.10","y":"12.36"},"type":"0"}
-{"data":{"action":2,"count":1,"pointerId":0,"x":"15.10","y":"12.36"},"type":"2"}
-
-屏幕单点长按后抬起
-{"data":{"action":0,"count":1,"pointerId":0,"x":"15.10","y":"12.36"},"type":"0"}
-{"data":{"action":2,"count":1,"pointerId":0,"x":"15.10","y":"12.36"},"type":"2"}
-{"data":{"action":1,"count":1,"pointerId":0,"x":"15.10","y":"12.36"},"type":"1"}
-
-屏幕长按+滑动事件(拖拽某APP使用组合) 
-{"data":{"action":0,"count":1,"pointerId":0,"x":"15.10","y":"12.36"},"type":"0"}
-{"data":{"action":2,"count":1,"pointerId":0,"x":"15.10","y":"12.36"},"type":"2"}
-{"data":{"action":1,"count":1,"pointerId":0,"x":"15.10","y":"12.36"},"type":"1"}
-
-滑动+抬起事件使用组合 
-{"data":{"action":0,"count":1,"pointerId":0,"x":"15.10","y":"12.36"},"type":"0"}
-{"data":{"action":2,"count":1,"pointerId":0,"x":"15.10","y":"12.36"},"type":"2"}
-{"data":{"action":1,"count":1,"pointerId":0,"x":"15.10","y":"12.36"},"type":"1"}
-
-多点触摸
- {"data":{"action":2,"count":2,"pointerId":0,"x":"15.10","y":"12.36"},"type":"2"}
- {"data":{"action":2,"count":2,"pointerId":1,"x":"17.10","y":"14.36"},"type":"2"}
- {"data":{"action":0,"count":3,"pointerId":2,"x":"18.10","y":"19.36"},"type":"0"}
-
-
-
-
-
-

+ 0 - 4
websocket/使用介绍.md

@@ -1,4 +0,0 @@
-## 一、运行demo
-
-双击WebsocketTest.exe,填入板卡IP和端口,点击开始,然后点击index.html。如果连接不上,杀掉进程重启
-

BIN
websocket/测试/CdllTest.exe


BIN
websocket/测试/D3DContent.dll


BIN
websocket/测试/D3DHost.exe


BIN
websocket/测试/DesktopClient.exe


+ 0 - 8
websocket/测试/DesktopClient.exe.Config

@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<configuration>
-    <appSettings>
-        <add key="RK3923C1201900131sharpness" value="2" />
-        <add key="RK3923C1201900130sharpness" value="2" />
-        <add key="RK3923C1201900139sharpness" value="2" />
-    </appSettings>
-</configuration>

BIN
websocket/测试/Newtonsoft.Json.dll


BIN
websocket/测试/Panuon.UI.Silver.dll


BIN
websocket/测试/PresentationFramework.Aero2.dll


BIN
websocket/测试/SDL2.dll


BIN
websocket/测试/System.Data.Common.dll


BIN
websocket/测试/System.Xml.XPath.XDocument.dll


BIN
websocket/测试/VideoDll.dll


BIN
websocket/测试/avcodec-58.dll


BIN
websocket/测试/avdevice-58.dll


BIN
websocket/测试/avfilter-7.dll


BIN
websocket/测试/avformat-58.dll


BIN
websocket/测试/avutil-56.dll


BIN
websocket/测试/d3dx9_43.dll


BIN
websocket/测试/d3nv.dll


+ 0 - 12
websocket/测试/decode.log

@@ -1,12 +0,0 @@
-DLL日志输出: 2020-10-12 16:03:34:843 client 地址 0x6C14720, 大小 82  
-DLL日志输出: 2020-10-12 16:03:34:864 Decoder::InitNet连接板卡 RK3923C1201900131, ip:183.232.146.76, port:1050, ret:59 
-DLL日志输出: 2020-10-12 16:03:34:878 创建成功 0 
-DLL日志输出: 2020-10-12 16:03:34:878 RK3923C1201900131 创建D3D成功, 0 
-DLL日志输出: 2020-10-12 16:03:38:268 RK3923C1201900131 调用关闭Close函数 
-DLL日志输出: 2020-10-12 16:03:38:268 RK3923C1201900131 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-10-12 16:03:38:268 释放解码线程 0x3E8 
-DLL日志输出: 2020-10-12 16:03:38:270 释放渲染线程 0x408 
-DLL日志输出: 2020-10-12 16:03:38:278 退出渲染线程 
-DLL日志输出: 2020-10-12 16:03:38:279 释放音频线程 0x410 
-DLL日志输出: 2020-10-12 16:03:38:289 RK3923C1201900131 所有资源释放完毕 
-DLL日志输出: 2020-10-12 16:03:38:289 RK3923C1201900131 关闭成功,剩余大小 0 

BIN
websocket/测试/swresample-3.dll


BIN
websocket/测试/swscale-5.dll


+ 0 - 0
websocket/测试/udp日志.log


+ 0 - 424
websocket/测试/videodll.log

@@ -1,424 +0,0 @@
-DLL日志输出: 2020-10-12 16:04:13:034 client 地址 0x638B1E8, 大小 82  
-DLL日志输出: 2020-10-12 16:04:14:537 SendTcpData select 返回值:0 
-DLL日志输出: 2020-10-12 16:04:14:537 Decoder::InitNet连接板卡 RK3923C1201900139, ip:192.168.11.241, port:9100, ret:-2 
-DLL日志输出: 2020-10-12 16:04:14:537 连接板卡失败, 调用Close函数, ret -2 
-DLL日志输出: 2020-10-12 16:04:14:537 释放解码线程 0x0 
-DLL日志输出: 2020-10-12 16:04:14:538 释放渲染线程 0x0 
-DLL日志输出: 2020-10-12 16:04:14:538 释放音频线程 0x0 
-DLL日志输出: 2020-10-12 16:04:14:538 RK3923C1201900139 所有资源释放完毕 
-DLL日志输出: 2020-10-12 16:04:15:134 RK3923C1201900139 调用关闭Close函数 
-DLL日志输出: 2020-10-12 16:04:15:134 RK3923C1201900139 Close函数获取到锁, 当前队列 0 
-DLL日志输出: 2020-10-12 16:04:19:601 client 地址 0x638ADB0, 大小 82  
-DLL日志输出: 2020-10-12 16:04:19:641 Decoder::InitNet连接板卡 RK3923C1201900131, ip:183.232.146.76, port:1050, ret:59 
-DLL日志输出: 2020-10-12 16:04:19:660 创建成功 0 
-DLL日志输出: 2020-10-12 16:04:19:660 RK3923C1201900131 创建D3D成功, 0 
-DLL日志输出: 2020-10-12 16:04:23:590 RK3923C1201900131 调用关闭Close函数 
-DLL日志输出: 2020-10-12 16:04:23:591 RK3923C1201900131 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-10-12 16:04:23:591 释放解码线程 0x3D8 
-DLL日志输出: 2020-10-12 16:04:23:592 退出渲染线程 
-DLL日志输出: 2020-10-12 16:04:23:593 释放渲染线程 0x3F4 
-DLL日志输出: 2020-10-12 16:04:23:593 释放音频线程 0x410 
-DLL日志输出: 2020-10-12 16:04:23:609 RK3923C1201900131 所有资源释放完毕 
-DLL日志输出: 2020-10-12 16:04:23:609 RK3923C1201900131 关闭成功,剩余大小 0 
-DLL日志输出: 2020-10-15 10:37:22:353 client 地址 0x5605C58, 大小 82  
-DLL日志输出: 2020-10-15 10:37:23:856 SendTcpData select 返回值:0 
-DLL日志输出: 2020-10-15 10:37:23:856 Decoder::InitNet连接板卡 RK3923C1201900139, ip:192.168.11.241, port:9100, ret:-2 
-DLL日志输出: 2020-10-15 10:37:23:856 连接板卡失败, 调用Close函数, ret -2 
-DLL日志输出: 2020-10-15 10:37:23:856 释放解码线程 0x0 
-DLL日志输出: 2020-10-15 10:37:23:856 释放渲染线程 0x0 
-DLL日志输出: 2020-10-15 10:37:23:856 释放音频线程 0x0 
-DLL日志输出: 2020-10-15 10:37:23:856 RK3923C1201900139 所有资源释放完毕 
-DLL日志输出: 2020-10-15 10:40:36:907 RK3923C1201900139 调用关闭Close函数 
-DLL日志输出: 2020-10-15 10:40:36:908 RK3923C1201900139 Close函数获取到锁, 当前队列 0 
-DLL日志输出: 2020-10-15 10:52:09:764 client 地址 0x57FBC70, 大小 82  
-DLL日志输出: 2020-10-15 10:52:09:775 Decoder::InitNet连接板卡 RK3923C1201900139, ip:192.168.11.241, port:9100, ret:59 
-DLL日志输出: 2020-10-15 10:52:09:809 创建成功 0 
-DLL日志输出: 2020-10-15 10:52:09:809 RK3923C1201900139 创建D3D成功, 0 
-DLL日志输出: 2020-10-15 10:52:13:931 RK3923C1201900139 调用关闭Close函数 
-DLL日志输出: 2020-10-15 10:52:13:931 RK3923C1201900139 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-10-15 10:52:13:931 释放解码线程 0x364 
-DLL日志输出: 2020-10-15 10:52:13:932 释放渲染线程 0x368 
-DLL日志输出: 2020-10-15 10:52:13:954 退出渲染线程 
-DLL日志输出: 2020-10-15 10:52:13:954 释放音频线程 0x384 
-DLL日志输出: 2020-10-15 10:52:13:965 RK3923C1201900139 所有资源释放完毕 
-DLL日志输出: 2020-10-15 10:52:13:966 RK3923C1201900139 关闭成功,剩余大小 0 
-DLL日志输出: 2020-10-15 10:52:16:224 client 地址 0x57FB838, 大小 82  
-DLL日志输出: 2020-10-15 10:52:16:253 Decoder::InitNet连接板卡 RK3923C1201900139, ip:192.168.11.242, port:9100, ret:59 
-DLL日志输出: 2020-10-15 10:52:16:271 创建成功 0 
-DLL日志输出: 2020-10-15 10:52:16:271 RK3923C1201900139 创建D3D成功, 0 
-DLL日志输出: 2020-10-15 10:52:23:451 RK3923C1201900139 调用关闭Close函数 
-DLL日志输出: 2020-10-15 10:52:23:452 RK3923C1201900139 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-10-15 10:52:23:452 释放解码线程 0x35C 
-DLL日志输出: 2020-10-15 10:52:23:454 退出渲染线程 
-DLL日志输出: 2020-10-15 10:52:23:456 释放渲染线程 0x4E0 
-DLL日志输出: 2020-10-15 10:52:23:456 释放音频线程 0x344 
-DLL日志输出: 2020-10-15 10:52:23:471 RK3923C1201900139 所有资源释放完毕 
-DLL日志输出: 2020-10-15 10:52:23:472 RK3923C1201900139 关闭成功,剩余大小 0 
-DLL日志输出: 2020-10-15 10:52:25:375 client 地址 0x57FB910, 大小 82  
-DLL日志输出: 2020-10-15 10:52:25:386 Decoder::InitNet连接板卡 RK3923C1201900139, ip:192.168.11.242, port:9100, ret:59 
-DLL日志输出: 2020-10-15 10:52:25:416 创建成功 0 
-DLL日志输出: 2020-10-15 10:52:25:417 RK3923C1201900139 创建D3D成功, 0 
-DLL日志输出: 2020-10-15 13:45:47:844 RK3923C1201900139 调用关闭Close函数 
-DLL日志输出: 2020-10-15 13:45:47:845 RK3923C1201900139 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-10-15 13:45:47:845 释放解码线程 0x5A4 
-DLL日志输出: 2020-10-15 13:45:47:849 释放渲染线程 0x338 
-DLL日志输出: 2020-10-15 13:45:47:865 退出渲染线程 
-DLL日志输出: 2020-10-15 13:45:47:866 释放音频线程 0x344 
-DLL日志输出: 2020-10-15 13:45:47:907 RK3923C1201900139 所有资源释放完毕 
-DLL日志输出: 2020-10-15 13:45:47:908 RK3923C1201900139 关闭成功,剩余大小 0 
-DLL日志输出: 2020-10-15 13:46:47:341 client 地址 0xABC8B80, 大小 82  
-DLL日志输出: 2020-10-15 13:46:47:348 Decoder::InitNet连接板卡 RK3923C1201900139, ip:192.168.11.242, port:9100, ret:59 
-DLL日志输出: 2020-10-15 13:46:47:360 创建成功 0 
-DLL日志输出: 2020-10-15 13:46:47:360 RK3923C1201900139 创建D3D成功, 0 
-DLL日志输出: 2020-10-15 13:56:47:323 RK3923C1201900139 调用关闭Close函数 
-DLL日志输出: 2020-10-15 13:56:47:323 RK3923C1201900139 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-10-15 13:56:47:323 释放解码线程 0x308 
-DLL日志输出: 2020-10-15 13:56:47:325 释放渲染线程 0x328 
-DLL日志输出: 2020-10-15 13:56:47:334 退出渲染线程 
-DLL日志输出: 2020-10-15 13:56:47:334 释放音频线程 0x32C 
-DLL日志输出: 2020-10-15 13:56:47:354 RK3923C1201900139 所有资源释放完毕 
-DLL日志输出: 2020-10-15 13:56:47:354 RK3923C1201900139 关闭成功,剩余大小 0 
-DLL日志输出: 2020-10-15 13:56:57:449 client 地址 0xABC8748, 大小 82  
-DLL日志输出: 2020-10-15 13:56:57:469 Decoder::InitNet连接板卡 RK3923C1201900130, ip:14.215.128.97, port:12038, ret:59 
-DLL日志输出: 2020-10-15 13:56:57:519 创建成功 0 
-DLL日志输出: 2020-10-15 13:56:57:519 RK3923C1201900130 创建D3D成功, 0 
-DLL日志输出: 2020-10-15 13:57:11:156 RK3923C1201900130 调用关闭Close函数 
-DLL日志输出: 2020-10-15 13:57:11:156 RK3923C1201900130 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-10-15 13:57:11:157 释放解码线程 0x374 
-DLL日志输出: 2020-10-15 13:57:11:157 释放渲染线程 0x33C 
-DLL日志输出: 2020-10-15 13:57:11:185 退出渲染线程 
-DLL日志输出: 2020-10-15 13:57:11:185 释放音频线程 0x340 
-DLL日志输出: 2020-10-15 13:57:11:191 RK3923C1201900130 所有资源释放完毕 
-DLL日志输出: 2020-10-15 13:57:11:191 RK3923C1201900130 关闭成功,剩余大小 0 
-DLL日志输出: 2020-10-15 13:57:15:224 client 地址 0xABC8820, 大小 82  
-DLL日志输出: 2020-10-15 13:57:16:739 SendTcpData select 返回值:0 
-DLL日志输出: 2020-10-15 13:57:16:739 Decoder::InitNet连接板卡 RK3923C1201900130, ip:14.215.128.97, port:12119, ret:-2 
-DLL日志输出: 2020-10-15 13:57:16:740 连接板卡失败, 调用Close函数, ret -2 
-DLL日志输出: 2020-10-15 13:57:16:740 释放解码线程 0x0 
-DLL日志输出: 2020-10-15 13:57:16:740 释放渲染线程 0x0 
-DLL日志输出: 2020-10-15 13:57:16:740 释放音频线程 0x0 
-DLL日志输出: 2020-10-15 13:57:16:740 RK3923C1201900130 所有资源释放完毕 
-DLL日志输出: 2020-10-15 13:57:18:832 RK3923C1201900130 调用关闭Close函数 
-DLL日志输出: 2020-10-15 13:57:18:832 RK3923C1201900130 Close函数获取到锁, 当前队列 0 
-DLL日志输出: 2020-10-15 13:57:28:973 client 地址 0xABC8B80, 大小 82  
-DLL日志输出: 2020-10-15 13:57:28:998 Decoder::InitNet连接板卡 RK3923C1201900130, ip:14.215.128.98, port:12119, ret:59 
-DLL日志输出: 2020-10-15 13:57:29:016 创建成功 0 
-DLL日志输出: 2020-10-15 13:57:29:016 RK3923C1201900130 创建D3D成功, 0 
-DLL日志输出: 2020-10-15 13:57:35:636 RK3923C1201900130 调用关闭Close函数 
-DLL日志输出: 2020-10-15 13:57:35:636 RK3923C1201900130 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-10-15 13:57:35:636 释放解码线程 0x564 
-DLL日志输出: 2020-10-15 13:57:35:651 释放渲染线程 0x3EC 
-DLL日志输出: 2020-10-15 13:57:35:665 退出渲染线程 
-DLL日志输出: 2020-10-15 13:57:35:666 释放音频线程 0x568 
-DLL日志输出: 2020-10-15 13:57:35:671 RK3923C1201900130 所有资源释放完毕 
-DLL日志输出: 2020-10-15 13:57:35:671 RK3923C1201900130 关闭成功,剩余大小 0 
-DLL日志输出: 2020-10-15 13:57:59:227 client 地址 0x7D08BF0, 大小 82  
-DLL日志输出: 2020-10-15 13:57:59:236 Decoder::InitNet连接板卡 RK3923C1201900130, ip:14.215.128.98, port:12119, ret:59 
-DLL日志输出: 2020-10-15 13:57:59:246 创建成功 0 
-DLL日志输出: 2020-10-15 13:57:59:247 RK3923C1201900130 创建D3D成功, 0 
-DLL日志输出: 2020-10-15 13:58:02:647 RK3923C1201900130 调用关闭Close函数 
-DLL日志输出: 2020-10-15 13:58:02:647 RK3923C1201900130 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-10-15 13:58:02:647 释放解码线程 0x31C 
-DLL日志输出: 2020-10-15 13:58:02:648 释放渲染线程 0x33C 
-DLL日志输出: 2020-10-15 13:58:02:667 退出渲染线程 
-DLL日志输出: 2020-10-15 13:58:02:667 释放音频线程 0x340 
-DLL日志输出: 2020-10-15 13:58:02:674 RK3923C1201900130 所有资源释放完毕 
-DLL日志输出: 2020-10-15 13:58:02:674 RK3923C1201900130 关闭成功,剩余大小 0 
-DLL日志输出: 2020-10-15 14:10:42:573 client 地址 0xAC29878, 大小 82  
-DLL日志输出: 2020-10-15 14:10:42:578 Decoder::InitNet连接板卡 RK3923C1201900139, ip:192.168.11.242, port:9100, ret:59 
-DLL日志输出: 2020-10-15 14:10:42:593 创建成功 0 
-DLL日志输出: 2020-10-15 14:10:42:593 RK3923C1201900139 创建D3D成功, 0 
-DLL日志输出: 2020-10-15 16:00:41:361 RK3923C1201900139 调用关闭Close函数 
-DLL日志输出: 2020-10-15 16:00:41:361 RK3923C1201900139 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-10-15 16:00:41:362 释放解码线程 0x368 
-DLL日志输出: 2020-10-15 16:00:41:365 释放渲染线程 0x388 
-DLL日志输出: 2020-10-15 16:00:41:375 退出渲染线程 
-DLL日志输出: 2020-10-15 16:00:41:376 释放音频线程 0x38C 
-DLL日志输出: 2020-10-15 16:00:41:377 RK3923C1201900139 所有资源释放完毕 
-DLL日志输出: 2020-10-15 16:00:41:377 RK3923C1201900139 关闭成功,剩余大小 0 
-DLL日志输出: 2020-10-15 16:00:56:212 client 地址 0xAC29440, 大小 82  
-DLL日志输出: 2020-10-15 16:00:56:219 Decoder::InitNet连接板卡 RK3923C1201900139, ip:192.168.11.242, port:9100, ret:59 
-DLL日志输出: 2020-10-15 16:00:56:256 创建成功 0 
-DLL日志输出: 2020-10-15 16:00:56:256 RK3923C1201900139 创建D3D成功, 0 
-DLL日志输出: 2020-10-15 16:55:17:939 RK3923C1201900139 调用关闭Close函数 
-DLL日志输出: 2020-10-15 16:55:17:939 RK3923C1201900139 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-10-15 16:55:17:939 释放解码线程 0x360 
-DLL日志输出: 2020-10-15 16:55:17:944 释放渲染线程 0x398 
-DLL日志输出: 2020-10-15 16:55:17:947 退出渲染线程 
-DLL日志输出: 2020-10-15 16:55:17:949 释放音频线程 0x4E4 
-DLL日志输出: 2020-10-15 16:55:17:957 RK3923C1201900139 所有资源释放完毕 
-DLL日志输出: 2020-10-15 16:55:17:957 RK3923C1201900139 关闭成功,剩余大小 0 
-DLL日志输出: 2020-10-16 09:37:54:175 client 地址 0x5787980, 大小 82  
-DLL日志输出: 2020-10-16 09:37:54:195 Decoder::InitNet连接板卡 RK3923C1201900130, ip:14.215.128.98, port:12119, ret:59 
-DLL日志输出: 2020-10-16 09:37:54:442 创建成功 0 
-DLL日志输出: 2020-10-16 09:37:54:442 RK3923C1201900130 创建D3D成功, 0 
-DLL日志输出: 2020-10-16 09:38:02:754 RK3923C1201900130 调用关闭Close函数 
-DLL日志输出: 2020-10-16 09:38:02:754 RK3923C1201900130 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-10-16 09:38:02:755 释放解码线程 0x370 
-DLL日志输出: 2020-10-16 09:38:02:756 释放渲染线程 0x3B4 
-DLL日志输出: 2020-10-16 09:38:02:790 退出渲染线程 
-DLL日志输出: 2020-10-16 09:38:02:791 释放音频线程 0x3B8 
-DLL日志输出: 2020-10-16 09:38:02:792 RK3923C1201900130 所有资源释放完毕 
-DLL日志输出: 2020-10-16 09:38:02:793 RK3923C1201900130 关闭成功,剩余大小 0 
-DLL日志输出: 2020-10-16 09:38:05:368 client 地址 0x5787548, 大小 82  
-DLL日志输出: 2020-10-16 09:38:05:661 Decoder::InitNet连接板卡 RK3923C1201900130, ip:14.215.128.98, port:12119, ret:59 
-DLL日志输出: 2020-10-16 09:38:05:671 创建成功 0 
-DLL日志输出: 2020-10-16 09:38:05:671 RK3923C1201900130 创建D3D成功, 0 
-DLL日志输出: 2020-10-16 09:38:12:155 RK3923C1201900130 调用关闭Close函数 
-DLL日志输出: 2020-10-16 09:38:12:155 RK3923C1201900130 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-10-16 09:38:12:155 释放解码线程 0x3B8 
-DLL日志输出: 2020-10-16 09:38:12:157 释放渲染线程 0x48C 
-DLL日志输出: 2020-10-16 09:38:12:178 退出渲染线程 
-DLL日志输出: 2020-10-16 09:38:12:179 释放音频线程 0x458 
-DLL日志输出: 2020-10-16 09:38:12:194 RK3923C1201900130 所有资源释放完毕 
-DLL日志输出: 2020-10-16 09:38:12:194 RK3923C1201900130 关闭成功,剩余大小 0 
-DLL日志输出: 2020-10-16 09:38:13:249 client 地址 0x5787620, 大小 82  
-DLL日志输出: 2020-10-16 09:38:13:560 Decoder::InitNet连接板卡 RK3923C1201900130, ip:14.215.128.98, port:12119, ret:59 
-DLL日志输出: 2020-10-16 09:38:13:597 创建成功 0 
-DLL日志输出: 2020-10-16 09:38:13:597 RK3923C1201900130 创建D3D成功, 0 
-DLL日志输出: 2020-10-16 09:38:14:210 RK3923C1201900130 调用关闭Close函数 
-DLL日志输出: 2020-10-16 09:38:14:210 RK3923C1201900130 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-10-16 09:38:14:210 释放解码线程 0x344 
-DLL日志输出: 2020-10-16 09:38:14:213 释放渲染线程 0x4A0 
-DLL日志输出: 2020-10-16 09:38:14:221 退出渲染线程 
-DLL日志输出: 2020-10-16 09:38:14:221 释放音频线程 0x478 
-DLL日志输出: 2020-10-16 09:38:14:222 RK3923C1201900130 所有资源释放完毕 
-DLL日志输出: 2020-10-16 09:38:14:222 RK3923C1201900130 关闭成功,剩余大小 0 
-DLL日志输出: 2020-10-16 09:40:24:325 client 地址 0x592DA40, 大小 82  
-DLL日志输出: 2020-10-16 09:40:24:350 Decoder::InitNet连接板卡 RK3923C1201900130, ip:14.215.128.98, port:12119, ret:59 
-DLL日志输出: 2020-10-16 09:40:24:373 创建成功 0 
-DLL日志输出: 2020-10-16 09:40:24:373 RK3923C1201900130 创建D3D成功, 0 
-DLL日志输出: 2020-10-16 09:40:38:519 RK3923C1201900130 调用关闭Close函数 
-DLL日志输出: 2020-10-16 09:40:38:519 RK3923C1201900130 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-10-16 09:40:38:519 释放解码线程 0x3A4 
-DLL日志输出: 2020-10-16 09:40:38:526 释放渲染线程 0x3AC 
-DLL日志输出: 2020-10-16 09:40:38:530 退出渲染线程 
-DLL日志输出: 2020-10-16 09:40:38:531 释放音频线程 0x3B0 
-DLL日志输出: 2020-10-16 09:40:38:532 RK3923C1201900130 所有资源释放完毕 
-DLL日志输出: 2020-10-16 09:40:38:532 RK3923C1201900130 关闭成功,剩余大小 0 
-DLL日志输出: 2020-10-16 09:40:44:081 client 地址 0x592D608, 大小 82  
-DLL日志输出: 2020-10-16 09:40:44:093 Decoder::InitNet连接板卡 RK3923C1201900130, ip:14.215.128.98, port:12119, ret:59 
-DLL日志输出: 2020-10-16 09:40:44:114 创建成功 0 
-DLL日志输出: 2020-10-16 09:40:44:115 RK3923C1201900130 创建D3D成功, 0 
-DLL日志输出: 2020-10-16 09:40:45:234 RK3923C1201900130 调用关闭Close函数 
-DLL日志输出: 2020-10-16 09:40:45:234 RK3923C1201900130 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-10-16 09:40:45:234 释放解码线程 0x4C4 
-DLL日志输出: 2020-10-16 09:40:45:235 释放渲染线程 0x3AC 
-DLL日志输出: 2020-10-16 09:40:45:243 退出渲染线程 
-DLL日志输出: 2020-10-16 09:40:45:243 释放音频线程 0x3C4 
-DLL日志输出: 2020-10-16 09:40:45:245 RK3923C1201900130 所有资源释放完毕 
-DLL日志输出: 2020-10-16 09:40:45:245 RK3923C1201900130 关闭成功,剩余大小 0 
-DLL日志输出: 2020-11-3 13:44:07:682 client 地址 0xE758C8, 大小 82  
-DLL日志输出: 2020-11-3 13:44:07:688 Decoder::InitNet连接板卡 RK3923C1201900139, ip:192.168.11.66, port:9100, ret:59 
-DLL日志输出: 2020-11-3 13:44:07:702 创建成功 0 
-DLL日志输出: 2020-11-3 13:44:07:702 RK3923C1201900139 创建D3D成功, 0 
-DLL日志输出: 2020-11-3 13:44:28:666 RK3923C1201900139 调用关闭Close函数 
-DLL日志输出: 2020-11-3 13:44:28:666 RK3923C1201900139 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-11-3 13:44:28:667 释放解码线程 0x380 
-DLL日志输出: 2020-11-3 13:44:28:668 退出渲染线程 
-DLL日志输出: 2020-11-3 13:44:28:669 释放渲染线程 0x3A0 
-DLL日志输出: 2020-11-3 13:44:28:669 释放音频线程 0x3A4 
-DLL日志输出: 2020-11-3 13:44:28:686 RK3923C1201900139 所有资源释放完毕 
-DLL日志输出: 2020-11-3 13:44:28:686 RK3923C1201900139 关闭成功,剩余大小 0 
-DLL日志输出: 2020-11-4 10:02:34:045 client 地址 0x3A3C08, 大小 82  
-DLL日志输出: 2020-11-4 10:02:34:052 Decoder::InitNet连接板卡 RK3923C1201900139, ip:192.168.11.242, port:9100, ret:59 
-DLL日志输出: 2020-11-4 10:02:34:091 创建成功 0 
-DLL日志输出: 2020-11-4 10:02:34:091 RK3923C1201900139 创建D3D成功, 0 
-DLL日志输出: 2020-11-4 10:02:35:329 RK3923C1201900139 调用关闭Close函数 
-DLL日志输出: 2020-11-4 10:02:35:329 RK3923C1201900139 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-11-4 10:02:35:329 释放解码线程 0x37C 
-DLL日志输出: 2020-11-4 10:02:35:331 释放渲染线程 0x380 
-DLL日志输出: 2020-11-4 10:02:35:331 退出渲染线程 
-DLL日志输出: 2020-11-4 10:02:35:331 释放音频线程 0x3A0 
-DLL日志输出: 2020-11-4 10:02:35:373 RK3923C1201900139 所有资源释放完毕 
-DLL日志输出: 2020-11-4 10:02:35:373 RK3923C1201900139 关闭成功,剩余大小 0 
-DLL日志输出: 2020-11-4 10:02:39:682 client 地址 0x3A37D0, 大小 82  
-DLL日志输出: 2020-11-4 10:02:39:696 Decoder::InitNet连接板卡 RK3923C1201900139, ip:192.168.11.66, port:9100, ret:59 
-DLL日志输出: 2020-11-4 10:02:39:716 创建成功 0 
-DLL日志输出: 2020-11-4 10:02:39:716 RK3923C1201900139 创建D3D成功, 0 
-DLL日志输出: 2020-11-4 10:03:01:546 RK3923C1201900139 调用关闭Close函数 
-DLL日志输出: 2020-11-4 10:03:01:546 RK3923C1201900139 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-11-4 10:03:01:546 释放解码线程 0x370 
-DLL日志输出: 2020-11-4 10:03:01:548 释放渲染线程 0x388 
-DLL日志输出: 2020-11-4 10:03:01:550 退出渲染线程 
-DLL日志输出: 2020-11-4 10:03:01:551 释放音频线程 0x4F4 
-DLL日志输出: 2020-11-4 10:03:01:563 RK3923C1201900139 所有资源释放完毕 
-DLL日志输出: 2020-11-4 10:03:01:563 RK3923C1201900139 关闭成功,剩余大小 0 
-DLL日志输出: 2020-11-4 10:03:04:547 client 地址 0x3A38A8, 大小 82  
-DLL日志输出: 2020-11-4 10:03:04:559 Decoder::InitNet连接板卡 RK3923C1201900130, ip:14.215.128.98, port:12119, ret:59 
-DLL日志输出: 2020-11-4 10:03:04:583 创建成功 0 
-DLL日志输出: 2020-11-4 10:03:04:583 RK3923C1201900130 创建D3D成功, 0 
-DLL日志输出: 2020-11-4 10:03:22:514 RK3923C1201900130 调用关闭Close函数 
-DLL日志输出: 2020-11-4 10:03:22:514 RK3923C1201900130 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-11-4 10:03:22:514 释放解码线程 0x49C 
-DLL日志输出: 2020-11-4 10:03:22:515 释放渲染线程 0x4D8 
-DLL日志输出: 2020-11-4 10:03:22:527 退出渲染线程 
-DLL日志输出: 2020-11-4 10:03:22:527 释放音频线程 0x488 
-DLL日志输出: 2020-11-4 10:03:22:530 RK3923C1201900130 所有资源释放完毕 
-DLL日志输出: 2020-11-4 10:03:22:530 RK3923C1201900130 关闭成功,剩余大小 0 
-DLL日志输出: 2020-11-4 10:03:53:415 client 地址 0x3A38A8, 大小 82  
-DLL日志输出: 2020-11-4 10:03:54:927 SendTcpData select 返回值:0 
-DLL日志输出: 2020-11-4 10:03:54:927 Decoder::InitNet连接板卡 RK3923C1201900130, ip:14.215.128.66, port:12119, ret:-2 
-DLL日志输出: 2020-11-4 10:03:54:927 连接板卡失败, 调用Close函数, ret -2 
-DLL日志输出: 2020-11-4 10:03:54:927 释放解码线程 0x0 
-DLL日志输出: 2020-11-4 10:03:54:927 释放渲染线程 0x0 
-DLL日志输出: 2020-11-4 10:03:54:927 释放音频线程 0x0 
-DLL日志输出: 2020-11-4 10:03:54:928 RK3923C1201900130 所有资源释放完毕 
-DLL日志输出: 2020-11-4 10:04:07:153 RK3923C1201900130 调用关闭Close函数 
-DLL日志输出: 2020-11-4 10:04:07:153 RK3923C1201900130 Close函数获取到锁, 当前队列 0 
-DLL日志输出: 2020-11-4 10:21:56:361 client 地址 0x993AD0, 大小 82  
-DLL日志输出: 2020-11-4 10:21:56:366 Decoder::InitNet连接板卡 RK3923C1201900139, ip:192.168.11.242, port:9100, ret:59 
-DLL日志输出: 2020-11-4 10:21:56:383 创建成功 0 
-DLL日志输出: 2020-11-4 10:21:56:383 RK3923C1201900139 创建D3D成功, 0 
-DLL日志输出: 2020-11-4 10:22:00:172 RK3923C1201900139 调用关闭Close函数 
-DLL日志输出: 2020-11-4 10:22:00:172 RK3923C1201900139 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-11-4 10:22:00:172 释放解码线程 0x384 
-DLL日志输出: 2020-11-4 10:22:00:174 退出渲染线程 
-DLL日志输出: 2020-11-4 10:22:00:174 释放渲染线程 0x3A4 
-DLL日志输出: 2020-11-4 10:22:00:174 释放音频线程 0x3A8 
-DLL日志输出: 2020-11-4 10:22:00:191 RK3923C1201900139 所有资源释放完毕 
-DLL日志输出: 2020-11-4 10:22:00:191 RK3923C1201900139 关闭成功,剩余大小 0 
-DLL日志输出: 2020-11-4 10:25:23:959 client 地址 0xB95438, 大小 82  
-DLL日志输出: 2020-11-4 10:25:23:966 Decoder::InitNet连接板卡 RK3923C1201900139, ip:192.168.11.242, port:9100, ret:59 
-DLL日志输出: 2020-11-4 10:25:23:978 创建成功 0 
-DLL日志输出: 2020-11-4 10:25:23:978 RK3923C1201900139 创建D3D成功, 0 
-DLL日志输出: 2020-11-4 10:25:25:540 RK3923C1201900139 调用关闭Close函数 
-DLL日志输出: 2020-11-4 10:25:25:540 RK3923C1201900139 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-11-4 10:25:25:540 释放解码线程 0x37C 
-DLL日志输出: 2020-11-4 10:25:25:542 释放渲染线程 0x39C 
-DLL日志输出: 2020-11-4 10:25:25:542 退出渲染线程 
-DLL日志输出: 2020-11-4 10:25:25:543 释放音频线程 0x3A0 
-DLL日志输出: 2020-11-4 10:25:25:552 RK3923C1201900139 所有资源释放完毕 
-DLL日志输出: 2020-11-4 10:25:25:552 RK3923C1201900139 关闭成功,剩余大小 0 
-DLL日志输出: 2020-11-4 10:25:29:494 client 地址 0xB95000, 大小 82  
-DLL日志输出: 2020-11-4 10:25:29:508 Decoder::InitNet连接板卡 RK3923C1201900139, ip:192.168.11.66, port:9100, ret:59 
-DLL日志输出: 2020-11-4 10:25:29:563 创建成功 0 
-DLL日志输出: 2020-11-4 10:25:29:563 RK3923C1201900139 创建D3D成功, 0 
-DLL日志输出: 2020-11-4 10:25:45:648 RK3923C1201900139 调用关闭Close函数 
-DLL日志输出: 2020-11-4 10:25:45:648 RK3923C1201900139 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-11-4 10:25:45:649 释放解码线程 0x460 
-DLL日志输出: 2020-11-4 10:25:45:650 退出渲染线程 
-DLL日志输出: 2020-11-4 10:25:45:651 释放渲染线程 0x45C 
-DLL日志输出: 2020-11-4 10:25:45:651 释放音频线程 0x374 
-DLL日志输出: 2020-11-4 10:25:45:661 RK3923C1201900139 所有资源释放完毕 
-DLL日志输出: 2020-11-4 10:25:45:661 RK3923C1201900139 关闭成功,剩余大小 0 
-DLL日志输出: 2020-11-4 10:25:45:662 client 地址 0xB95000, 大小 82  
-DLL日志输出: 2020-11-4 10:25:45:667 Decoder::InitNet连接板卡 RK3923C1201900139, ip:192.168.11.66, port:9100, ret:59 
-DLL日志输出: 2020-11-4 10:25:45:679 创建成功 0 
-DLL日志输出: 2020-11-4 10:25:45:679 RK3923C1201900139 创建D3D成功, 0 
-DLL日志输出: 2020-11-4 10:26:12:542 RK3923C1201900139 调用关闭Close函数 
-DLL日志输出: 2020-11-4 10:26:12:542 RK3923C1201900139 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-11-4 10:26:12:542 释放解码线程 0x378 
-DLL日志输出: 2020-11-4 10:26:12:543 退出渲染线程 
-DLL日志输出: 2020-11-4 10:26:12:544 释放渲染线程 0x34C 
-DLL日志输出: 2020-11-4 10:26:12:544 释放音频线程 0x5E0 
-DLL日志输出: 2020-11-4 10:26:12:550 RK3923C1201900139 所有资源释放完毕 
-DLL日志输出: 2020-11-4 10:26:12:550 RK3923C1201900139 关闭成功,剩余大小 0 
-DLL日志输出: 2020-11-4 10:26:12:550 client 地址 0xB95000, 大小 82  
-DLL日志输出: 2020-11-4 10:26:12:555 Decoder::InitNet连接板卡 RK3923C1201900139, ip:192.168.11.66, port:9100, ret:59 
-DLL日志输出: 2020-11-4 10:26:12:568 创建成功 0 
-DLL日志输出: 2020-11-4 10:26:12:568 RK3923C1201900139 创建D3D成功, 0 
-DLL日志输出: 2020-11-4 10:26:34:725 RK3923C1201900139 调用关闭Close函数 
-DLL日志输出: 2020-11-4 10:26:34:725 RK3923C1201900139 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-11-4 10:26:34:725 释放解码线程 0x4A0 
-DLL日志输出: 2020-11-4 10:26:34:727 释放渲染线程 0x46C 
-DLL日志输出: 2020-11-4 10:26:34:727 退出渲染线程 
-DLL日志输出: 2020-11-4 10:26:34:728 释放音频线程 0x4DC 
-DLL日志输出: 2020-11-4 10:26:34:739 RK3923C1201900139 所有资源释放完毕 
-DLL日志输出: 2020-11-4 10:26:34:739 RK3923C1201900139 关闭成功,剩余大小 0 
-DLL日志输出: 2020-11-4 10:26:34:739 client 地址 0xB95000, 大小 82  
-DLL日志输出: 2020-11-4 10:26:34:744 Decoder::InitNet连接板卡 RK3923C1201900139, ip:192.168.11.66, port:9100, ret:59 
-DLL日志输出: 2020-11-4 10:26:34:755 创建成功 0 
-DLL日志输出: 2020-11-4 10:26:34:755 RK3923C1201900139 创建D3D成功, 0 
-DLL日志输出: 2020-11-4 10:27:00:169 RK3923C1201900139 调用关闭Close函数 
-DLL日志输出: 2020-11-4 10:27:00:169 RK3923C1201900139 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-11-4 10:27:00:169 释放解码线程 0x36C 
-DLL日志输出: 2020-11-4 10:27:00:172 释放渲染线程 0x3F8 
-DLL日志输出: 2020-11-4 10:27:00:175 退出渲染线程 
-DLL日志输出: 2020-11-4 10:27:00:176 释放音频线程 0x4A4 
-DLL日志输出: 2020-11-4 10:27:00:179 RK3923C1201900139 所有资源释放完毕 
-DLL日志输出: 2020-11-4 10:27:00:179 RK3923C1201900139 关闭成功,剩余大小 0 
-DLL日志输出: 2020-11-4 10:27:00:179 client 地址 0xB95000, 大小 82  
-DLL日志输出: 2020-11-4 10:27:00:184 Decoder::InitNet连接板卡 RK3923C1201900139, ip:192.168.11.66, port:9100, ret:59 
-DLL日志输出: 2020-11-4 10:27:00:197 创建成功 0 
-DLL日志输出: 2020-11-4 10:27:00:197 RK3923C1201900139 创建D3D成功, 0 
-DLL日志输出: 2020-11-4 10:27:19:794 RK3923C1201900139 调用关闭Close函数 
-DLL日志输出: 2020-11-4 10:27:19:794 RK3923C1201900139 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-11-4 10:27:19:794 释放解码线程 0x408 
-DLL日志输出: 2020-11-4 10:27:19:796 退出渲染线程 
-DLL日志输出: 2020-11-4 10:27:19:799 释放渲染线程 0x3A4 
-DLL日志输出: 2020-11-4 10:27:19:801 释放音频线程 0x37C 
-DLL日志输出: 2020-11-4 10:27:19:807 RK3923C1201900139 所有资源释放完毕 
-DLL日志输出: 2020-11-4 10:27:19:807 RK3923C1201900139 关闭成功,剩余大小 0 
-DLL日志输出: 2020-11-4 10:27:19:807 client 地址 0xB95000, 大小 82  
-DLL日志输出: 2020-11-4 10:27:19:812 Decoder::InitNet连接板卡 RK3923C1201900139, ip:192.168.11.66, port:9100, ret:59 
-DLL日志输出: 2020-11-4 10:27:19:826 创建成功 0 
-DLL日志输出: 2020-11-4 10:27:19:826 RK3923C1201900139 创建D3D成功, 0 
-DLL日志输出: 2020-11-4 10:27:32:290 RK3923C1201900139 调用关闭Close函数 
-DLL日志输出: 2020-11-4 10:27:32:290 RK3923C1201900139 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-11-4 10:27:32:290 释放解码线程 0x4A0 
-DLL日志输出: 2020-11-4 10:27:32:291 退出渲染线程 
-DLL日志输出: 2020-11-4 10:27:32:292 释放渲染线程 0x5DC 
-DLL日志输出: 2020-11-4 10:27:32:292 释放音频线程 0x508 
-DLL日志输出: 2020-11-4 10:27:32:317 RK3923C1201900139 所有资源释放完毕 
-DLL日志输出: 2020-11-4 10:27:32:317 RK3923C1201900139 关闭成功,剩余大小 0 
-DLL日志输出: 2020-11-4 10:45:45:207 client 地址 0x6A4478, 大小 82  
-DLL日志输出: 2020-11-4 10:45:45:215 Decoder::InitNet连接板卡 RK3923C1201900130, ip:14.215.128.98, port:12119, ret:59 
-DLL日志输出: 2020-11-4 10:45:45:229 创建成功 0 
-DLL日志输出: 2020-11-4 10:45:45:229 RK3923C1201900130 创建D3D成功, 0 
-DLL日志输出: 2020-11-4 10:45:47:442 RK3923C1201900130 调用关闭Close函数 
-DLL日志输出: 2020-11-4 10:45:47:443 RK3923C1201900130 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-11-4 10:45:47:443 释放解码线程 0x380 
-DLL日志输出: 2020-11-4 10:45:47:444 释放渲染线程 0x3A0 
-DLL日志输出: 2020-11-4 10:45:47:469 退出渲染线程 
-DLL日志输出: 2020-11-4 10:45:47:470 释放音频线程 0x3A4 
-DLL日志输出: 2020-11-4 10:45:47:471 RK3923C1201900130 所有资源释放完毕 
-DLL日志输出: 2020-11-4 10:45:47:472 RK3923C1201900130 关闭成功,剩余大小 0 
-DLL日志输出: 2020-11-4 10:45:49:120 client 地址 0x6A4040, 大小 82  
-DLL日志输出: 2020-11-4 10:45:49:137 Decoder::InitNet连接板卡 RK3923C1201900130, ip:14.215.128.98, port:12119, ret:59 
-DLL日志输出: 2020-11-4 10:45:49:166 创建成功 0 
-DLL日志输出: 2020-11-4 10:45:49:166 RK3923C1201900130 创建D3D成功, 0 
-DLL日志输出: 2020-11-4 10:45:52:650 RK3923C1201900130 调用关闭Close函数 
-DLL日志输出: 2020-11-4 10:45:52:650 RK3923C1201900130 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-11-4 10:45:52:650 释放解码线程 0x360 
-DLL日志输出: 2020-11-4 10:45:52:651 释放渲染线程 0x3A4 
-DLL日志输出: 2020-11-4 10:45:52:674 退出渲染线程 
-DLL日志输出: 2020-11-4 10:45:52:675 释放音频线程 0x4A4 
-DLL日志输出: 2020-11-4 10:45:52:676 RK3923C1201900130 所有资源释放完毕 
-DLL日志输出: 2020-11-4 10:45:52:677 RK3923C1201900130 关闭成功,剩余大小 0 
-DLL日志输出: 2020-11-4 10:45:58:180 client 地址 0x6A4118, 大小 82  
-DLL日志输出: 2020-11-4 10:45:58:197 Decoder::InitNet连接板卡 RK3923C1201900130, ip:14.215.128.98, port:12119, ret:59 
-DLL日志输出: 2020-11-4 10:45:58:220 创建成功 0 
-DLL日志输出: 2020-11-4 10:45:58:220 RK3923C1201900130 创建D3D成功, 0 
-DLL日志输出: 2020-11-4 10:46:01:714 RK3923C1201900130 调用关闭Close函数 
-DLL日志输出: 2020-11-4 10:46:01:714 RK3923C1201900130 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-11-4 10:46:01:715 释放解码线程 0x368 
-DLL日志输出: 2020-11-4 10:46:01:716 释放渲染线程 0x3A4 
-DLL日志输出: 2020-11-4 10:46:01:734 退出渲染线程 
-DLL日志输出: 2020-11-4 10:46:01:735 释放音频线程 0x454 
-DLL日志输出: 2020-11-4 10:46:01:737 RK3923C1201900130 所有资源释放完毕 
-DLL日志输出: 2020-11-4 10:46:01:737 RK3923C1201900130 关闭成功,剩余大小 0 
-DLL日志输出: 2020-11-4 10:46:08:919 client 地址 0x6A4478, 大小 82  
-DLL日志输出: 2020-11-4 10:46:08:971 Decoder::InitNet连接板卡 RK3923C1201900131, ip:183.232.146.76, port:1050, ret:59 
-DLL日志输出: 2020-11-4 10:46:08:983 创建成功 0 
-DLL日志输出: 2020-11-4 10:46:08:983 RK3923C1201900131 创建D3D成功, 0 
-DLL日志输出: 2020-11-4 10:46:14:754 RK3923C1201900131 调用关闭Close函数 
-DLL日志输出: 2020-11-4 10:46:14:754 RK3923C1201900131 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-11-4 10:46:14:754 释放解码线程 0x454 
-DLL日志输出: 2020-11-4 10:46:14:756 退出渲染线程 
-DLL日志输出: 2020-11-4 10:46:14:756 释放渲染线程 0x588 
-DLL日志输出: 2020-11-4 10:46:14:757 释放音频线程 0x540 
-DLL日志输出: 2020-11-4 10:46:14:766 RK3923C1201900131 所有资源释放完毕 
-DLL日志输出: 2020-11-4 10:46:14:766 RK3923C1201900131 关闭成功,剩余大小 0 
-DLL日志输出: 2020-11-4 10:46:18:926 client 地址 0x6A4040, 大小 82  
-DLL日志输出: 2020-11-4 10:46:18:953 Decoder::InitNet连接板卡 RK3923C1201900131, ip:183.232.146.76, port:1050, ret:59 
-DLL日志输出: 2020-11-4 10:46:18:974 创建成功 0 
-DLL日志输出: 2020-11-4 10:46:18:974 RK3923C1201900131 创建D3D成功, 0 
-DLL日志输出: 2020-11-4 10:46:35:554 RK3923C1201900131 调用关闭Close函数 
-DLL日志输出: 2020-11-4 10:46:35:554 RK3923C1201900131 Close函数获取到锁, 当前队列 1 
-DLL日志输出: 2020-11-4 10:46:35:554 释放解码线程 0x4D8 
-DLL日志输出: 2020-11-4 10:46:35:555 退出渲染线程 
-DLL日志输出: 2020-11-4 10:46:35:556 释放渲染线程 0x57C 
-DLL日志输出: 2020-11-4 10:46:35:556 释放音频线程 0x35C 
-DLL日志输出: 2020-11-4 10:46:35:567 RK3923C1201900131 所有资源释放完毕 
-DLL日志输出: 2020-11-4 10:46:35:567 RK3923C1201900131 关闭成功,剩余大小 0 

+ 0 - 0
websocket/测试/抓取.yuv