{"_id":"aliyun-webrtc-electron-sdk","_rev":"26-b2e0edcd8cfcd3cdb83a844a2e803bb1","name":"aliyun-webrtc-electron-sdk","dist-tags":{"latest":"2.5.2-beta1","beta":"1.0.0-beta2"},"versions":{"0.0.8":{"name":"aliyun-webrtc-electron-sdk","version":"0.0.8","description":"```sh\r $ # install node-gyp\r $ npm install -g node-gyp","main":"./dist/alirtcengine.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","install":"node-gyp rebuild"},"gypfile":true,"dependencies":{"bindings":"~1.2.1","node-gyp":"^7.1.0","path":"^0.12.7","rebuild":"^0.1.2","yuv-buffer":"^1.0.0","yuv-canvas":"^1.2.6"},"devDependencies":{"babel-loader":"^8.1.0","babel-preset-es2015":"^6.24.1","request":"^2.88.2","webpack":"^4.44.1","webpack-cli":"^3.3.12"},"gitHead":"97749528025ac2a70b7509d392691892c2c2347f","_id":"aliyun-webrtc-electron-sdk@0.0.8","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-05MYdlDhXVuJUbFAQ+4mUW5Hlw6q0Tap39xRuJf6rIKgMq+Hh5muXB67CcELd2ooFiefFO8BoUlZ3GkzCxhNQw==","shasum":"59d48c3e31f9db7d09d96e4850613f2d38a97d8f","tarball":"https://registry.npmjs.org/aliyun-webrtc-electron-sdk/-/aliyun-webrtc-electron-sdk-0.0.8.tgz","fileCount":5,"unpackedSize":13915,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaxXpCRA9TVsSAnZWagAAcHMP/jKRh6JCrlGhXeMm+1Dy\nYH87vLi92eQEADdTFqnhptNo7mbGtocem62Cea5+LTjmLSeIihVDML8+Pmmh\nFgh+4El/tCIcElx6Jx9NpkPo4/WlOc01mve34wdwGHs7UHkq6BUka0B00Ac1\n+YAjG9t06aaoWSpMq/nJhaE0DplRMGsfiDF2aflyHk7FvC7HZFq6wi31adZ9\nRJgKD5SVUMye5vaSZKDXaZ4ri7IfidPjEONZcFg4Lr9qhYTJiJYPqiQPRSYm\nSnulvjF0tv5QsNIZxsYBoOOnYIocSvcgFqV55xzRaA79flic+Hr9DTkV1187\nXK5pbPdMltmTEGOBh6PLKZSMoIUrNKsGeCC0Vci4JDLZh7My4mXu4wqDmq8r\ntZT+lAYVqW9go7x4G7bezfFCXtZBrjQ2bxNic68lSsGekmvbRbcKLrH9R9x+\nm+MztoGhrA6LioF3d9lMQ7Xak49oHZP1E0s0RYANDCfQe34dExJEaFiaG6/v\n1rEM3leo45IxkFpm7HzPkGItv57xkQAeDzSrYBqT5kqTO4A2uq0a2vonjxqs\nYHsVXDkHozhop21K/ZN/nV6cZCUea/Vd0wTaI6Bk/+4cB6Jv/AnrAeSXSXKV\n4MNXkOq6u2kT67hq6yxvLZ+AEqOAM//8RL3WnwfqeMHQhtnrg6VjjZkSwYYh\nAdxV\r\n=FEBG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICPQCZXQ+uJM1boD3pwdWZDUPDstzwCB8R7XSZ8yfMQkAiAK7PLiKZjiXBuF6qT+j4T741mq+Be+FabBNfDQ55M5zg=="}]},"maintainers":[{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"}],"_npmUser":{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aliyun-webrtc-electron-sdk_0.0.8_1600853481016_0.8664914250454656"},"_hasShrinkwrap":false},"0.0.1":{"name":"aliyun-webrtc-electron-sdk","version":"0.0.1","description":"","main":"./dist/alirtcengine.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","install":"node-gyp rebuild"},"gypfile":true,"dependencies":{"bindings":"~1.2.1","node-gyp":"^7.1.0","path":"^0.12.7","rebuild":"^0.1.2","yuv-buffer":"^1.0.0","yuv-canvas":"^1.2.6"},"devDependencies":{"babel-loader":"^8.1.0","babel-preset-es2015":"^6.24.1","request":"^2.88.2","webpack":"^4.44.1","webpack-cli":"^3.3.12"},"gitHead":"97749528025ac2a70b7509d392691892c2c2347f","_id":"aliyun-webrtc-electron-sdk@0.0.1","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-uRQ3Bz27wNN3/nLlj0jbJr0krYRj2QkWqhIij5KFhK/b6JCcloLQmUvrjD5eaKGSa+nEeHvp5ffUrN9YWQ5Clg==","shasum":"e8a21d78f3f974586997154887c646d6ddcf2a78","tarball":"https://registry.npmjs.org/aliyun-webrtc-electron-sdk/-/aliyun-webrtc-electron-sdk-0.0.1.tgz","fileCount":4,"unpackedSize":13479,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaxaOCRA9TVsSAnZWagAAjzwP/32VhGsbqfRlrZR11Syg\nWSSWVC2TyGmuaYfifIunTPLv1YfvmX0P9MYQh6oryD6dp0kTIF3TZi5nfWQv\nVhR7LXxb3HZ6K3sffEEvOxWQrz04r7OgR4fEe/fQYVcrsgZkh3kgP5WnAtaZ\ndyn21otvcDcwwgPIu9qgrAk5Ul58q6G34olX/mpS2hMK2uF519L1LIenw5dM\nrSkJXLHO314VWH9wJOS/7bb+RcmKU6Gl+9odboFFMbXEH3fDjmSPdsasBnYt\niylaYEYaWXXqKr9GDs0iCxIcIMULDLJ9ai18QmZ9thRphcbhzwXoXDTZoL78\nb+yID3LP5rnfdPlHi8r/fYt8rqMVUXCk+D2etB5q4R81wgQrIiHSMR28oeLI\nHlHU5ECCo0aamX39LPgCQ8LpuHPz1S2QoON0lRkvW2iHvTwbADAEW1kEQPVj\nxln9Nx5q/QPxSsk7x94xIEiwr+IPDTQA4Obl4/TjwBzI7WskV+LWj2/l6fed\nf6vzOTzRvNCh91Byr4fVSZJXmw5UsTN2bNrrq1BVv7aZ4+YQJwy0d1jozxm4\n/kp3U2WndUSSnxpB1raCCGuIQSQ20ckI02jGmeI6hU4iNs5DT6ldwlfliC6f\nv2Tt/oDnHMxvcO0APqJD4X86k1YCtv/9KJm6gRwgpGyytQkQ6gAFSodTW/Ut\ncV0/\r\n=pu+s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0TXxPgH+DT6Xt/cyCvMGZXHWpOqi/VmbX5jtWfpoCuwIgWMJTVSzjAjjbHTr1Ly+Pc9X3BgHOanJfJJVkU9cTwAE="}]},"maintainers":[{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"}],"_npmUser":{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aliyun-webrtc-electron-sdk_0.0.1_1600853645972_0.06070715220858558"},"_hasShrinkwrap":false},"0.0.2":{"name":"aliyun-webrtc-electron-sdk","version":"0.0.2","description":"","main":"./dist/alirtcengine.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","install":"node-gyp rebuild"},"gypfile":true,"dependencies":{"bindings":"~1.2.1","node-gyp":"^7.1.0","path":"^0.12.7","rebuild":"^0.1.2","yuv-buffer":"^1.0.0","yuv-canvas":"^1.2.6"},"devDependencies":{"babel-loader":"^8.1.0","babel-preset-es2015":"^6.24.1","request":"^2.88.2","webpack":"^4.44.1","webpack-cli":"^3.3.12"},"gitHead":"eed18dc180901d7fbdf44bdc689e93d4dd4d54a1","_id":"aliyun-webrtc-electron-sdk@0.0.2","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-D4Vm7DanR3XG/Zsl2DgEHC3MbA4Wi2PRDhG85hXg/0mHPgV0boNjp9D0FuEI7EOhRXEsTRXEDGugQuyH/9PEFA==","shasum":"c35d2f2b10aca21de6b2451819fef46aeb900348","tarball":"https://registry.npmjs.org/aliyun-webrtc-electron-sdk/-/aliyun-webrtc-electron-sdk-0.0.2.tgz","fileCount":5,"unpackedSize":13496,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaxcdCRA9TVsSAnZWagAA36MP+QF16rYwzezIRZMdbH/H\nhy0A7CsTlDGjhyOeE0wd01PHw0OkkZuPJoG+qeURzebFUkjQK1dphHGnN8Fq\nvxd3md4UdrupWDheQZ01XiOzuUNyFZu5mUe1LVT+GEPIK+djtOd0rb/RGJwL\nZW8oV/1JirjLgB4wnLNn0c0lKWKk32QgbO/7k3IgDgycq5lv142v2HSxYpZs\ndo0ALKSa/jRT/Q1jseEeUFw2ZiMjY4F9BUUV54nEzLdJPW0u3bNXxvSqjLHF\nRnqCFlqt78GC45ghvohfnEaQ2lM4gUa0YxVcThG5VavZU/nDBtbRim1k9ihl\nqhESZT+eab+s6TX9zdoMDue1VIaR3Yx8NfQcf7b+gJJoKssYLI5xo+aovaaV\n3YW5qYupSKE4tCcDUiNth/cOVlefaXVgg6AG1RrxB6yJfFg0afpQQ3BGpCri\n0Gv2SuCxajeAaiVLv1836yZe1wy7HEexfS9rCDMZ4WPFpMjkL3NSiW6FBnRv\nDC7m1GqSl8zU268W/rD0qk+cK8Bb4jWzezMoV2F7Q3ey1vkynaXE8Nib8NwL\nvQyPdoR3QWoiZXlHVpbJh9g0FLu8k7Eg43HA3gHB64DONSFi86s5UbcLfxoe\nnAng+B7tJ2NR0RhlIVg7LQ79JbO4sbCu0vloia+0y6uA76SRdIjbNFeuDIKa\neZEQ\r\n=XzSp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD4S3j70F7nxLCdEEjA9gslyWz8sXPQgffXgXYwjq9agwIgYwgINvhKAcWLK4yYUfZGp0QIR6LQPbc84Z4tXYZHrQg="}]},"maintainers":[{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"}],"_npmUser":{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aliyun-webrtc-electron-sdk_0.0.2_1600853789018_0.9795110973951873"},"_hasShrinkwrap":false,"deprecated":"deprecate"},"0.0.3-beta":{"name":"aliyun-webrtc-electron-sdk","version":"0.0.3-beta","description":"","main":"./dist/alirtcengine.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","install":"node-gyp rebuild"},"gypfile":true,"dependencies":{"bindings":"~1.2.1","node-gyp":"^7.1.0","path":"^0.12.7","rebuild":"^0.1.2","yuv-buffer":"^1.0.0","yuv-canvas":"^1.2.6"},"devDependencies":{"babel-loader":"^8.1.0","babel-preset-es2015":"^6.24.1","request":"^2.88.2","webpack":"^4.44.1","webpack-cli":"^3.3.12"},"readme":"#### Electron SDK","readmeFilename":"README.md","gitHead":"dfd60fdcd18b6222e561d578d6cec1cbe55558b5","_id":"aliyun-webrtc-electron-sdk@0.0.3-beta","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-DIutGRlXP8in5QLaVxNKlWsRP65YkyjSlb2kXGWO9vzZ6NehZA1WLVopONF/0xWYLxhpOs/RdQMGWtKhJMcRUQ==","shasum":"a74bd80dd9e162b8c7f254a355fb80bf1c9a619a","tarball":"https://registry.npmjs.org/aliyun-webrtc-electron-sdk/-/aliyun-webrtc-electron-sdk-0.0.3-beta.tgz","fileCount":11,"unpackedSize":40642,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcsQJCRA9TVsSAnZWagAAiuUP+webNDk+OIM6Q69ei6wt\nOozqYagTcTuZYyVFkH0gvSn+OtpUmPSMeI5Do1TKBdtaW/LyV0WR8WPKLpcs\n30zkCULNXeUEh1+TWvKbXLZtDWoa5QOjt2jMGmUgbr6GdxFvvlZLF/EbAIy+\nP+LDAlbF78ilvRc+05bYLGv11Q5HTV0sKMa/JoU1c4apS3iHELAIZcXKmYE9\ndyGohKOC52qnsYaC+uzaLkU00yOp5of0Pl3M1s4m4+YIvmxgZjImGxzH/Gu+\n1GE1brAtnb1xNFuVxClPnmp2aLzwQaY5AUNtC492wxS+srheAsG0ACXsZXEr\nFOcImJk0HAu25zCiAjVdVhI2JnDJ6erQNJ1x2qvNLqOrQ+6h5Hk3wTXgJxxd\nwfVqUebdLqLMIrlgbnfkwTkMMTH++8QhnYGmrcADZj0RrD95Gi5mRwkv7aZc\n0jqsq1teK9WhQ9ZEJSI2VwzFWO0Bua8wz7TWKEDXzR7taUzy3FCDZLyiGXiQ\nR174AeUbL1cubYbxrciOxI9Kjl0YgpPQZ3DRhgPac6Knmun/DMpN2M7qRu3K\nacrEuGtEsASD86Rl58+FVlJf9UcVJnIDKCgmKFe7ouJzjLUoV2imKyGjBBkv\nF9s72R6S/IiB898xjP41s1EShWcGmzKSAbqwNiqHQd6UXmI45oWFL/l5g6YB\nbucB\r\n=UMpy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHLRuiF2yNDvs/Uk0hoD4aTGIuPIXuXB4sq8U3SeCRl5AiAUq02GhtosL/GK6oPzzWcmKgWDVFr/58sat+PLEtqFQg=="}]},"maintainers":[{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"}],"_npmUser":{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aliyun-webrtc-electron-sdk_0.0.3-beta_1601356808874_0.4572332740100433"},"_hasShrinkwrap":false},"0.0.4-beta":{"name":"aliyun-webrtc-electron-sdk","version":"0.0.4-beta","description":"","main":"./dist/alirtcengine.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","install":"node-gyp rebuild"},"gypfile":true,"dependencies":{"bindings":"~1.2.1","node-gyp":"^7.1.0","path":"^0.12.7","rebuild":"^0.1.2","yuv-buffer":"^1.0.0","yuv-canvas":"^1.2.6"},"devDependencies":{"babel-loader":"^8.1.0","babel-preset-es2015":"^6.24.1","request":"^2.88.2","webpack":"^4.44.1","webpack-cli":"^3.3.12"},"readme":"#### Electron SDK","readmeFilename":"README.md","gitHead":"f350f0bfd4db91a34a3b130c6533aa97b64e93f6","_id":"aliyun-webrtc-electron-sdk@0.0.4-beta","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-1SE0oCAN9g6MWzquyn/ukhAfKP6VGDQw6pP8gDDAyHxWbTSliToyAka9vskGR8fT3eYKWWAwY3en4H9LlS13rA==","shasum":"300484c3c35e66824358809eebc6f982d09a33e4","tarball":"https://registry.npmjs.org/aliyun-webrtc-electron-sdk/-/aliyun-webrtc-electron-sdk-0.0.4-beta.tgz","fileCount":16,"unpackedSize":105039,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhaFQCRA9TVsSAnZWagAAibkP/29D2NEr1RnRZL4s74RG\nSoSPU2q/4P6nnZ2NZtysv+D3VxNTzLSDvXCisYJio3k01Y95kBhBtzBrS/Pb\nTkGIIoQ0rxnFVeGo9ZRy2GunJ45zzL0qHij1vymdYxwXV5MfmUJK9eHloBvf\nnsAO2DbcWxy9fMFlJaTyJREkMjD4mdI41+devszQCP9dBuaaEbyl8/RgvZv6\nGJ7WA0MXeMG5FtycZPtzVR0phIZPmo7srtRehj2pdHTP8/7MdqLo/fnJA+EI\n261p1Wu82ur7uqTE6cCtOIdRyyt8QBE4Q9DYgSDM57412bnGr++tNtsQYoM8\n1ZLdkhKuJ6IwruPr5fiktcORvTXNZhACDnFaRABhb5pB7J5ccAj8klbxXtyb\nUxH44+zP0oLFJcJnA57JTw4oScJyZHw7IZmruPSG0b9jLINY9ZSY2XQyBuyV\nSEFfJwAbS+yNdoYl2NevOczb54qglH5bHkuT0cjHZW99ey64WS3Ft+4vsWpk\nFQaILuVmPy9qKRwkxsnoeFGZ07BVcc4mjyKorzcsAko5bve9pYprb7wYJvAu\nHhIdkshF5+0LG9rPC/bBZO6WkmSyHdlBk8dRNY3+wU6cGM4sPsTGyRAyizjL\nNTzlENstjQU5W4UayWvtImeuFB5eP7O6Kq8ee3MqY5jeiMRINIhtG92MJgHB\nbwfm\r\n=sLZW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGtj8hBNXlb6G9/BPtYSq09l4wDj5bHMj3pLdKKfQicYAiBqIrTvx43oYrs7vmdW9rXiDoMJ2Q4B6SJaof5DRDnPtw=="}]},"maintainers":[{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"}],"_npmUser":{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aliyun-webrtc-electron-sdk_0.0.4-beta_1602593103808_0.589864429262134"},"_hasShrinkwrap":false},"1.0.0-beta":{"name":"aliyun-webrtc-electron-sdk","version":"1.0.0-beta","description":"","main":"./dist/alirtcengine.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","install":"node-gyp rebuild"},"gypfile":true,"dependencies":{"bindings":"~1.2.1","node-gyp":"^7.1.0","path":"^0.12.7","rebuild":"^0.1.2","yuv-buffer":"^1.0.0","yuv-canvas":"^1.2.6"},"devDependencies":{"babel-loader":"^8.1.0","babel-preset-es2015":"^6.24.1","request":"^2.88.2","webpack":"^4.44.1","webpack-cli":"^3.3.12"},"readme":"#### Electron SDK","readmeFilename":"README.md","gitHead":"d125fa0f10de3fe30a9db67af37ed9dacf6aec5c","_id":"aliyun-webrtc-electron-sdk@1.0.0-beta","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-34hFRJMi8FC9v0wCbIvpG1SqQkTCfzsswylOy1iLMPBJyVcgOUMCMxLLIwZnRjcvVvQ39mTHme6T7hpuFDMFqg==","shasum":"c5c0ecf095eeb9cf0b669409ea02c89b47be55e9","tarball":"https://registry.npmjs.org/aliyun-webrtc-electron-sdk/-/aliyun-webrtc-electron-sdk-1.0.0-beta.tgz","fileCount":15,"unpackedSize":98721,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoR2wCRA9TVsSAnZWagAAj9oP/14IBaYWMXzw67aCMufl\npVirYzGrK9wWbbH4aUvuWYWs5lvwqmIagmeZ50o8XAULZ6ziOqKPE1hHMb42\nlBXifu4PyDHIYg/QugtyVSmP8PVS6CBzhW3nhytB25vLz6XBcx4hRApGM8yh\nYwl/uD0pL8dCwXO3qdSvRR+YVctUnzEkr5Xl+KpBgQlQwoJ3IIvliEW29X/E\npwYi9vF+DgBxxmdmDWNDnihJvGbAjZaQaoxug4gCplw8gwrYWIMwrpsl95KK\nOw7Zg3bb7DlWC+CYYE8T5r0Mu5tWm+m0wm8EKncjl6sX3cNuQGczXj3C8o++\nnnrTbjNE7DhmpzSPJItelDWFhipMUz8q2M9O2VknnkeRtfpiSVDJZCJfM7BT\n/ZDghoLei+iUu6PlZBzSlAxseVDczvDcXvg8PfFoe/61neVXXbI9Xzs1Nwr+\nBogfKQDI6/RN+LP97ifFqURct0nj98gGLPfrpzi/OhyIxeAZzghoP6mUOvCS\n2DApRSkROZOfyr+Ks/B4a1vnkmfiRBATC54riKn6nJpICtsGj/g1Y4vdtznr\ntwAd1N3DTcG60fppRlANdCCZpEig2/w78lOmkwZjfX7K5f6g+cdizdVvoleC\n0KEIrEqCeCQ5hGbu1o0lD6SavWURtgAhhJ0JZBoGBq9qWjEin23krrDAdXbh\nLBK+\r\n=6eWM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCtmY3OJPqhvkDkz4ZqyszDNmQ4wLkhj7VB2SZT6ev8AwIhAKeHAaeH0GxUfOQMKsYFshBAfL9IRxnyPfdnRisGC7ZL"}]},"maintainers":[{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"}],"_npmUser":{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aliyun-webrtc-electron-sdk_1.0.0-beta_1604394415648_0.26774831782115815"},"_hasShrinkwrap":false,"deprecated":"deprecate"},"1.0.0-beta1":{"name":"aliyun-webrtc-electron-sdk","version":"1.0.0-beta1","description":"","main":"./dist/alirtcengine.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","install":"node-gyp rebuild"},"gypfile":true,"dependencies":{"bindings":"~1.2.1","node-gyp":"^7.1.0","path":"^0.12.7","rebuild":"^0.1.2","yuv-buffer":"^1.0.0","yuv-canvas":"^1.2.6"},"devDependencies":{"babel-loader":"^8.1.0","babel-preset-es2015":"^6.24.1","request":"^2.88.2","webpack":"^4.44.1","webpack-cli":"^3.3.12"},"readme":"#### Electron SDK","readmeFilename":"README.md","gitHead":"68a5fdfcd8f143537f21a46b426fe2448bd68cdf","_id":"aliyun-webrtc-electron-sdk@1.0.0-beta1","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-4W6EDq8TfMic4fvPFuuiNQsp1PM5vU7kyaMtJlyIKVVAJ9Hb4GSVKvQ/AwugFrIBiEm4keYFe44KldXSk58Cxg==","shasum":"9ab333385acc92769457c8d2f0f99e51e391701a","tarball":"https://registry.npmjs.org/aliyun-webrtc-electron-sdk/-/aliyun-webrtc-electron-sdk-1.0.0-beta1.tgz","fileCount":15,"unpackedSize":96330,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoov9CRA9TVsSAnZWagAAmewP/iNRkQyXpLgJojMlkvU8\n1hPxRjbUmYVbtcxCStXiZ5MtV3WXKe4A/of4kjqFUOUxw9GrWup7a8zAmgk9\nM6HOQvl/Rq+e2sTU+kfYXrnkE5ANER2b4WW+F0p91/uHaLYaOcfR2uYYeokk\nrvA/ToAOPWdkRjUXHtY7qmgcODC/gQpeXERAWyYloiGwAnzwfYwemyliSBOX\nmkqGJL1V1ZFvMfEETDyV1cnkPMzscm/UbQVQ86HJ4lVy8hTe2jBeu7TQ5EN+\nOx6WvLC9JaoZXG2bXYn8LCSfzoDN/epMxfRiuNWU1slZxEI0GuMNJjEThG1K\nNLYmMmVIPgj3nxtm0fc/KVSwU87bqH97lQIuYcS/aP+NadkNJXJA3oDOzRIk\nRKWedhTVdu+MtEuqLM8BEo2fnzejxT4dtxGKq/5ahXqyDwiqXoImoFepTyOb\nuMP8t/Z1zCNi0aferGhxmDK5HJxLpKKm4p6zFjr2+l7hc2jqEOaQw5Z7gMPC\ntxHrC9J1Y+TItCmYAcjmJlYSHfUimTEM2jKZ1cuuWSe1rI5/bPNv4pDQ6zIN\nFae/a/t/d6uGkWyQwSxZzC9O7riNBG/YmaIrmHKvWE0BcpO/Leb97Ul0Qx88\nIn1MBaYrEU4VS89vLPYieelvGrOWc4Jm8Fbx+tBDFG6sfprYjBQmhcI4Q+ft\ncYuF\r\n=u5bf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDSc4fSGhYM3nLIF6ZqJjPxMUXqbfI7Hm//ewTsTA0huQIhANjKOhW+2/IywvUTOz8OJEZ0wbBZjPwKdfezooOz6HaP"}]},"_npmUser":{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aliyun-webrtc-electron-sdk_1.0.0-beta1_1604488189167_0.541380211134239"},"_hasShrinkwrap":false},"1.0.0-beta2":{"name":"aliyun-webrtc-electron-sdk","version":"1.0.0-beta2","description":"","main":"./dist/alirtcengine.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","install":"node-gyp rebuild"},"gypfile":true,"dependencies":{"bindings":"~1.2.1","node-gyp":"^7.1.0","path":"^0.12.7","rebuild":"^0.1.2","yuv-buffer":"^1.0.0","yuv-canvas":"^1.2.6"},"devDependencies":{"babel-loader":"^8.1.0","babel-preset-es2015":"^6.24.1","request":"^2.88.2","webpack":"^4.44.1","webpack-cli":"^3.3.12"},"gitHead":"f47d06b20d2d7ef16609b29a51a3a51ea432924a","readme":"# Electron SDK 1.0.0\n\n\n阿里云音视频通信aliyun-webrtc-electron-sdk\n\n\n## 一、接入前准备\n\n### 接入参数配置\n\n1 、在electron项目目录中package.json文件scripts中增加postinstall命令配置指定版本号\n（electron版本也需要对应版本，一般相同主版本号可以兼容）\n\n```json\n\"scripts\": {\n\t\"postinstall\": \"node node_modules/aliyun-webrtc-electron-sdk/dist/bin/alirtcdown -v 6.0.9\"\n  ...\n}\n```\n参数说明：\n\n| 命令 | 是否必填 | 说明 | 可选参数 | 备注 |\n| --- | --- | --- | --- | --- |\n| -v | 必填 | electron版本 | 6.0.9 | 当前请选择6.0.9 |\n| -p | 可选 | 系统类型 | darwin win32 | darwin表示mac系统，win32表示windows系统 |\n| -a | 可选 | 位数 | ia32 x64 | 当前windows请选择ia32，mac仅有x64 |\n\n2、在dependencies中增加aliyun-webrtc-electron-sdk包\n\n```json\n\"dependencies\": {\n  ...\n\t\"aliyun-webrtc-electron-sdk\": \"1.0.0\"\n  ...\n}\n```\n3、执行npm install /cnpm install安装依赖<br />\n\n### 打包参数配置\n由于electron sdk用到的dll库在asar压缩后无法正常使用，需要配置不压缩\n\n```json\n\"build\": {\n\t\"extraResources\": [\n  \t\"./node_modules/aliyun-webrtc-electron-sdk/**\"\n  ]\n}\n```\n\n### 官方文档\n阿里云RTC提供移动端、PC等多端SDK，并兼容标准WebRTC浏览器接入网络，帮助您快速搭建多端实时应用。接入RTC的方法，请参见[入门概述](https://help.aliyun.com/document_detail/74889.html?spm=a2c4g.11186623.2.14.701d257bVKEW0k#concept-2326476)。\n当您成功搭建本地SDK，可以在终端调用API与RTC服务端进行交互，在加入频道或房间后，您可以进行本地推流、订阅远端用户等操作，实现频道内不同用户之间的音视频实时通话。\n阿里云RTC拥有全球实时智能调度系统，并结合实时媒体处理系统和1500+边缘节点，运用行业领先的音频3A（AGC、AEC、ANS）、视频编码、弱网对抗等算法为您提供低延时、抗丢包的音视频实时通信。\n![](https://intranetproxy.alipay.com/skylark/lark/0/2020/png/241429/1583478028152-476aa35b-4353-4055-955a-199523e4c658.png#align=left&display=inline&height=1726&margin=%5Bobject%20Object%5D&originHeight=1726&originWidth=1346&size=0&status=done&style=none&width=1346)\n\n## 二、文档\n### 接口文档\n\n本文为您介绍了Electron SDK的接口详情\n#### 目录\n##### 基础接口\n| API | 描述 | 以上版本支持 |\n| --- | --- | --- |\n| 实例化 | 实例化SDK | 1.0.0 |\n| destroy | 销毁SDK | 1.0.0 |\n\n\n\n##### 频道相关接口\n| API | 描述 | 以上版本支持 |\n| --- | --- | --- |\n| setAutoPublishSubscribe | 设置是否自动发布，是否自动订阅 | 1.0.0 |\n| joinChannel | 加入频道 | 1.0.0 |\n| leaveChannel | 离开频道 | 1.0.0 |\n| setChannelProfile | 设置频道类型 | 1.0.0 |\n\n\n\n##### 发布相关接口\n| API | 描述 | 以上版本支持 |\n| --- | --- | --- |\n| isAutoPublish | 查询当前是否为自动发布模式 | 1.0.0 |\n| configLocalCameraPublish | 设置是否允许发布相机流 | 1.0.0 |\n| configLocalScreenPublish | 设置是否允许发布屏幕流 | 1.0.0 |\n| configLocalAudioPublish | 设置是否允许发布音频流 | 1.0.0 |\n| configLocalSimulcast | 设置是否允许发布次要视频流 | 1.0.0 |\n| publish | 手动发布视频和音频流 | 1.0.0 |\n\n\n\n##### 订阅相关接口\n| API | 描述 | 以上版本支持 |\n| --- | --- | --- |\n| isAutoSubscribe  | 查询当前是否为自动订阅模式 | 1.0.0 |\n| configRemoteCameraTrack | 设置是否订阅远端相机流 | 1.0.0 |\n| configRemoteScreenTrack | 设置是否订阅远端屏幕流 | 1.0.0 |\n| configRemoteAudio | 设置是否订阅远端音频流 | 1.0.0 |\n| subscribe  | 手动订阅视频和音频流 | 1.0.0 |\n\n\n\n##### 视频相关接口\n| API | 描述 | 以上版本支持 |\n| --- | --- | --- |\n| setVideoProfile | 设置视频流的参数 | 1.0.0 |\n| muteLocalCamera | 是否关闭本地摄像头推送 | 1.0.0 |\n| getVideoDevices\t | 获取摄像头列表 | 1.0.0 |\n| getCurrentVideoDevice | 获取当前摄像头Id | 1.0.0 |\n| setVideoDevice | 设置摄像头 | 1.0.0 |\n| getScreenShareSourceInfo | 获取屏幕分享源信息 | 1.0.0 |\n| getDesktopResolution | 获取屏幕分享桌面分辨率 | 1.0.0 |\n| setScreenShareSource | 设置屏幕分享源 | 1.0.0 |\n| getScreenShareSource | 获取屏幕分享源 | 1.0.0 |\n\n\n\n##### 音频相关接口\n| API | 描述 | 以上版本支持 |\n| --- | --- | --- |\n| muteLocalMic | 是否关闭本地麦克风推送 | 1.0.0 |\n| muteRemoteAudioPlaying  | 设置是否停止播放远端音频流 | 1.0.0 |\n| getAudioRecordingDevices | 获取麦克风（录音设备）列表 | 1.0.0 |\n| getCurrentAudioRecordingDevice | 获取当前麦克风（录音设备）Id | 1.0.0 |\n| setAudioRecordingDevice | 设置麦克风（录音设备） | 1.0.0 |\n| getAudioPlaybackDevices | 获取扬声器列表 | 1.0.0 |\n| getCurrentAudioPlaybackDevice | 获取当前扬声器Id | 1.0.0 |\n| setAudioPlaybackDevice | 设置扬声器 | 1.0.0 |\n| enableLoopbackRecording | 声卡采集 | 1.0.0 |\n\n\n\n##### 预览接口\n| API | 描述 | 以上版本支持 |\n| --- | --- | --- |\n| startPreview | 开启预览 | 1.0.0 |\n| stopPreview | 停止预览 | 1.0.0 |\n\n\n\n##### 远端用户查询接口\n| API | 描述 | 以上版本支持 |\n| --- | --- | --- |\n| getUserInfo | 获取远端用户信息 | 1.0.0 |\n\n\n\n##### 其他接口\n| API | 描述 | 以上版本支持 |\n| --- | --- | --- |\n| on | 订阅事件 | 1.0.0 |\n| off | 取消订阅事件 | 1.0.0 |\n| setClientRole | 设置用户角色 | 1.0.0 |\n\n\n\n#### 接口详情\n##### 基础接口\n\n- **实例化**\n\n```javascript\nlet aliElectronRtc = new AliRtcEngine(option)\n```\n| 参数 |  | 类型 | 描述 |\n| --- | --- | --- | --- |\n| option | h5CompatibleMode | Boolean | 是否开启H5兼容，默认false |\n|  | extension | String | 定制参数，默认空字符串，可不填 |\n\n注：H5兼容模式是指是否能和Web端正常通信，默认关闭。<br />\n\n- **destroy**：销毁实例\n\n```javascript\naliElectronRtc.destroy();\n```\n\n\n##### 频道相关接口\n\n- **setAutoPublishSubscribe**：设置是否自动发布，是否自动订阅。\n\n注：默认自动发布和订阅，必须在加入频道之前设置。\n\n```javascript\naliElectronRtc.setAutoPublishSubscribe(autoPub, autoSub);\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| autoPub | Boolean | 是否自动推流 |\n| autoSub | Boolean | 是否自动订阅 |\n\n\n<br />\n\n- **joinChannel**：加入频道。\n\n注：1、加入频道成功后，如果中途需要加入其他频道，必须先调用leaveChannel离开当前频道。<br />2、如果加入频道失败，需要重试时，无需先调用leaveChannel。\n\n```javascript\naliElectronRtc.joinChannel(authInfo, displayName).then(()=>{\n    // 入会成功\n}).then((code)=>{\n    // 入会失败，查看错误码\n});\n```\n| 参数 | 类型 | 描述 |\n| --- | :--- | :--- |\n| authInfo | AliRtcAuthInfo | 鉴权信息 |\n| displayName | String | 用户名字 |\n\n\n\n- **leaveChannel**: 离开频道\n \n```javascript\naliElectronRtc.leaveChannel().then(()=>{\n\t// 离会成功\n}).catch((code) => {\n\t// 离会失败，查看错误码 \n});\n```\n\n- **setChannelProfile**: 设置频道类型\n\n注：默认通信模式，设置频道模式需要在入会前调用。<br />返回 0：成功，其他表示对应错误码\n\n```javascript\naliElectronRtc.setChannelProfile(profile)\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| profile | AliRtcChannelProfile | 频道类型 |\n\n##### 发布相关接口\n\n- **isAutoPublish**: 查询当前是否为自动发布模式，返回true为自动发布，false为手动发布\n\n```javascript\naliElectronRtc.isAutoPublish();\n```\n\n\n- **configLocalCameraPublish**：设置是否允许发布相机流。\n\n注：默认为允许发布相机流，手动发布时，需要调用publish才能生效。\n\n```javascript\naliElectronRtc.configLocalCameraPublish(enable);\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| enable | Boolean | true为允许发布相机流，false表示不允许。默认为true。 |\n\n\n\n- **configLocalScreenPublish**: 设置是否允许发布屏幕流。\n\n注：默认为不允许发布屏幕流，手动发布时，需要调用publish才能生效。\n\n```javascript\naliElectronRtc.configLocalScreenPublish(enable);\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| enable | Boolean | true为允许发布屏幕流，false表示不允许。默认为false。 |\n\n\n- **configLocalAudioPublish**: 设置是否允许发布音频流。\n\n注：默认为允许发布音频流，手动发布时，需要调用publish才能生效。\n\n```javascript\naliElectronRtc.configLocalAudioPublish(enable);\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| enable | Boolean | true表示允许发布音频流，false表示不允许。默认为true。 |\n\n\n\n- **configLocalSimulcast**: 设置是否允许发布次要视频流。\n\n注：1、默认为允许发布次要视频流，手动发布时，需要调用publish才能生效。<br />2、当仅推视频流未推共享流，且频道内只有两个用户时，因为是1v1模式，对方看不到小流。<br />3、当前仅支持相机流小流。\n\n```javascript\naliElectronRtc.configLocalSimulcast(enable);\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| enable | Boolean | true表示允许发布次要流，false表示不允许。 |\n\n\n\n- **publish**: 手动发布视频和音频流。\n\n注：1、调用publish的实际表现需要结合configLocalCameraPublish、configLocalScreenPublish、configLocalAudioPublish、configLocalSimulcast等接口才能确定。<br />2、根据您的具体业务需求配置上述4个接口的参数，以发布相应的视频和音频流。<br />3、发布和停止发布都是调用publish。    <br />4、如需停止发布，则需要上述4个配置接口的参数都置为false，再调用publish。<br />5、需要在加入频道成功之后调用该接口。\n\n```javascript\naliElectronRtc.publish().then(()=>{\n  // 推流成功\n}).catch((code)=>{\n\t// 推流失败 查看错误码\n})\n```\n\n\n##### 订阅相关接口\n\n- **isAutoSubscribe**: 查询当前是否为自动订阅模式，返回true为自动订阅，false为手动订阅\n\n```javascript\naliElectronRtc.isAutoSubscribe();\n```\n\n- **configRemoteCameraTrack**：设置是否订阅远端相机流。\n\n注：1、默认为订阅大流。<br />2、当对流进行操作时（如手动订阅，关闭订阅），必须调用subscribe才能生效。\n\n```javascript\naliElectronRtc.configRemoteCameraTrack(uid, preferMaster, enable);\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| uid | String | 远端用户userId |\n| preferMaster | Boolean | 是否优先订阅大流 |\n| enable | Boolean | 是否订阅 |\n\n\n\n- **configRemoteScreenTrack**: 设置是否订阅远端屏幕流。\n\n注：1、默认为不订阅远端屏幕流。<br />2、当对流进行操作时（如手动订阅，关闭订阅），必须调用subscribe才能生效。\n\n```javascript\naliElectronRtc.configRemoteScreenTrack(uid, enable);\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| uid | String | 远端用户userId |\n| enable | Boolean | 是否订阅 |\n\n\n\n- **configRemoteAudio**：设置是否订阅远端音频流。\n\n注：1、默认订阅远端音频流。<br />2、当对流进行操作时（如手动订阅，关闭订阅），必须调用subscribe才能生效。\n\n```javascript\naliElectron.configRemoteAudio(uid, enable);\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| uid | String | 远端用户userId |\n| enable | Boolean | 是否订阅 |\n\n\n\n- **subscribe**： 手动订阅视频和音频流。\n\n注、1、调用subscribe的实际表现需要结合configRemoteCameraTrack、configRemoteScreenTrack、configRemoteAudio等接口才能确定。<br />2、根据您的具体业务需求配置上述3个接口的参数，以订阅相应的视频流和音频流。<br />3、订阅和停止订阅都是调用subscribe。<br />4、如果需停止订阅，则需要上述3个配置接口的参数都置为false，然后调用subscribe。\n\n```javascript\naliElectronRtc.subscribe(uid).then((data)=>{\n\t\n}).catch(()=>{\n\t// 订阅失败（该用户不存在/未改变订阅项）\n})\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| uid | String | 远端用户userId |\n\nPromise，resolve返回data参数\n\n| 返回参数 | 类型 | 描述 |\n| --- | --- | --- |\n| user_id | String | 远端用户userId |\n| audio_track | AliRtcAudioTrack | 订阅音频结果 |\n| video_track | AliRtcVideoTrack | 订阅视频结果 |\n\n##### 视频相关接口\n\n- **setVideoProfile**: 设置视频流的参数。\n\n注：可以在加入频道之前或者之后设置。\n\n```javascript\naliElectronRtc.setVideoProfile(profile, track);\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| profile | AliRtcVideoProfile | 视频流参数。 |\n| track | AliRtcVideoTrack | 需要设置的视频流类型。 |\n\n\n\n- **muteLocalCamera**：是否关闭本地摄像头推送\n\n注：该接口关闭本地摄像头推送后不会改变推流状态，推的摄像头流为黑帧\n\n```javascript\naliElectronRtc.muteLocalCamera(mute)\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| mute | Boolean | 是否关闭本地摄像头推送 |\n\n- **getVideoDevices**：获取摄像头列表\n\n```javascript\naliElectronRtc.getVideoDevices();\n```\n返回摄像头列表，各项信息如下\n\n| 返回参数 | 类型 | 描述 |\n| --- | --- | --- |\n| deviceName | String | 设备名称 |\n| deviceId | String | 设备Id |\n\n\n\n- **getCurrentVideoDevice**: 获取当前摄像头Id\n\n```javascript\naliElectronRtc.getCurrentVideoDevice();\n```\n| 返回参数 | 类型 | 描述 |\n| --- | --- | --- |\n| deviceId | String | 设备Id |\n\n\n\n- **setVideoDevice**: 设置摄像头\n\n```javascript\naliElectronRtc.setVideoDevice(deviceId);\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| deviceId | String | 设备Id |\n\n\n<br />\n\n- **getScreenShareSourceInfo**: 获取屏幕分享源信息\n\n```javascript\naliElectronRtc.getScreenShareSourceInfo(source_type);\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| source_type | AliRtcScreenShareType | 屏幕分享类型 |\n\n返回该类型的屏幕信息\n\n| 返回参数 | 类型 | 描述 |\n| --- | --- | --- |\n| source_list | AliRtcScreenSourceList  | 屏幕共享源列表 |\n\n\n<br />\n\n- **getDesktopResolution**: 获取屏幕分享桌面分辨率\n\n注：当前只能获取桌面分辨率，获取窗口分辨率为0\n\n```javascript\naliElectronRtc.getDesktopResolution(source_id, source_title);\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| source_id | String | 屏幕分享数据源ID |\n| source_title | String | 屏幕分享数据源名称 |\n\n| 返回参数 | 类型 | 描述 |\n| --- | --- | --- |\n| width | Number  | 屏幕分辨率宽 |\n| height | Number  | 屏幕分辨率高 |\n\n- **setScreenShareSource**: 设置屏幕分享源\n\n```javascript\naliElectronRtc.setScreenShareSource(source);\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| source | AliRtcScreenSource | 屏幕分享源信息 |\n\n\n- **getScreenShareSource**: 获取屏幕分享源，返回当前设置的屏幕分享源。\n\n```javascript\naliElectronRtc.getScreenShareSource();\n```\n| 返回参数 | 类型 | 描述 |\n| --- | --- | --- |\n| source | AliRtcScreenSource | 屏幕分享源信息 |\n\n\n<br />\n\n##### 音频相关接口\n\n- **muteLocalMic**\n\n注：该接口关闭本地麦克风推送后不会改变推流状态，推的本地音频流为静音\n\n```javascript\naliElectronRtc.muteLocalMic(mute)\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| mute | Boolean | 是否关闭本地麦克风推送 |\n\n- **muteRemoteAudioPlaying**: 设置是否停止播放远端音频流\n\n```javascript\naliElectronRtc.muteRemoteAudioPlaying(uid, mute)\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| uid | String | 远端用户userId |\n| mute | Boolean | 是否停止播放远端音频流 |\n\n\n\n- **getAudioRecordingDevices**: 获取麦克风（录音设备）列表\n\n```javascript\naliElectronRtc.getAudioRecordingDevices();\n```\n返回麦克风（录音设备）列表，各项信息如下\n\n| 返回参数 | 类型 | 描述 |\n| --- | --- | --- |\n| deviceName | String | 设备名称 |\n| deviceId | String | 设备Id |\n\n\n<br />\n\n- **getCurrentAudioRecordingDevice**: 获取当前麦克风（录音设备）Id\n\n```javascript\naliElectronRtc.getCurrentAudioRecordingDevice();\n```\n| 返回参数 | 类型 | 描述 |\n| --- | --- | --- |\n| deviceId | String | 设备Id |\n\n\n<br />\n\n- **setAudioRecordingDevice**: 设置麦克风（录音设备）\n\n```javascript\naliElectronRtc.setAudioRecordingDevice(deviceId);\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| deviceId | String | 设备Id |\n\n\n\n- **getAudioPlaybackDevices**: 获取扬声器列表\n\n```javascript\naliElectronRtc.getAudioPlaybackDevices();\n```\n返回扬声器列表，各项信息如下\n\n| 返回参数 | 类型 | 描述 |\n| --- | --- | --- |\n| deviceName | String | 设备名称 |\n| deviceId | String | 设备Id |\n\n\n\n- **getCurrentAudioPlaybackDevice**: 获取当前扬声器Id\n\n```javascript\naliElectronRtc.getCurrentAudioPlaybackDevice();\n```\n| 返回参数 | 类型 | 描述 |\n| --- | --- | --- |\n| deviceId | String | 设备Id |\n\n\n- **setAudioPlaybackDevice**: 设置扬声器\n\n```javascript\naliElectronRtc.setAudioPlaybackDevice(deviceId);\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| deviceId | String | 设备Id |\n\n\n\n- **enableLoopbackRecording**: 声卡采集\n\n注：默认关闭，开启声卡采集后系统播放的声音将通过音频流发布出去。\n\n```javascript\naliElectronRtc.enableLoopbackRecording(enable);\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| enable | Boolean | 是否开启声卡采集 |\n\n\n\n##### 预览接口\n\n- **startPreview**：开启预览\n\n```javascript\naliElectronRtc.startPreview();\n```\n\n- **stopPreview**：关闭预览\n\n```javascript\naliElectronRtc.stopPreview();\n```\n##### 远端用户查询接口\n\n- **getUserInfo**：查询用户信息\n\n```javascript\naliElectronRtc.getUserInfo(uid);\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| uid | String | 用户userId |\n\n| 返回参数 | 类型 | 描述 |\n| --- | --- | --- |\n| userInfo | AliRtcRemoteUserInfo  | 远端用户信息 |\n\n\n\n##### 其他接口\n\n- **on**：订阅事件\n\n注：详细的事件信息请参考回调文档\n\n```javascript\naliElectronRtc.on(event, listener);\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| event | String | 订阅事件名 |\n| listener | Function | 事件处理函数 |\n\n- **off**：取消订阅事件\n\n```javascript\naliElectronRtc.off(event, listener);\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| event | String | 订阅事件名 |\n| listener | Function | 事件处理函数 |\n\n- **setClientRole**: 设置用户角色\n\n注：1、默认AliRtcClientRoleLive（互动角色）<br />2、入会前设置立即生效<br />3、入会后设置返回成功后需要等待clientRoleChanged回调返回正确结果后确认切换成功。<br />4、返回 0：成功，其他表示对应错误码\n\n```javascript\naliElectron.setClinetRole(clientRole);\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| clientRole | AliRtcClientRole | 用户角色 |\n\n\n### 回调文档\n\n#### 目录\n| 回调名称 | 描述 | 以上版本支持 |\n| --- | --- | --- |\n| userJoined | 远端用户加入频道 | 1.0.0 |\n| removeStream | 远端用户离开频道 | 1.0.0 |\n| changeStream | 远端用户推流变化 | 1.0.0 |\n| subscribeChange | 订阅结果改变回调 | 1.0.0 |\n| warning | 警告回调 | 1.0.0 |\n| error | 错误回调 | 1.0.0 |\n| networkQuality | 网络质量回调 | 1.0.0 |\n| clientRoleChanged | 用户角色已切换回调 | 1.0.0 |\n\n##### 回调详情\n\n- userJoined：远端用户加入频道\n\n注：1、当加入频道时，频道内已经有其他用户了，本地会收到这些用户的userJoined回调<br />2、当有远端新用户加入频道时，本地会收到该回调\n\n```javascript\naliElectronRtc.on(\"userJoined\",(uid)=> {\n\tconsole.log(`远端用户${uid}加入房间`)\n})\n```\n| 返回参数 | 类型 | 描述 |\n| --- | --- | --- |\n| uid | String | 远端用户userId |\n\n\n\n- removeStream：远端用户离开频道\n\n```javascript\naliElectronRtc.on(\"removeStream\",(uid)=> {\n\tconsole.log(`远端用户${uid}离开房间`)\n})\n```\n| 返回参数 | 类型 | 描述 |\n| --- | --- | --- |\n| uid | String | 远端用户userId |\n\n\n\n- changeStream：远端用户推流变化\n\n```javascript\naliElectronRtc.on(\"changeStream\",(data)=> {\n\tconsole.log(`远端用户${data.user_id}流变化`)\n})\n```\n返回data数据的内容如下\n\n| 返回参数 | 类型 | 描述 |\n| --- | --- | --- |\n| user_id | String | 远端用户userId |\n| audio_track | AliRtcAudioTrack | 远端用户发生变化后的音频流 |\n| video_track | AliRtcVideoTrack | 远端用户发生变化后的视频流 |\n\n- subscribeChange：订阅结果改变回调\n\n```javascript\naliElectronRtc.on(\"removeStream\",(data)=> {\n\tconsole.log(`远端用户${data.user_id}订阅状态改变`)\n})\n```\n返回data数据的内容如下\n\n| 返回参数 | 类型 | 描述 |\n| --- | --- | --- |\n| user_id | String | 远端用户userId |\n| audio_track | AliRtcAudioTrack | 订阅成功的音频流 |\n| video_track | AliRtcVideoTrack | 订阅成功的视频流 |\n\n\n\n- warning：警告回调\n\n注：目前警告回调可以忽略，不会影响正常使用 。\n\n```javascript\naliElectronRtc.on(\"warning\",(code)=> {\n\tconsole.log(`warning: ${code}`)\n})\n```\n| 返回参数 | 类型 | 描述 |\n| --- | --- | --- |\n| code | Number | 警告码 |\n\n- error：错误回调\n\n注：具体错误码请参考官网客户端错误码文档。\n\n```javascript\naliElectronRtc.on(\"error\",(code)=> {\n\tconsole.log(`error: ${code}`)\n})\n```\n| 返回参数 | 类型 | 描述 |\n| --- | --- | --- |\n| code | Number | 错误码 |\n\n- networkQuality：网络质量变化时回调\n\n```javascript\naliElectronRtc.on(\"networkQuality\",(data)=> {\n\t// 网络质量\n})\n```\n| 返回参数 | 类型 | 描述 |\n| --- | --- | --- |\n| uid | String | 远端用户userId |\n| txquality | AliRtcNetworkQuality | 上行网络质量 |\n| rxquality | AliRtcNetworkQuality | 下行网络质量 |\n\n\n\n- clientRoleChanged： 用户角色切换回调\n\n```javascript\naliElectronRtc.on(\"clientRoleChanged\",(data)=> {\n\t//\tdata.oldRole 切换前的角色\n  //\tdata.newRole 切换后的角色\n})\n```\n| 返回参数 | 类型 | 描述 |\n| --- | --- | --- |\n| oldRole | AliRtcClientRole | 切换前的角色 |\n| newRole | AliRtcClientRole | 切换后的角色 |\n\n\n### 数据类型\n\n#### 目录\n| 数据类型 | 描述 | 以上版本支持 |\n| --- | --- | --- |\n| AliRtcVideoTrack | 视频Track类型 | 1.0.0 |\n| AliRtcAudioTrack  | 音频Track类型 | 1.0.0 |\n| AliRtcNetworkQuality  | 网络质量 | 1.0.0 |\n| AliRtcAuthInfo | 鉴权信息 | 1.0.0 |\n| AliRtcRemoteUserInfo  | 远端用户信息 | 1.0.0 |\n| AliRtcClientRole  | 角色类型 | 1.0.0 |\n| AliRtcChannelProfile  | 频道类型 | 1.0.0 |\n| AliRtcScreenShareType | 桌面共享类型 | 1.0.0 |\n| AliRtcScreenSourceList | 屏幕共享源列表 | 1.0.0 |\n| AliRtcScreenSource | 屏幕共享源信息 | 1.0.0 |\n| AliRtcScreenShareRegion | 屏幕共享区域 | 1.0.0 |\n| AliRtcVideoProfile | 视频流参数 | 1.0.0 |\n| AliRtcBeautyConfig | 美颜设置 | 1.0.0 |\n\n#### 详情\n\n- AliRtcVideoTrack: 视频Track类型\n\n| 枚举名 | 描述 |\n| --- | --- |\n| AliRtcVideoTrackNo | 无视频流 |\n| AliRtcVideoTrackCamera | 摄像头流 |\n| AliRtcVideoTrackScreen | 屏幕共享流 |\n| AliRtcVideoTrackBoth | 摄像头和屏幕共享 |\n\n- AliRtcAudioTrack: 音频Track类型\n\n| 枚举名 | 描述 |\n| --- | --- |\n| AliRtcAudioTrackNo | 无音频流 |\n| AliRtcAudioTrackMic | 麦克风流 |\n\n- AliRtcNetworkQuality: 网络质量\n\n| 枚举名 | 描述 |\n| --- | --- |\n| AliRtcNetworkQualityExcellent | 网络极好，流畅度清晰度质量好 |\n| AliRtcNetworkQualityGood | 网络质量好，流畅度清晰度和极好差不多 |\n| AliRtcNetworkQualityPoor | 网络质量较差，音视频流畅度清晰度有瑕疵，不影响沟通 |\n| AliRtcNetworkQualityBad | 网络质量差，视频卡顿严重，音频能正常沟通 |\n| AliRtcNetworkQualityVeryBad | 网络质量极差，基本无法沟通 |\n| AliRtcNetworkQualityDisconnect | 网络中断 |\n| AliRtcNetworkQualityUnknow | 未知 |\n\n- AliRtcAuthInfo: 鉴权信息\n\n| 字段名 | 类型 | 描述 |\n| --- | --- | --- |\n| userid | String | 用户Id |\n| channel | String | 频道号 |\n| appid | String | 应用Id |\n| nonce | String | 随机码。 |\n| timestamp | String | 时间戳。 |\n| token | String | 令牌。 |\n| gslb | Array | gslb（Global Server Load Balancing）服务地址。 |\n\n- AliRtcRemoteUserInfo: 远端用户信息\n\n| 字段名 | 类型 | 描述 |\n| --- | --- | --- |\n| userID | String | 远端用户userId |\n| displayName | String | 远端用户displayName |\n| muteAudioPlaying | Boolean | 是否静音远端用户 |\n| hasAudio | Boolean | 远端用户是否推音频流 |\n| hasCameraMaster | Boolean | 远端用户是否推摄像头大流 |\n| hasCameraSlave | Boolean | 远端用户是否推摄像头小流 |\n| hasScreenSharing | Boolean | 远端用户是否推屏幕流 |\n| subscribedAudio | Boolean | 是否订阅远端用户的音频流 |\n| subscribedCameraMaster | Boolean | 是否订阅远端用户的摄像头大流 |\n| subscribedCameraSlave | Boolean | 是否订阅远端用户的摄像头小流 |\n| subscribedScreenSharing | Boolean | 是否订阅远端用户的屏幕流 |\n\n\n\n- AliRtcClientRole: 角色类型\n\n| 枚举名 | 描述 |\n| :--- | :--- |\n| AliRtcClientRoleInteractive | 互动角色 |\n| AliRtcClientRoleLive | 观众角色 |\n\n\n\n- AliRtcChannelProfile: 频道类型\n\n| 枚举名 | 描述 |\n| :--- | :--- |\n| AliRtcCommunication | 通信模式 |\n| AliRtcInteractiveLive | 互动模式 |\n\n\n\n- AliRtcScreenShareType: 桌面共享类型\n\n| 枚举名 | 描述 |\n| --- | --- |\n| AliRtcScreenShareDesktop | 桌面共享 |\n| AliRtcScreenShareWindow | 窗口共享 |\n\n- AliRtcScreenSourceList：屏幕共享源列表\n\n| 字段名 | 类型 | 描述 |\n| --- | --- | --- |\n| sourceId | String | 共享源ID |\n| sourceTitle | String | 共享源名 |\n\n- AliRtcScreenSource：屏幕共享源信息\n\n| 字段名 | 类型 | 描述 |\n| --- | --- | --- |\n| eType | AliRtcScreenShareType | 桌面共享类型 |\n| sourceId | String | 共享源ID |\n| sourceTitle | String | 共享源名 |\n| isShareByRegion | Boolean | 是否启用共享区域 |\n| shareRegion | AliRtcScreenShareRegion | 共享区域 |\n\n- AliRtcScreenShareRegion：屏幕共享区域\n\n| 字段名 | 类型 | 描述 |\n| --- | --- | --- |\n| originX | Number | x轴 |\n| originY | Number | y轴 |\n| width | Number | 宽度 |\n| height | Number | 高度 |\n\n- AliRtcVideoProfile：视频流参数\n\n注：1、发布视频流规格，默认为AliRTCSDK_Video_Profile_Default。<br />2、您可以在加入频道之前或之后设置，但是您必须在本地流发布之前通过setVideoProfile方法设置。\n\n| 枚举名 | 描述 |\n| :--- | :--- |\n| AliRTCSDK_Video_Profile_Default | 默认，分辨率480*640，帧率15 |\n| AliRTCSDK_Video_Profile_180_240P_15 | 分辨率180*240，帧率15 |\n| AliRTCSDK_Video_Profile_180_320P_15 | 分辨率180*320，帧率15 |\n| AliRTCSDK_Video_Profile_180_320P_30 | 分辨率180*320，帧率30 |\n| AliRTCSDK_Video_Profile_240_320P_15 | 分辨率240*320，帧率15 |\n| AliRTCSDK_Video_Profile_360_480P_15 | 分辨率360*480，帧率15 |\n| AliRTCSDK_Video_Profile_360_480P_30 | 分辨率360*480，帧率30 |\n| AliRTCSDK_Video_Profile_360_640P_15 | 分辨率360*640，帧率15 |\n| AliRTCSDK_Video_Profile_360_640P_30 | 分辨率360*640，帧率30 |\n| AliRTCSDK_Video_Profile_480_640P_15 | 分辨率480*640，帧率15 |\n| AliRTCSDK_Video_Profile_480_640P_30 | 分辨率480*640，帧率30 |\n| AliRTCSDK_Video_Profile_720_960P_15 | 分辨率720*960，帧率15 |\n| AliRTCSDK_Video_Profile_720_960P_30 | 分辨率720*960，帧率30 |\n| AliRTCSDK_Video_Profile_720_1280P_15 | 分辨率720*1280，帧率15 |\n| AliRTCSDK_Video_Profile_720_1280P_30 | 分辨率720*1280，帧率30 |\n| AliRTCSDK_Video_Profile_360_640P_15_800Kb | 360*640分辨率，帧率15，800Kb码率 |\n| AliRTCSDK_Video_Profile_480_840P_15_500Kb | 480*840分辨率，帧率15，500Kb码率 |\n| AliRTCSDK_Video_Profile_480_840P_15_800Kb | 480*840分辨率，帧率15，800Kb码率 |\n| AliRTCSDK_Video_Profile_540_960P_15_800Kb | 540*960分辨率，帧率15，800Kb码率 |\n| AliRTCSDK_Video_Profile_540_960P_15_1200Kb | 540*960分辨率，帧率15，1200Kb码率 |\n| AliRTCSDK_Video_Profile_Max | 占位值 |\n\n- AliRtcBeautyConfig：美颜设置\n\n| 字段名 | 类型 | 描述 |\n| --- | --- | --- |\n| whiteningLevel | Number | 美白[0,100]数值越大美白效果越好 |\n| smoothnessLevel | Number | 磨皮[0,100]数值越大磨皮效果越好 |\n\n\n\n","readmeFilename":"README.md","_id":"aliyun-webrtc-electron-sdk@1.0.0-beta2","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-/1RLshaKnVf3bGK4v6nzlRZrJJ7UZ198S5bSo9ajyP15OYRpcZ5a/SR53xQG4FY60aP0V8IMg8AXuqEq6Z2yOA==","shasum":"f7c799d6829e2eedfafd483e03653c498fa18643","tarball":"https://registry.npmjs.org/aliyun-webrtc-electron-sdk/-/aliyun-webrtc-electron-sdk-1.0.0-beta2.tgz","fileCount":15,"unpackedSize":124978,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfo+AiCRA9TVsSAnZWagAAKzwQAIMP2+O2eZdVzZ8pOYkw\nwhDsR7CrjHjLUIhYzFq2+xq6trOm4wFh7kOCl8H7IY6aiXZd/HKXsK/BM8iW\nnhtlD3E8DEpMx3mVmwhgQVbDbyMRDu5o6eUnESMtIDVnWkW4/eb1W2iKSqIB\n6Dob0MGwX9Qc+aqn5SWIVnP3Mz52xkAmxAjkX6l1FHa1sVaKiJe4IETuEzls\nNCoCEp+JryN+JzePgkon7ATb/WSC1LnywqKWvLJlu3BTH+F+Jg9M/pV3fxGT\nqz6Gz5YDhHtCf6f5TFY1hxVpo5tROaCe0h5oCUf/qBpMN2ie3OsFWfCBCqPO\n9Y+PzvEyARuToIb7ZBVVOx4BteP8XvJ+9oIFVPNei+3JmHjD1xL3ZX305bwW\nvU+UgU/CECJgTEFHMFSk+va/1GVSnatA510oAQKcPUVOuKUfsyq+k1FVOYC7\nbNoxrwY0a64MtsBnC+hQN4c9Zl6aIsFs8Shlqpdn/YF4k0F5QEmtfqyDHGNT\nzgVZ2EqQ3uS1V2I5mb1x/Y4H6meAX3ruOcCj+ppIc0zD+Eglk6d6VzBZf5/d\njxF4Mu6tOO25FaDkYtM1MC1ONLrMec8F8O4hRs1m9PaQWP76beu48dtWxdFk\nq/96jjLMmFPq3GzpRPB9II4knkuk+2jRKdKP8+VLDgxxtE/agTm9K9FuS5Lk\nHi0+\r\n=K62+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIARHXuCp7+tZZD2Sgefdqj/Gop1sTi3vio7dHEqTqx/CAiEA5P7eWVB1jvctOxVJP2wb96+zybA7Y6/tQMacj66PGT8="}]},"_npmUser":{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aliyun-webrtc-electron-sdk_1.0.0-beta2_1604575266160_0.2624750719179465"},"_hasShrinkwrap":false},"1.0.0":{"name":"aliyun-webrtc-electron-sdk","version":"1.0.0","description":"","main":"./dist/alirtcengine.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","install":"node-gyp rebuild"},"gypfile":true,"dependencies":{"bindings":"~1.2.1","node-gyp":"^7.1.0","path":"^0.12.7","rebuild":"^0.1.2","yuv-buffer":"^1.0.0","yuv-canvas":"^1.2.6"},"devDependencies":{"babel-loader":"^8.1.0","babel-preset-es2015":"^6.24.1","request":"^2.88.2","webpack":"^4.44.1","webpack-cli":"^3.3.12"},"gitHead":"ae4a04d8f954401067a5f811d5bde5bc3cc89d7e","_id":"aliyun-webrtc-electron-sdk@1.0.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-A3CJJnV2oVG92BvNGmwziNRlXBJV6Xyd/Zu1YCPDzt8OKF9LMiAgNwdqtxqLxRhQtrT/FrKiATu7slYduTDlPw==","shasum":"12408cac7e6b7fe4a361528c814a03ac63ffb927","tarball":"https://registry.npmjs.org/aliyun-webrtc-electron-sdk/-/aliyun-webrtc-electron-sdk-1.0.0.tgz","fileCount":15,"unpackedSize":95911,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfq6eXCRA9TVsSAnZWagAAu7YP/2VFh39y7XndHBgX53J+\nECZFoUE21ZytFLU0JdUgUBkvLtBnktyBj019bTFfA0TUaFxPG3Iouc9avKYv\nyL0mEk67uwM765iuqXfX57s3YAtE46r7hQDPljuOzgQ2C4odb+s5sz17+A+H\n310FIj1KGJhyaPApw62T0Bs6bozbI/caaSE9VXfDY2Zn7sa1jVBhqTExPXjC\nvUikxdE+dXW2T36b7Q9bQUxJa1qJZHxpJuX33kmFR0qh9LS9/iSXPWtxJMBA\ni85MmR+RjMtWwK9SKqU0WGpypaxieBNJP5tKgxco6DTrLTNnL64l1ypRVi2O\nQiDXYNTuzw7ZM3zbgtVn2bCRm3vmNL3rxZ8s0P7trrhPr38x/5/h+QzNct5G\n/W5GWeWtnWrstvrh2/CBgzD/xDJ3ZQNo4wsUKEFNbbYGmw+ywRJD2h83mXX8\nsRqgwXDGRmax+NdaoBYdC0STg79PyYvDb7OXDFR7DLnnBd+OmB29AsfIliMk\nD6eKbfCo05heyR7Nd9Ozf3iDGv+9qQggCKyHByR1VRHnL1RPpJ0MjMC1Qm6n\nm+C5ZMGYsWav2TK/Z70gnwXTmiqYXtR7bM2Nl6h78zFiZGbpJRuZ3N7K8vb1\noY8/0DCbqC2gSle9zq0FL9NMiXvrutcoHuQyqJ6TJi2o96F3o2ulJQETZMIu\n/Z04\r\n=8ZmR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDgSelfiQ/8paBAC+mPdQAQWusUDBdSbiitVFMMGJKUmAIgD5AkBweV/QwfqkLBxpyx/GJ3y/LWZSSktwnd5pGbAAo="}]},"_npmUser":{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aliyun-webrtc-electron-sdk_1.0.0_1605085078470_0.30418117274780854"},"_hasShrinkwrap":false},"2.0.0-beta1":{"name":"aliyun-webrtc-electron-sdk","version":"2.0.0-beta1","description":"","main":"./dist/alirtcengine.js","types":"types/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","install":"node-gyp rebuild"},"gypfile":true,"dependencies":{"bindings":"~1.2.1","canvas-video-render":"^1.0.4","commander":"^7.2.0","extract-zip":"^1.7.0","node-gyp":"^7.1.0","nugget":"^2.0.1","path":"^0.12.7","rebuild":"^0.1.2","yuv-buffer":"^1.0.0","yuv-canvas":"^1.2.6"},"devDependencies":{"babel-loader":"^8.1.0","babel-preset-es2015":"^6.24.1","request":"^2.88.2","webpack":"^4.44.1","webpack-cli":"^3.3.12"},"gitHead":"3468b71accd1ecebe1e1376a6360a6d6254c2d54","_id":"aliyun-webrtc-electron-sdk@2.0.0-beta1","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-NMwc3YCOElm1hug9RMoehJxymHyVeSOTsXryDlhBO+rHTckXq3FupYYU1TsktBnHXDNpeSIC09dw8eHOf+PtcA==","shasum":"05b646c74e9197a888ac657c909a1c8b40af453a","tarball":"https://registry.npmjs.org/aliyun-webrtc-electron-sdk/-/aliyun-webrtc-electron-sdk-2.0.0-beta1.tgz","fileCount":12,"unpackedSize":110436,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpdFxCRA9TVsSAnZWagAAszQP/31mlMhDcsT3lnVIo6Hf\nS2PbeVp4n5xiLflBR8DbwJilHixoAUMH8IL7ydwoiBVS3qWP0uKm6+7T4V3p\ndKyg1okUXIXIJtj+gcA7nOvQySK9sO/CNMRVVkrNuv+nAdlSZfRqfiKk/8aq\nXK2ng9pyH8RwxAm4Ljvj3ZKnZ10xyNmpOX0svZHqY5BE1Ufn1Y+bA3wbX/9F\nnJllDsIFZKgA2AOocDlCdAroI6pAEBjWABX+vdVhwZ+cSSP6C7I+7Omrt6Ic\nPlSI0PGFS9spo7cvxzOM1v3vEzaqrl5Mn/VJorGhncvI3b2Mz3zjyMELRSNq\nvQLLd8wXV8HVXu+s1Iw7jsLowX+7SyoQcDJGZw6/JN+G7vZplddm/O2lGzRt\nQLJmpDK/FKtujBUzDVvSM7zhm9OGdRfN54Th0FRoV8pxRbXr7jTddNYMOT0N\nzVuaagGl/qa8cRrujEtn3rr9TFq6ouM5nI7+vygeXIC0hR5X1L2N58xHGjdY\nuujGV/vMwvJm2Qi0fU9UZdczwca551aYMsXartLfgYbs/JzWzYFyZ9v0dF/9\nwqKrIUP80FgxJCMAQgSUgTvvBOItbV3DSK5KZoZVpTVipoWV914Ec/O3bEPK\nHJlOXwy5XxB5O+PeeyyxK4vlUKmC5l4O9tTExRDNZe5XKKdXb8R8QB65SZ6i\nWg/z\r\n=ZloT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZeEJC8PD/vGQHcgVXmCiUJVqkET56qGXkPa5k+uJwvAIhAKmS3MQ1e9ipHg+RWnme7PW6IaW+34onwWe1RmsPPg1f"}]},"_npmUser":{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aliyun-webrtc-electron-sdk_2.0.0-beta1_1621479793131_0.4540758897807695"},"_hasShrinkwrap":false},"2.0.0-beta2":{"name":"aliyun-webrtc-electron-sdk","version":"2.0.0-beta2","description":"","main":"./dist/alirtcengine.js","types":"types/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","install":"node-gyp rebuild"},"gypfile":true,"dependencies":{"bindings":"~1.2.1","canvas-video-render":"^1.0.4","commander":"^7.2.0","extract-zip":"^1.7.0","node-gyp":"^7.1.0","nugget":"^2.0.1","path":"^0.12.7","rebuild":"^0.1.2","yuv-buffer":"^1.0.0","yuv-canvas":"^1.2.6"},"devDependencies":{"babel-loader":"^8.1.0","babel-preset-es2015":"^6.24.1","request":"^2.88.2","webpack":"^4.44.1","webpack-cli":"^3.3.12"},"gitHead":"56f24cc9322d7c38d239035d839db4eade0515c0","_id":"aliyun-webrtc-electron-sdk@2.0.0-beta2","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-eLJEc32j+9Who9Ed3C+PrhtJH3kGHtXLO60nxE1AWNLG5CyhWDkMJPRFPa1gJQudgYaYgniYTr3wlcQKC3Z7EA==","shasum":"713ced7a6a79fec33064def3d2b02e80802f0077","tarball":"https://registry.npmjs.org/aliyun-webrtc-electron-sdk/-/aliyun-webrtc-electron-sdk-2.0.0-beta2.tgz","fileCount":12,"unpackedSize":111028,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpmC8CRA9TVsSAnZWagAAvyIP/1zSjssth+YOk2EH88QE\nn7q4RpP7/1LUf4WJAo71cW9PiDvqJNp5G9QnIjdg0lNB/aYIMgsm34Eubzla\nJi7LfGtdUJ3pLMshbelW+jugEZt1guXnqs+e7YFlwdyFNaMMEvtKASjqxh+F\nUii/yaNYhTNkqxO8dnpwxU3hUly/bSQkp2zZPXmXGFv9M/nlDzbOGyvqCTiA\ngUCxx5DYBrcuemazB39icawY7p9BdbAY8eUyocwhNbHf2p29biIFaYwykJck\nOvcgTibuAm8wFf/BBP2gvNBgQvmJHcTS/syeGLV6W6tiIOdTSqA5fdQeU2z/\nluhtrVlIpFpOECnfKu45JzEFDhdWHAJLvy6lHo+CGvQtZF2EwTc4iIvUl/1f\nqRciUCcHAQ9F2lMow1v+xxyHrUqOPZcWx3bFO/e+Yjk2d99EP38OP266BZRy\nvyLn2ShTp6xJ8TTTAKJa//MYFstF2gjgQrhAHJbYyB125BEuNPdTzxhXKtjk\nU1Ydfo3AD8pjCX1S1efJbN5MpfBXwy9xgfYaQy8W3Fn/ACTDr5eEbROVum9a\nlKNTkJxsVFojouqSKG8p9XyMH9CrPNGNrOxyU2jBaUwJfTAwURHkFGYZmb4o\nDffIgJOTyTmVESboqprKO3yJfUO77/oyxvjaRWFtRMegeQ5fLjtCr1YxM8Gb\nLQ7r\r\n=LLvQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDw6KFRPJ4eXsAebp7MJwH6uRRFyF5PuYb9KrFnbTUkyAIhANvoN1erL0TEiRaHX++lLM/kQkH8/9po7B0YjIJYICem"}]},"_npmUser":{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aliyun-webrtc-electron-sdk_2.0.0-beta2_1621516476315_0.4168437372267595"},"_hasShrinkwrap":false},"2.0.0":{"name":"aliyun-webrtc-electron-sdk","version":"2.0.0","description":"","main":"./dist/alirtcengine.js","types":"types/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","install":"node-gyp rebuild"},"gypfile":true,"dependencies":{"bindings":"~1.2.1","canvas-video-render":"^1.0.4","commander":"^7.2.0","extract-zip":"^1.7.0","node-gyp":"^7.1.0","nugget":"^2.0.1","path":"^0.12.7","rebuild":"^0.1.2","yuv-buffer":"^1.0.0","yuv-canvas":"^1.2.6"},"devDependencies":{"babel-loader":"^8.1.0","babel-preset-es2015":"^6.24.1","request":"^2.88.2","webpack":"^4.44.1","webpack-cli":"^3.3.12"},"gitHead":"3011cc086cc05a02a503bce9932b3033b71b0287","_id":"aliyun-webrtc-electron-sdk@2.0.0","_npmVersion":"5.0.0","_nodeVersion":"8.0.0","_npmUser":{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"},"dist":{"integrity":"sha512-4j79Mudds+3tvezRqxh9BWVuuar6X/rrdOayj5LWsrpPUdvSNvAXKHkKTYkLc1PdrspwXRr+hquXXWcGE3xYrw==","shasum":"c18e56e386d531cddc1606a7a2fa82192dbad60e","tarball":"https://registry.npmjs.org/aliyun-webrtc-electron-sdk/-/aliyun-webrtc-electron-sdk-2.0.0.tgz","fileCount":10,"unpackedSize":99635,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrfARCRA9TVsSAnZWagAArkkP/2pEubWP6K/B3BjalWKw\nS9Zxky6B7dFoIBBc20NQcho0RVJY3T0gQF27KfmI9qsyEUBy8RwqcRQVfnBM\ne3cx3V2N0B2G8lAzDz7gux91MOgpUk1MLcQku8ze2rbAyhKIqD4bevW06GbZ\ndedl8qe4FEGLRkSE2im9GTXjzs9dkF7IgUkpJ7OXs/s5hu74y0CXIJe7po+r\n4iHkcrHOWMj1xnwvm0ezn8sF/uHj02WxtatMUzzqQEQGLTP0xuMVCeoSP74b\nJfxpIGqHGC7VEnoAKQUnqOeZseA9Cj4XlOTlECYHhkS9CrkHqFNIF2YUtNpu\nCujW/y6byv0+h4HjkVKFirFcwyAAzeGGnyXJlh/MCerx3sPo6D8V2cAUwqYp\n6FWe4OgfrOWjT9MRLBEd63YdNwIKPQz7pVT1ZVcJzVxdag7RcfZZpo5CDfn3\n4TaCOuo0sA8n95hKIbVUtJi8/l+fEYUbPk6VJ0wtVArECBAA+sI6AUdGO5A/\ndzNKAaopF2Z7zPGT32Ativ+1GS0Y8oAM4Q+9wP+uR+PzDLWTZiu950C0zRqZ\nTNMbuQGdkKXX8Gu0/tvAcu5byqKRWd8KsEQ2atSmSRRZxTrfuSChwwHfgYLd\n0uQ505HJBTZRmQv0ZFofoo/6Mj7m5AmDryBrYdDknppbIEy5Od6LwSNiiEPp\nopcD\r\n=3JCI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB0bwzUg/5X3uOLgD6y700LMriX0CkhOO2T7C9o3BkNbAiEA0Sf+otHpgrp86cy7PjzTohu/hkt++dqR7youwKjVGUM="}]},"directories":{},"maintainers":[{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aliyun-webrtc-electron-sdk_2.0.0_1622011920856_0.40447230304826753"},"_hasShrinkwrap":false},"2.1.0":{"name":"aliyun-webrtc-electron-sdk","version":"2.1.0","description":"","main":"./dist/alirtcengine.js","types":"types/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","install":"node-gyp rebuild"},"gypfile":true,"dependencies":{"bindings":"~1.2.1","canvas-video-render":"^1.0.4","commander":"^7.2.0","extract-zip":"^1.7.0","node-gyp":"^7.1.0","nugget":"^2.0.1","path":"^0.12.7","rebuild":"^0.1.2","yuv-buffer":"^1.0.0","yuv-canvas":"^1.2.6"},"devDependencies":{"babel-loader":"^8.1.0","babel-preset-es2015":"^6.24.1","request":"^2.88.2","webpack":"^4.44.1","webpack-cli":"^3.3.12"},"gitHead":"74ac93be4f3580a7eb0a721fef865fb6ba32b8c5","_id":"aliyun-webrtc-electron-sdk@2.1.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-WmMM81UtVrIlyzdQT3zj9EYyez+M/I39oCRTj2KsJ7N2FelSQR/hfH9I9AvmO4SOVZXhEcAsvW9bCZ/flREJbg==","shasum":"9e01b706bda4f6d76d7ea64a041ce4909b2025bd","tarball":"https://registry.npmjs.org/aliyun-webrtc-electron-sdk/-/aliyun-webrtc-electron-sdk-2.1.0.tgz","fileCount":12,"unpackedSize":117854,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5VWNCRA9TVsSAnZWagAAWEcP/0+DpbUq8v5oUTzHBXSq\nHJwZ3ZGlo5z1qh25wwcPYZVr9AhLnBO5DOY6SLJBwV1/tnPMXPfDDpK5/LMP\nJ4sLBba+sKV704ozBAGOcOz3w2H4dRL8GvbSP/yDXav5vx8bEk6vzb80bSrf\nzLrl7HmJFHkJ6vr8rN+PDTCx/2qSvuwhJKeF+3jORJCIphhtHcDyia9qQAFF\ncjyA66Cl7juTzDFAJXB/HnMrwG9rZnhYPiSN4hTRQ1mtDDmWHA7dgGARNPmx\n8ldeRWYQNY+rdFdgX4HZYPudnRckhpmtS2nPkE5wt4rTLJYQPlS5wGYqifR6\ndaJi/QSKMsgBvmXfn8UD2u8r2d6wnTQBrQHgdNLK7m0q5iwIDtZump0VP7Fq\nQ7Dcdtun+pUrBnRZmQdB5WRbK8sRbT8yAH8xN4QcEeqlvnAqaBI2wJKhLXGy\nZJmPMZqPFflA6dT3YAi3xaNbDte8DuqWQGBJCwn0A4Dp12L4TZjHNHm7vYuE\nWO30HiCxFBtl2rqqK147MluOgKCR+7sbPlpoLAEKX1bz+uw1AVzDm1wpu8k+\nuhQ5oWTraXO3OsvXC9ITTtkCjIudV1rqASu/n4wEEwMsCDZb/Sefi+NZuFXW\nXxXIEfVvtME3G/ePQHu8CDeEbLeAZ4LylJzdEEO/nhEswc1KbS0BBfVTNRC7\nksKE\r\n=poBz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD4pz0cHywbgN9bejp11lit0uU8RSlvsijMK22PKiLH7QIgT+DVTb7WKOaPZy4SDWi4mLV/kF2DoHTG5cWKfZ+I9xo="}]},"_npmUser":{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aliyun-webrtc-electron-sdk_2.1.0_1625642380996_0.7472551507668062"},"_hasShrinkwrap":false},"2.5.2":{"name":"aliyun-webrtc-electron-sdk","version":"2.5.2","description":"","main":"./dist/alirtcengine.js","types":"types/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","install":"node-gyp rebuild"},"gypfile":true,"dependencies":{"bindings":"~1.2.1","canvas-video-render":"^1.0.4","commander":"^7.2.0","extract-zip":"^1.7.0","node-gyp":"^7.1.0","nugget":"^2.0.1","path":"^0.12.7","rebuild":"^0.1.2","yuv-buffer":"^1.0.0","yuv-canvas":"^1.2.6"},"devDependencies":{"babel-loader":"^8.1.0","babel-preset-es2015":"^6.24.1","request":"^2.88.2","webpack":"^4.44.1","webpack-cli":"^3.3.12"},"gitHead":"7d14fd8d8868a7db0f6345cc61c8664f56e6826a","_id":"aliyun-webrtc-electron-sdk@2.5.2","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-bHZm8YyqBJAaszBp22w2t1mbBPUk6yYmIj3byaOmw5NFR5CNNUGyKlETu2wC/68b0yjoK9zo7ddVfydoK5DJ1w==","shasum":"32778248461a55caa37a25828178a06098740ce1","tarball":"https://registry.npmjs.org/aliyun-webrtc-electron-sdk/-/aliyun-webrtc-electron-sdk-2.5.2.tgz","fileCount":13,"unpackedSize":168449,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJvRlCRA9TVsSAnZWagAAQ5IP/2OHiFgtei0l1uBZB/St\nMvBYKnVbcnH2wxJUP8c4+YPEuXS1xgYI6OTN3ro0nevTQRfANI4TzmIwUob8\nWiR6CeFbGB0QlxFDT+p70/nq0dsVoPaXDbaiYe40exvNxrLwuAmbV5BCr9hI\nUP1fxerddHGI/evkFbeXvq96vsO/PoR7WBNfHhWgwmgB0Vgqzue4cA05eNIH\nsK7McWrSn1JINKx997cTIa7R2KW9fmMbEiOWVIiCLewkWoqH7JYGv7a7pRzf\nRQRDr+zWhrhZ3Jyw3Gsk8PS59bVErNm5ecA891zqOo4cRjjlgydniLp5pQU0\n1+8YZh1nM2dhOTFtSvyBrt4KgRAAZ7VkHoUSSz9Ygk83DqIkyhQY1yfrug0c\nCIOE99YbMFsn3R65NkmRPr02oojiqrBkdEsCAGDf5hnKxYq/gmttLzuNPAiQ\nwyj2lulRnJx3N1O42yFKSjMidh0R6FCKvDa/Ruh097d9BEoTXWXkFdw7OWcc\n9XZaNyGeHsGLk9qAE/WjFdHrMUsREulKYFsXxzqAozdOOpd7ql5dUB2odOlp\nNzlMoJ15dJ5UvzrE3VTSSVdICjlDhG3NJVmOQIrSCQ+Jmh2L8XCyfsCuBFQP\naY7C6r2kUK2lGT1knBMVY+ai/QJLjhU54DL6yxUYJXhbQATfwz04xvLSQZHP\njMPn\r\n=JZeA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE793ui94m9QTh2K4Ajo4L9JC+TTx0gRlsOBtqEzrPp9AiEAvXeEJG2oKeNyIaFizdSjbiTa7J0SZW8vm6NDgh7N3nE="}]},"_npmUser":{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aliyun-webrtc-electron-sdk_2.5.2_1629942885405_0.48271883012477823"},"_hasShrinkwrap":false},"3.0.0-beta1":{"name":"aliyun-webrtc-electron-sdk","version":"3.0.0-beta1","description":"","main":"./dist/alirtcengine.js","types":"types/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","install":"node-gyp rebuild"},"gypfile":true,"dependencies":{"bindings":"~1.2.1","canvas-video-render":"^1.0.6","commander":"^7.2.0","extract-zip":"^1.7.0","node-gyp":"^7.1.0","nugget":"^2.0.1","path":"^0.12.7","rebuild":"^0.1.2","yuv-buffer":"^1.0.0","yuv-canvas":"^1.2.6"},"devDependencies":{"babel-loader":"^8.1.0","babel-preset-es2015":"^6.24.1","request":"^2.88.2","webpack":"^4.44.1","webpack-cli":"^3.3.12"},"gitHead":"39d3eeaf839b759c9d819666e377e4fff625aecc","_id":"aliyun-webrtc-electron-sdk@3.0.0-beta1","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-8jDXe2UTkLX0fOa3Uxp/aa44JBJbVPNyZMMBmEvQWJQSCAC97EUkp9Mut/hcymecN/v2B/6iLdkQBBFUCQ9Cew==","shasum":"abecb719709ec75064a1e846d7cd9b7b36520477","tarball":"https://registry.npmjs.org/aliyun-webrtc-electron-sdk/-/aliyun-webrtc-electron-sdk-3.0.0-beta1.tgz","fileCount":14,"unpackedSize":197961,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhySGICRA9TVsSAnZWagAA9q0P/0Fx6+6QMyEUF+83yDxM\nI01X1ZhbiMBLna6kRUULNtd6wpxBYJqfHwAVW3aYPLSXfXl72RuiJuIy3sC/\n3h1/L0ZcfssAU1IkbUZEjhsszWPjysYLHep0tL4bDD3shclV+VucXB+Z3x2P\nsh/N6UZz6+dpEYg0yI88mAZwIUZqK0b7tmWLtgZJwpQTYYSxfOsNwQTipys6\nGqpq/NqV05fCqnITAOhpAY8fMlwkUeCqWYFHIp/bIsrG0TqeZC5uINPs8odM\nYcp4BOz5chwP/AyW9ahCHkmawszRVMd8D568XI+08RvBMGcg68+WlgCjiXFX\nEifgL6/PrHUE3OHVIzSQrsX4bKJ4Gmirej55mQ52eH6PkwSe1YsREke07pND\n4vzgQG+Al8tUY+05peGorTBUb2EP8wxTFnpEXQmoBmLCSXhRAkIMFeRnRkXb\nwvJrONVYsREu5abmjHzPaG8zHuVJ79eHXOdvvQwvvMfnOKvn58nT9XWk9PgC\nzcfM/zXQEwbH/WE2vii0hDEY2FLlYFNRVBE/dVhQEdLlHPHmWSnHi6PWJ+9r\ntmFjN7Nt6wAyntNVPyoYpBwoY+BqAwWEfMRUrgCG/NHX8dh5NLxAa+Yuvyiz\n7b7vz0mreynZt0YX5g/NQ7KOUSrnSmcIAURog9ZS8v46ICPfwg8WSTyAws8G\nOvqf\r\n=z2x8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGZdUAfPFPqPF9iPQQtLriYLXMPbaHBw/gxGzA4BjP2MAiBuknMqFSOFfrlnIUAkDewX82wXH4n+1MQsKFXCcxDv5w=="}]},"_npmUser":{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aliyun-webrtc-electron-sdk_3.0.0-beta1_1640571272462_0.9202660045358022"},"_hasShrinkwrap":false},"3.0.0-beta2":{"name":"aliyun-webrtc-electron-sdk","version":"3.0.0-beta2","description":"","main":"./dist/alirtcengine.js","types":"types/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","install":"node-gyp rebuild"},"gypfile":true,"dependencies":{"bindings":"~1.2.1","canvas-video-render":"^1.0.6","commander":"^7.2.0","extract-zip":"^1.7.0","node-gyp":"^7.1.0","nugget":"^2.0.1","path":"^0.12.7","rebuild":"^0.1.2","yuv-buffer":"^1.0.0","yuv-canvas":"^1.2.6"},"devDependencies":{"babel-loader":"^8.1.0","babel-preset-es2015":"^6.24.1","request":"^2.88.2","webpack":"^4.44.1","webpack-cli":"^3.3.12"},"gitHead":"6d2f84738dd4a536deaa36961e5bf582bc0b125c","_id":"aliyun-webrtc-electron-sdk@3.0.0-beta2","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-oroHd4RXn5n5tC3BERbTdY5PSLgBiNIZkW+/87guc8fW9glVkEgZGamHO8srI1CNaXFqcT9mxgss5oQ9Cdi69Q==","shasum":"9faa428bfcc5cf4f68d839afe58364410169521d","tarball":"https://registry.npmjs.org/aliyun-webrtc-electron-sdk/-/aliyun-webrtc-electron-sdk-3.0.0-beta2.tgz","fileCount":15,"unpackedSize":202595,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhyXaqCRA9TVsSAnZWagAAMysP/1IpnbADGv+J+YgoHMtz\nrRKdeM89PlUPrtrjRnWmkTNr4bm6nAjGpUzp5+wlg+WawaxxOiyikRLbwQTv\nX8GquyFrA4MnZkHOHBRc03/1erLWzHLlqIhaoO9qHG5SRdxVI4dpZ/ltvt3W\nz6qFiKtU7EFfqUSxzXWEj0Z2pZ/AJYvwBfUTLN2yyjiOYPl5eyBUwjXu0DDw\naYEd9QzseUFjBn9GVWoW7cdYVd7gIkeE2vVIhubuf2b8G+w17L/uJQOaFJDe\niE9Xg1Dlr1G9Wo1J7T8YJsTn0PMdVBv1/fxah6zPT2bTmbFq+k3tFj8BaMSp\nJzgs0J0urazzslKlRrvpXYrPzh9ctEY/41hUUpliylAr1SuBt0Jxbq7FEpWn\nxNxE+q7P4JsViGD5syJsQWLTAclT0tjhSW5du41nvQG6t9cwuu4NzH2GPGD8\nBg27PUAJtyLNMjycpT5sgvWKfZd65yvLpJA42ixmRBKW1HwF7CqLC7vaeZrG\nJt4g8gAFSkVuqe/5kZ0k0K7zoi0bOanEHiHvx2Z0+L9Gi7PB8RIYzYECqgKs\nYnfPOcVBA3qKAUGBFCJIu+z+eAX+xbF8HRO1JQqo/7hyus/UO9KGEb4y0K0w\nypTx5BP4WG6dBsLbPb+MvdqYkyVKHneAR1Ki29gKdR7uxBKLt36fbKceFyon\nN7TE\r\n=TOKw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGtMhFqCQUfN0vzZXpi8CP4XSJy9IrWTjTsbCvPP5bRdAiEAqFwkNTjRjNoiMSl6xjnljivPdO7p1jYk42XRC+ovaNo="}]},"_npmUser":{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aliyun-webrtc-electron-sdk_3.0.0-beta2_1640593066236_0.23711929750280736"},"_hasShrinkwrap":false},"3.0.0-beta3":{"name":"aliyun-webrtc-electron-sdk","version":"3.0.0-beta3","description":"","main":"./dist/alirtcengine.js","types":"types/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","install":"node-gyp rebuild"},"gypfile":true,"dependencies":{"bindings":"~1.2.1","canvas-video-render":"^1.0.6","commander":"^7.2.0","extract-zip":"^1.7.0","node-gyp":"^7.1.0","nugget":"^2.0.1","path":"^0.12.7","rebuild":"^0.1.2","yuv-buffer":"^1.0.0","yuv-canvas":"^1.2.6"},"devDependencies":{"babel-loader":"^8.1.0","babel-preset-es2015":"^6.24.1","request":"^2.88.2","webpack":"^4.44.1","webpack-cli":"^3.3.12"},"gitHead":"d047af089f8bfe9089c6c8d43c7a473066dbe3de","_id":"aliyun-webrtc-electron-sdk@3.0.0-beta3","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-hInJqT8QFVlbznwFk6gtclaoL5KSgROXohJycHHNmPTkXXt5lTv56r3Tjacrn5G9JKSVmC21W/V4PUgLRwry7w==","shasum":"a718d0462d8907aeb119ca73e11aa827667fe541","tarball":"https://registry.npmjs.org/aliyun-webrtc-electron-sdk/-/aliyun-webrtc-electron-sdk-3.0.0-beta3.tgz","fileCount":15,"unpackedSize":202595,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhzCXTCRA9TVsSAnZWagAATi8P/0Olq/r/u4GHsQvpuPHV\nHldiqB8qDx7puuXM5VlVw5EJ14yCl5lVJRMFf7n/J75XRt5ODiHwFmAh99R6\nCeD3/pzYMVUMQHsvA3U8MC3Kvgr8SbYGZ3MCvb0b7EQwxWRwe7jeMxRkGGiz\nNeXMb5rByffWijKJ345B0+/bzKEgCyRJB/Vwn/zuo0cu2jzjdi/gEZpuhyjB\nfMIYXOA+vlf2CwVciAfH0/3l0p7tGh8dIsQfpX4WKqTPxommv9cMIc3ukSoL\nhzwdXDKmS4YJlbWR97qkBQvbQWbBV3/jDsE/NjgR8McYGkJdr6YFTFGTki9W\nfpuIuUzaf4hylOL6xNqhd/NUnaHgnVXY06D/1UJSnw2HhkQVs28zxe2W2KLn\neziV4dX1OCwTzPzyCjbO41qkfV/kGWUEjmR+T6bUuCFHfMmfP/1m28gWeB4M\nEme6U8eRFjs5FhJYib+xF3SaD6JhQe69A8n1z8FZrqNHj3Cc+17YpjHEKqRg\nhmBNIPsMHRlt4bsbxwo0uykJ/dB1bSFcSM73XO51mESR+rVTOxv7EJ8z48PX\nsUQ69Ft+Teg6oDHkrTgD6JxFwa4snxtaXUuZciF649RurGznmvnDWLHHo7rV\nEF9xjibc9GGePGtiHPbwmCmYiY7vZjCkqs2ZjpvJl2yVfLbfB5sjT5m7MmWh\nxX/G\r\n=TUo6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+GVn+J0QgK8b5nHTpS/jLObKSimr9beCFwjb+iayXtQIhAODfHpr15tKDIFk1B3OP/WRDdoyDaVVG9B+Eztgc14pU"}]},"_npmUser":{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aliyun-webrtc-electron-sdk_3.0.0-beta3_1640768979350_0.7208385689330963"},"_hasShrinkwrap":false},"3.0.0-beta4":{"name":"aliyun-webrtc-electron-sdk","version":"3.0.0-beta4","description":"","main":"./dist/alirtcengine.js","types":"types/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","install":"node-gyp rebuild"},"gypfile":true,"dependencies":{"bindings":"~1.2.1","canvas-video-render":"^1.0.6","commander":"^7.2.0","extract-zip":"^1.7.0","node-gyp":"^7.1.0","nugget":"^2.0.1","path":"^0.12.7","rebuild":"^0.1.2","yuv-buffer":"^1.0.0","yuv-canvas":"^1.2.6"},"devDependencies":{"babel-loader":"^8.1.0","babel-preset-es2015":"^6.24.1","request":"^2.88.2","webpack":"^4.44.1","webpack-cli":"^3.3.12"},"gitHead":"35052de0481963ddd861e377d7dd4d1baf42fa9c","_id":"aliyun-webrtc-electron-sdk@3.0.0-beta4","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-vUJ5VrL2YWHZy0V8dVd+w+WsmLBKNkmx3aapFbzBJ1n2bqvXutWxo/8HV+/nQADWKYsDDHqC4P28dNcAewk/4w==","shasum":"2281dafa6001c78278377de43dc03987215ce19f","tarball":"https://registry.npmjs.org/aliyun-webrtc-electron-sdk/-/aliyun-webrtc-electron-sdk-3.0.0-beta4.tgz","fileCount":15,"unpackedSize":202595,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh1QRjCRA9TVsSAnZWagAAO7gP/jy/dyBKm2+NrwBL60NW\nieHvxNDvT5VFTEF3aCGl3P4sH7JaD80QlsTbhtauGnvj2QDY2kQ9gKHshSWK\n2cp2qYpYRdfLKDLlYmulXIaq31vvMFvspVNxuKLZf0xSoVcVYtogtkG24wG7\n/b6lXmWwOhtNgd8t/c2kVZ42CMlliKr5Whsr0TzO8bDhJq2Z6V7Orzs5SJJo\npmOmOgjv24K4mBQ2EOFe5HDWblLxWXRbPK9PB5RwcezIIq9NymiE+nVFx+WU\nMT6rb5jdMpZN1zz6YJOO6lY/kmMVSNS1XgTeDh5YAhFasCTGJ/XiN4N5SJcL\nyFrlXc4rBC5kqybws1de3CjC4a8fH10vZ75Dr5Nn38k/Ouo5ohHqVN9nxkif\n0Ti1fzffKCLz3h6kPM5T8Y6YNWxnx0cbLTZPyIYYA8vBqhSe4mugCAAVL+7H\nn1LbD2ryhO5FlLuCxniMCDFmMjTqxk61i4panTaAMi/+M7d1ZTeJrzerpLqM\nhSZG/qItr63W2bmyQJS0J1TgIrwhtAAuPfvMs+ueqmI1zr0esqkeO+dGgxuz\nw6mVDMEF1dT6FReleYoSBAnsvI6uoBgJ3hFn6YCzZTEdeGR8EqKBVlUkgdT/\nK+4DXOcb01KVBKu2mcww3f699upVLcY2FnWojRe2h5Uer36I8AvSaKYSBXpI\nSyJf\r\n=9YvF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDL7nMCuCgUuoRjYe4dBrFLBy1NeI3jolL1zYTRKesykAIhAKRPMuJ0GpBUKQCXeF0/brUJcskazKrz1+Txz+2s+1Os"}]},"_npmUser":{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aliyun-webrtc-electron-sdk_3.0.0-beta4_1641350243301_0.0016694069670062373"},"_hasShrinkwrap":false},"3.0.0-beta5":{"name":"aliyun-webrtc-electron-sdk","version":"3.0.0-beta5","description":"","main":"./dist/alirtcengine.js","types":"types/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","install":"node-gyp rebuild"},"gypfile":true,"dependencies":{"bindings":"~1.2.1","canvas-video-render":"^1.0.6","commander":"^7.2.0","extract-zip":"^1.7.0","node-gyp":"^7.1.0","nugget":"^2.0.1","path":"^0.12.7","rebuild":"^0.1.2","yuv-buffer":"^1.0.0","yuv-canvas":"^1.2.6"},"devDependencies":{"babel-loader":"^8.1.0","babel-preset-es2015":"^6.24.1","request":"^2.88.2","webpack":"^4.44.1","webpack-cli":"^3.3.12"},"gitHead":"6e967240132cc85d30bd6032e954f6beba66e25b","_id":"aliyun-webrtc-electron-sdk@3.0.0-beta5","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-OIxGooorfq+L8QbkFucbyQX3dS/OZ7BoEN3yGt3955DZpuXC2uHuCejfkxAoWD8204xsV+8AX79TSZeEi4gWFA==","shasum":"b33ba02cb6e215b1169813fa372be25c8ef06e3e","tarball":"https://registry.npmjs.org/aliyun-webrtc-electron-sdk/-/aliyun-webrtc-electron-sdk-3.0.0-beta5.tgz","fileCount":15,"unpackedSize":202590,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh1UcJCRA9TVsSAnZWagAAfFgP/2dyXrdaq8X+hIzPsOCd\nDOdgBszDwdyZ4EAq4oLTfO8lRrRsk+1EdiPYIg8R/kGIvQJ1040BE8ZUwntq\n6JiBrPgPSMcmtJ47StDj/OES5p7+dnmZBTIZy4bT7cwfbhYE5CYiVawVk1gO\nUIqrAcczQa8KbdxOhDUtpB2Dx0fha3tIDt2WgJvsaNI1FmMTjHtYGm32LYae\neSNZEUUjTtdsj1HdoC4BcjwzQXNQoVlpv5dUcVyj8F2eEjglfA21OZOGCWqn\nXiwDOccLSm8o856+7LrzzG+YtoOEERLUwC+mTe19GUMBmQE/9MU5djTGWJy9\nj6MpTtU7Juu+6ufDRkGx4n48DN8gX9IHX9Kzt0QiR4N7N5vW7SLK5V++1DzZ\nb/tc6dIM6OMqjWYVt7mrmzpcaHdwodFHJejkktEbtYMRkLUxvIAhO+8B+Xzi\nYc5zHVTTxoMcCs2MJBFvHQIQIMlt2ivJoo/VqZaZRW/u0rTtG15veLc7ykYR\naH03gm3twTBdVwAZTCXU6R431a3OSrMRiGSuUhNxnmeafPk8mRwHXT2ozLT+\nRZNsgXLrGFR/wLFy11EpV8ygrpNwc2GaiDwW3KNEhUGcgjsNQE0Q1Wpyg9wT\nijSrWGT+8BPwV3kV2p+nFPu4rXOlh1BDq/IYC9KB75qUmWbhMy8xV3CK5c2w\nNvDU\r\n=aii3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG3r3Su4gNoN6wXAO002s/S1CGsF84RTTqP4HL0O8VqWAiBHMDUEE/Tq+gS7Wx3mGJbwNBbgI2H8lMkhLjiOPB24gw=="}]},"_npmUser":{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aliyun-webrtc-electron-sdk_3.0.0-beta5_1641367305607_0.13744929401697625"},"_hasShrinkwrap":false},"3.0.0-beta6":{"name":"aliyun-webrtc-electron-sdk","version":"3.0.0-beta6","description":"","main":"./dist/alirtcengine.js","types":"types/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","install":"node-gyp rebuild"},"gypfile":true,"dependencies":{"bindings":"~1.2.1","canvas-video-render":"^1.0.6","commander":"^7.2.0","extract-zip":"^1.7.0","node-gyp":"^7.1.0","nugget":"^2.0.1","path":"^0.12.7","rebuild":"^0.1.2","yuv-buffer":"^1.0.0","yuv-canvas":"^1.2.6"},"devDependencies":{"babel-loader":"^8.1.0","babel-preset-es2015":"^6.24.1","request":"^2.88.2","webpack":"^4.44.1","webpack-cli":"^3.3.12"},"gitHead":"8a87ccb5d176f1eae92e7536cbc41925cdddf94e","_id":"aliyun-webrtc-electron-sdk@3.0.0-beta6","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ts6xBkMXbwrLI+0GZGZ+t8YxPoniXs33EUh9cCZi22oKGHUDvmNFFtRZS1fCSYYil3vmGA+dIVRNW3hNs0KxCg==","shasum":"cc9448355b9f37df91283e47ba0592b227c4cf9b","tarball":"https://registry.npmjs.org/aliyun-webrtc-electron-sdk/-/aliyun-webrtc-electron-sdk-3.0.0-beta6.tgz","fileCount":15,"unpackedSize":202509,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh1qX7CRA9TVsSAnZWagAAe7kP/1nsT/NneXqkB3W/IOjv\nCpc9y+/C3YxR4Q3yZZxTMibg0T03/LGvgraDJlLlvTvlrJdWsyhn+QlSv9P8\nUWNog7sQoNPiwXoEjYmiJXniitjpUcAeuLILsHIcUmM6kqEgFdrQMFU/XvSq\nHocsCCwi5fa9dy/7/4/OTUuvtIAhrLRzl3qcIm3tgr6ZqvTLyTuwFt9fqWsb\nCbP/+g5AHhwgkLXuY4X11ehYNcwHYCqhyDZyduYBeqNfr8RwhRGvQCI0x/sx\nCazL/DVBd/1UtaWTLwiyb2b4jtJ+Xyf4e1ltT+6eNxq/1xXMDthK+HMPPWcl\nTxnaJO6iOXFlu7oMCMeMnAk8IPAwr5fslCxzwuPXFx6NVer6uDy4sxpH95Q6\nzops5UEAYSYZvm+Ld8cLMeNo1CCh6LzXDUePTnP977c2huaV2vdYJddAo1dq\nY9X15U92hlrMKyBk/FC4ZJ5gf8Ubkh+nJYLfP3k09CAFcRpaJapyVKEzezcC\ng8zrsfBNE0Nu75PJxlFS4X0LqDY5qXEkbQ+5fjzx71otPXm5K3DE7v94K9bx\nJ1/IdvcfphOI1NYOoATJEgXG1xVoViD75IYz0IQXJzXmcR23g5ceavCRi/3p\nHawUUhponJhzWeJ2+8S4lTRNA13MGOu/yro0T6zmWaipvb9vGq2z915Ee+XS\nsVtJ\r\n=LeN7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQChAKA9mhOvY8alddFAFNOKt9uSNzisdczdRazweDay8AIhANfw+GF7XyoQCgH2ShLEDJ9XTDpDWwEoociVHQfVxzAN"}]},"_npmUser":{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aliyun-webrtc-electron-sdk_3.0.0-beta6_1641457147549_0.35985719581460374"},"_hasShrinkwrap":false},"3.0.0-beta7":{"name":"aliyun-webrtc-electron-sdk","version":"3.0.0-beta7","description":"","main":"./dist/alirtcengine.js","types":"types/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","install":"node-gyp rebuild"},"gypfile":true,"dependencies":{"bindings":"~1.2.1","canvas-video-render":"^1.0.6","commander":"^7.2.0","extract-zip":"^1.7.0","node-gyp":"^7.1.0","nugget":"^2.0.1","path":"^0.12.7","rebuild":"^0.1.2","yuv-buffer":"^1.0.0","yuv-canvas":"^1.2.6"},"devDependencies":{"babel-loader":"^8.1.0","babel-preset-es2015":"^6.24.1","request":"^2.88.2","webpack":"^4.44.1","webpack-cli":"^3.3.12"},"gitHead":"b3e9b2db20797e492e4a6c2a58f7ec32c879fd4e","_id":"aliyun-webrtc-electron-sdk@3.0.0-beta7","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-/3teyk1w3meHXRKlWfodyh8IEBZnrv0pLtUnksdqhwKlMkP7/xXw8e3W6Cdt6yaTrCBwC8MdhZY8Jmsf3EU3RQ==","shasum":"631867db0a79c48c93ed7d376c5fb92895009bab","tarball":"https://registry.npmjs.org/aliyun-webrtc-electron-sdk/-/aliyun-webrtc-electron-sdk-3.0.0-beta7.tgz","fileCount":15,"unpackedSize":203535,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh3kLfCRA9TVsSAnZWagAAa4gP/0Kzypdh7iaOfLcW53n/\n1GgaHDWUo+kLZXSpmnbwnUqo1faAofusH0Msea6YGO5FkDmZlN4rKn4Mfvc0\novVBsqVCiY40veHW1nhQLLuYvjftwq/uef/CuHlaCwklpJduWcXJtXu6D9nH\nCphDZdNIclQ9KxF2RebclQHEkSml4asLiNQysOu/2sNxcY13lcyNJf4x0fAA\nMK6ggYCGc9nbkVHTVfeBfUgWui3X+cC3idQmpQ3UafHGGQLGXZYzJB/65Cda\nrN0kJUyRBl1IKvEtnt1dkdraRyPONzVjvH7ZiDJ1/M5je04O4j9KSq8/c6Fq\nE8r7dWpopwBfSu13IQezxtLj+/045SDG7WqaE6Bk8QF4tGhiqUyErkoyM8it\n9TTwqgoo3cduWItXTZlsKkICuDP4qhTn60lTuUuCchq6Flz9sfQW6zQNSKjA\n5qx8Sk7mNX05SblG4XYJN3wVKujZ3zM9LyFSyS2/oHcCZbQPhbmx2lbOUlm+\nmPxXe6hhvaGAf50GHuSU95GSqT4PitF9UInK/Srw1ucHtznQwVy6nN8F9miP\n9rU1x3/91IkUBX1/0b9l2yPU2agTfQs9A09IRu8hKmLcB2U9iZGBhjC8vvIC\nvCNBNx8weUL9mRN0wqDGLAAK7Daq8tavWsEVmoBl5tkQmvL3tFqgatneg7Q0\npuhV\r\n=P0gF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdToVNqiVCz/Ly5uV7M37a1pRqH5SQPpdOzIMI68b1HAIhANKSJQFNZMKd30nx3QEOpPRPITt3ly7hiOUVAMbh95OE"}]},"_npmUser":{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aliyun-webrtc-electron-sdk_3.0.0-beta7_1641956063579_0.4732214644591972"},"_hasShrinkwrap":false},"3.0.0-beta8":{"name":"aliyun-webrtc-electron-sdk","version":"3.0.0-beta8","description":"","main":"./dist/alirtcengine.js","types":"types/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","install":"node-gyp rebuild"},"gypfile":true,"dependencies":{"bindings":"~1.2.1","canvas-video-render":"^1.0.6","commander":"^7.2.0","extract-zip":"^1.7.0","node-gyp":"^7.1.0","nugget":"^2.0.1","path":"^0.12.7","rebuild":"^0.1.2","yuv-buffer":"^1.0.0","yuv-canvas":"^1.2.6"},"devDependencies":{"babel-loader":"^8.1.0","babel-preset-es2015":"^6.24.1","request":"^2.88.2","webpack":"^4.44.1","webpack-cli":"^3.3.12"},"gitHead":"3c766d473b3643bf111e4cc0cd192941fe3b4f26","_id":"aliyun-webrtc-electron-sdk@3.0.0-beta8","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-qPbZ5XJCLHGTGt1QWEAbRHkjuxPFx/yOQArqDlVU8yioD0w+0yag6CmWe/h2VVkvRzYYr55P/WnF0KrIBjjTyA==","shasum":"10114c429169dd38a8746b1f602b8a4495409d2e","tarball":"https://registry.npmjs.org/aliyun-webrtc-electron-sdk/-/aliyun-webrtc-electron-sdk-3.0.0-beta8.tgz","fileCount":15,"unpackedSize":203652,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh8oDFCRA9TVsSAnZWagAAIN4P/0FVJKQp3j7FjM6gJGAm\n5iJqZ4Xf5vW4OxmKALyI7InDPVp74cnacBvHDpvaxA5DauXPTGBRkwfiCekk\nXrY+owSP1mTX9JrFiqm0+mPNf+pBwUvOOXiJ3NMfBQQynGAASaqlZe2nFJB7\nyXZgy/pvS2wDfv/5q7b0PnHr9aSsC4uemsE5nXhdTfCij/cgSzlDBEAnic8f\nNdhn1I0Ab4r6b9B8o3LV6J8zFslOJZadgcMEY/rt9rLWmQjmZnZl4F1G9Wha\ntfPxDnojOH1yAlNbB9yGbA4IUX0p9BCtUUoGZ1DVrYdYkiZUxnzh6MBCDD6t\nTEGUx6kFCwpOJ7Z4/ao07orU4qLQrhYkX2zfQAaKdb9LdlxnkdEj5BPqNqMS\nbKRnCKT6X5ENYG8mkTLs2XRkHHGofArEhdsN7uh4cLfGJCgoZRwtb697qcdw\nr70f5xwzBiDUWyniHS628JxLH1J3lHYnHqXH+AQyCmiNI8w2WB8YMHPW9sMU\niHSQ0ORJU6CQgbPVR6OcZCbiRcO5FIERtsffS4lEpCvYymLJY/RRCqk3gC3h\ngx09nGXiFZ/PrQRSWjXNnvIa5zaqrEkpH4yyv77C/DLDe58z/BypoRAQ6fXf\nlAtzeER/gOQc2gn3nXWDrYWGm62qBxEOFEgaOeMWdi4WFKPlplKMH15qM6LD\ndJNb\r\n=N3zp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHyyCj3wlM2v/dEVMn3pbNMNubysMOXelZBwG5o1cxFjAiA/qNRvlESErNTWNS3BkD/+bXf0rhHN5THzP3azieI5lg=="}]},"_npmUser":{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aliyun-webrtc-electron-sdk_3.0.0-beta8_1643282628920_0.40396915644471676"},"_hasShrinkwrap":false},"2.5.2-beta1":{"name":"aliyun-webrtc-electron-sdk","version":"2.5.2-beta1","description":"","main":"./dist/alirtcengine.js","types":"types/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","install":"node-gyp rebuild"},"gypfile":true,"dependencies":{"bindings":"~1.2.1","canvas-video-render":"^1.0.4","commander":"^7.2.0","extract-zip":"^1.7.0","node-gyp":"^7.1.0","nugget":"^2.0.1","path":"^0.12.7","rebuild":"^0.1.2","yuv-buffer":"^1.0.0","yuv-canvas":"^1.2.6"},"devDependencies":{"babel-loader":"^8.1.0","babel-preset-es2015":"^6.24.1","request":"^2.88.2","webpack":"^4.44.1","webpack-cli":"^3.3.12"},"gitHead":"7d14fd8d8868a7db0f6345cc61c8664f56e6826a","_id":"aliyun-webrtc-electron-sdk@2.5.2-beta1","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-1w1skjySbESGKnf6OPuWh82DmlCMIkuPvgWJY8ZkMxL2Pg4P5P4nY0k3cW2uBNKb8FQjLh7biV/clDWinS+PfA==","shasum":"1c7ce2445739fd270d9e0261840de1d59ef530ee","tarball":"https://registry.npmjs.org/aliyun-webrtc-electron-sdk/-/aliyun-webrtc-electron-sdk-2.5.2-beta1.tgz","fileCount":14,"unpackedSize":176650,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDmXO2MIfU/LDIRRZennzJpFFupa4zT2wXeiYzr0Q/ihQIhAN9aeU/C/0s1Yrw7Q19XwnUFHrq4htGEEA7JJEcncQBP"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiU/P9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqn9xAAkwmBTRbRWIsWjfOhOhbZTiq8q7URlo3e7MBUx9mQzkSc7LXx\r\nipbWysr/DQzCIg59Jel38ZBHHF6AEemX8msGzG/tdrrsOJ4nNZb/g+tZ2h9x\r\nU5D/VK3MnFTCJPQFAaNXhvAP+ckU4h74HgLhbvN3uPXM39dJrtq2q4fuxSrb\r\niJCfzuxqUx4yuWPeS9G5aKYeFt5KI/kT/+xbZKZLG/d3ts/Me0e00bJrvkct\r\npM0gT2OUFMi0vxXywG+dB71dv/IRPs7EVNhc/e/r2PWElNCFwakwNcWMMbPg\r\nWo+KNJZK6bT+k3xCS3hhkQkjCZzHUkS7lCx1vf1wXEgkyK1xYlgUw8NhZ10z\r\nhjPG7N7ce+fSmUPZc5dcG9GZ4qgkyUL9aQF/4X7zWbQVmimkeLpK77BUO70t\r\ns9G4oA/kSsDSwS/4Yh3NxC3fMTZlVYfd9uCzbWyriMtw/5MVrHqEuFbfK5Us\r\nLIWuEGl0XYUc+CTItt0OgNe2RSKVqlXwrX8QF1iO9MjJrXZ1VkEQ7MwpApjR\r\nFisMW2H4M30+6RruDhdS+wzKDhlJzrJk7wZxKXKQYeCyZJHb71IEMFKH28+s\r\n+BQySprAYQx6CwBROGgH2nmQbk8nXbOmQjZhH1w9DVsxm+5Gt2MHdmQpeAm4\r\npfjFkXykYZbghKISQ403cficgxp0TLyoZOQ=\r\n=F2Uz\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"},{"name":"xinye22","email":"xiongbo.xb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aliyun-webrtc-electron-sdk_2.5.2-beta1_1649669117288_0.8494195810350114"},"_hasShrinkwrap":false}},"time":{"created":"2020-09-23T09:31:21.015Z","0.0.8":"2020-09-23T09:31:21.155Z","modified":"2022-04-11T13:26:26.679Z","0.0.1":"2020-09-23T09:34:06.104Z","0.0.2":"2020-09-23T09:36:29.162Z","0.0.3-beta":"2020-09-29T05:20:09.097Z","0.0.4-beta":"2020-10-13T12:45:04.018Z","1.0.0-beta":"2020-11-03T09:06:55.769Z","1.0.0-beta1":"2020-11-04T11:09:49.286Z","1.0.0-beta2":"2020-11-05T11:21:06.296Z","1.0.0":"2020-11-11T08:57:58.635Z","2.0.0-beta1":"2021-05-20T03:03:13.300Z","2.0.0-beta2":"2021-05-20T13:14:36.444Z","2.0.0":"2021-05-26T06:52:01.003Z","2.1.0":"2021-07-07T07:19:41.154Z","2.5.2":"2021-08-26T01:54:45.584Z","3.0.0-beta1":"2021-12-27T02:14:32.594Z","3.0.0-beta2":"2021-12-27T08:17:46.412Z","3.0.0-beta3":"2021-12-29T09:09:39.541Z","3.0.0-beta4":"2022-01-05T02:37:23.449Z","3.0.0-beta5":"2022-01-05T07:21:45.843Z","3.0.0-beta6":"2022-01-06T08:19:07.741Z","3.0.0-beta7":"2022-01-12T02:54:23.720Z","3.0.0-beta8":"2022-01-27T11:23:49.151Z","2.5.2-beta1":"2022-04-11T09:25:17.496Z"},"maintainers":[{"name":"junqi.fjq","email":"junqi.fjq@alibaba-inc.com"},{"name":"xinye22","email":"xiongbo.xb@alibaba-inc.com"}],"readme":"# Electron SDK\n\n\n阿里云音视频通信aliyun-webrtc-electron-sdk\n​\n\n## 一、接入前准备\n\n\n### 接入参数配置\n\n\n1 、在electron项目目录中package.json文件scripts中增加postinstall命令配置指定版本号\n（electron版本也需要对应版本，一般相同主版本号可以兼容）\n​\n\n```json\n\"scripts\": {\n\t\"postinstall\": \"node node_modules/aliyun-webrtc-electron-sdk/dist/bin/alirtcdown -v 6.0.10\"\n  ...\n}\n```\n\n\n参数说明：\n\n| 命令 | 是否必填 | 说明 | 可选参数 | 备注 |\n| --- | --- | --- | --- | --- |\n| -v | 必填 | electron版本 | 6.0.10 | 当前请选择6.0.10 |\n| -p | 可选 | 系统类型 | darwin win32 | darwin表示mac系统，win32表示windows系统 |\n| -a | 可选 | 位数 | ia32 x64 | 当前windows请选择ia32，mac仅有x64 |\n\n\n\n2、在dependencies中增加aliyun-webrtc-electron-sdk包\n​\n\n```json\n\"dependencies\": {\n  ...\n\t\"aliyun-webrtc-electron-sdk\": \"^2.5.2\"\n  ...\n}\n```\n\n\n3、执行npm install /cnpm install安装依赖\n​\n\n### 打包参数配置\n\n\n由于electron sdk用到的dll库在asar压缩后无法正常使用，需要配置不压缩\n​\n\n```json\n\"build\": {\n\t\"extraResources\": [\n  \t\"./node_modules/aliyun-webrtc-electron-sdk/**\"\n  ]\n}\n```\n\n\n### 官方文档\n\n\n阿里云RTC提供移动端、PC等多端SDK，并兼容标准WebRTC浏览器接入网络，帮助您快速搭建多端实时应用。接入RTC的方法，请参见[入门概述](https://help.aliyun.com/document_detail/74889.html?spm=a2c4g.11186623.2.14.701d257bVKEW0k#concept-2326476)。\n当您成功搭建本地SDK，可以在终端调用API与RTC服务端进行交互，在加入频道或房间后，您可以进行本地推流、订阅远端用户等操作，实现频道内不同用户之间的音视频实时通话。\n阿里云RTC拥有全球实时智能调度系统，并结合实时媒体处理系统和1500+边缘节点，运用行业领先的音频3A（AGC、AEC、ANS）、视频编码、弱网对抗等算法为您提供低延时、抗丢包的音视频实时通信。\n![](https://intranetproxy.alipay.com/skylark/lark/0/2020/png/241429/1583478028152-476aa35b-4353-4055-955a-199523e4c658.png#align=left&display=inline&height=1726&margin=%5Bobject%20Object%5D&originHeight=1726&originWidth=1346&size=0&status=done&style=none&width=1346#id=xRGWQ&originHeight=1726&originWidth=1346&originalType=binary&ratio=1&status=done&style=none)\n​\n\n## 二、文档\n\n\n### 接口文档\n\n\n本文为您介绍了Electron SDK的接口详情\n​\n\n#### 目录\n\n\n##### 基础接口\n| API | 描述 | 支持的最低版本 |\n| --- | --- | --- |\n| 实例化 | 创建aliElectronRtc实例 | 2.1.0 |\n| destroy | SDK资源释放 | 2.1.0 |\n\n\n\n##### 频道相关接口\n| API | 描述 | 支持的最低版本 |\n| --- | --- | --- |\n| joinChannel | 加入频道 | 2.1.0 |\n| leaveChannel | 离开频道 | 2.1.0 |\n| isInCall | 检查当前是否在频道中 | 2.1.0 |\n| setChannelProfile | 设置频道模式 | 2.1.0 |\n\n\n\n##### 发布相关接口\n| API | 描述 | 支持的最低版本 |\n| --- | --- | --- |\n| publishLocalVideoStream | 设置是否允许推视频流 | 2.1.0 |\n| isLocalVideoStreamPublished | 查询当前是否允许推视频流 | 2.1.0 |\n| isScreenSharePublished | 查询当前是否允许推屏幕流 | 2.1.0 |\n| publishLocalAudioStream | 设置是否允许推音频流 | 2.1.0 |\n| isLocalAudioStreamPublished | 查询当前是否允许推音频流 | 2.1.0 |\n| publishLocalDualStream | 设置是否允许推次要视频流 | 2.1.0 |\n| isDualStreamPublished | 查询当前是否允许推次要视频流 | 2.1.0 |\n\n\n\n##### 订阅相关接口\n| API | 描述 | 支持的最低版本 |\n| --- | --- | --- |\n| setRemoteVideoStreamType | 设置订阅的相机流格式。 | 2.1.0 |\n| setRemoteDefaultVideoStreamType | 设置默认订阅的相机流格式。 | 2.1.0 |\n| setDefaultSubscribeAllRemoteAudioStreams | 设置是否默认拉音频流。 | 2.1.0 |\n| subscribeAllRemoteAudioStreams | 停止或恢复拉所有远端音频流。 | 2.1.0 |\n| subscribeRemoteAudioStream | 停止或恢复特定远端用户的音频流拉取。 | 2.1.0 |\n| setDefaultSubscribeAllRemoteVideoStreams | 设置是否默认拉视频流。 | 2.1.0 |\n| subscribeAllRemoteVideoStreams | 停止或恢复拉所有远端视频流。 | 2.1.0 |\n| subscribeRemoteVideoStream | 停止或恢复特定远端用户的视频流拉取。 | 2.1.0 |\n\n##### 视频相关接口\n| API | 描述 | 支持的最低版本 |\n| --- | --- | --- |\n| setScreenShareEncoderConfiguration | 设置屏幕共享编码属性 | 2.1.0 |\n| setLocalViewConfig | 为本地预览设置渲染窗口以及绘制参数 | 2.1.0 |\n| enableLocalVideo | 禁用或重新启用本地视频采集 | 2.1.0 |\n| muteLocalCamera | 设置是否停止推本地视频流 | 2.1.0 |\n| setRemoteViewConfig | 为远端的视频设置渲染窗口 | 2.1.0 |\n| stopRecord | 停止录制 | 2.1.0 |\n| startRecord | 开始录制 | 2.1.0 |\n| pauseRecord | 暂停录制 | 2.1.0 |\n| resumeRecord | 重新开始录制 | 2.1.0 |\n| setBeautyEffect | 设置基础美颜 | 2.1.0 |\n| setVideoEncoderConfiguration | 设置视频编码属性 | 2.1.0 |\n\n##### 共享视频接口\n| API | 描述 | 支持的最低版本 |\n| --- | --- | --- |\n| startScreenShareByDesktopId | 根据桌面ID进行屏幕分享。 | 2.1.0 |\n| startScreenShareByWindowId | 根据窗口ID进行屏幕分享。 | 2.1.0 |\n| stopScreenShare | 停止屏幕分享。 | 2.1.0 |\n| getScreenShareConfig | 获取屏幕共享配置。 | 2.1.0 |\n| getScreenShareSourceInfo | 获取屏幕分享源信息。 | 2.1.0 |\n| getCurrentScreenShareSourceId | 获取当前屏幕共享源ID。 | 2.1.0 |\n| getCurrentScreenShareSourceType | 获取当前屏幕共享源类型。 | 2.1.0 |\n\n##### 音频相关接口\n| API | 描述 | 支持的最低版本 |\n| --- | --- | --- |\n| muteLocalMic | 设置是否停止推本地音频。 | 2.1.0 |\n| muteRemoteAudio | 设置是否停止播放远端音频流。 | 2.1.0 |\n| muteAllRemoteAudio | 停止或恢复远端所有的音频播放。 | 2.1.0 |\n| startAudioCapture | 开启音频采集。 | 2.1.0 |\n| stopAudioCapture | 关闭音频采集。 | 2.1.0 |\n| startAudioPlayer | 开启音频播放设备。 | 2.1.0 |\n| stopAudioPlayer | 关闭音频播放。 | 2.1.0 |\n| enableAudioVolumeIndication | 设置音量回调频率和平滑系数。 | 2.1.0 |\n| setAudioProfile | 设置音频Profile。 | 2.1.0 |\n| startAudioAccompany | 开始混音 | 2.1.0 |\n| stopAudioAccompany | 停止混音 | 2.1.0 |\n| setAudioAccompanyVolume | 设置混音音量 | 2.1.0 |\n| setAudioAccompanyPublishVolume | 设置混音之后推流出去的音量 | 2.1.0 |\n| getAudioAccompanyPublishVolume | 获取推流出去的混音音量 | 2.1.0 |\n| setAudioAccompanyPlayoutVolume | 设置混音之后本地播放的音量 | 2.1.0 |\n| getAudioAccompanyPlayoutVolume | 获取混音本地播放的音量 | 2.1.0 |\n| pauseAudioAccompany | 暂停混音 | 2.1.0 |\n| resumeAudioAccompany | 重新开始混音 | 2.1.0 |\n| getAudioAccompanyDuration | 获取伴奏文件时长 | 2.1.0 |\n| getAudioAccompanyCurrentPosition | 获取音乐文件播放进度 | 2.1.0 |\n| setAudioAccompanyPosition | 设置音频文件的播放位置 | 2.1.0 |\n| enableSystemAudioRecording | 设置是否开启系统声音采集推送。 | 2.1.0 |\n| isSystemAudioRecording | 当前是否开启系统声音采集推送。 | 2.1.0 |\n| setSystemAudioRecordingVolume | 设置系统声音采集推送音量。 | 2.1.0 |\n| getSystemAudioRecordingVolume | 获取当前设置系统声音采集推送音量。 | 2.1.0 |\n\n##### 音频设备管理接口\n| API | 描述 | 支持的最低版本 |\n| --- | --- | --- |\n| getAudioCaptureList | 获取系统中的录音设备列表。 | 2.1.0 |\n| getCurrentAudioCaptureName | 获取使用的录音设备名称。 | 2.1.0 |\n| getCurrentAudioCaptureID | 获取使用的录音设备ID。 | 2.1.0 |\n| setCurrentAudioCaptureName | 选择录音设备名称。 | 2.1.0 |\n| setCurrentAudioCaptureID | 选择录音设备ID。 | 2.1.0 |\n| getAudioPlayerList | 获取系统中的扬声器列表。 | 2.1.0 |\n| getCurrentAudioPlayerName | 获取当前使用的扬声器名称。 | 2.1.0 |\n| getCurrentAudioPlayerID | 获取当前使用的扬声器ID。 | 2.1.0 |\n| setCurrentAudioPlayerName | 选择扬声器名称。 | 2.1.0 |\n| setCurrentAudioPlayerID | 选择扬声器ID。 | 2.1.0 |\n| startTestAudioRecordByName | 开始测试音频采集设备。 | 2.1.0 |\n| startTestAudioRecordById | 开启麦克风设备测试（按设备ID）。 | 2.1.0 |\n| stopTestAudioRecord | 停止测试音频采集设备。 | 2.1.0 |\n| startTestAudioPlayoutByName | 开始测试音频播放设备。 | 2.1.0 |\n| startTestAudioPlayoutById | 开启扬声器设备测试（按设备ID）。 | 2.1.0 |\n| stopTestAudioPlayout | 停止测试音频播放设备。 | 2.1.0 |\n\n##### 视频设备管理接口\n| API | 描述 | 支持的最低版本 |\n| --- | --- | --- |\n| getCameraList | 获取摄像头列表。 | 2.1.0 |\n| getCurrentCameraName | 获取当前使用的摄像头名称。 | 2.1.0 |\n| getCurrentCameraID | 获取当前使用的摄像头ID。 | 2.1.0 |\n| setCurrentCameraName | 选择摄像头名称。 | 2.1.0 |\n| setCurrentCameraID | 选择摄像头ID。 | 2.1.0 |\n\n##### 预览接口\n| API | 描述 | 以上版本支持 |\n| --- | --- | --- |\n| startPreview | 开启预览 | 2.1.0 |\n| stopPreview | 停止预览 | 2.1.0 |\n\n\n\n##### 远端用户查询接口\n| API | 描述 | 支持的最低版本 |\n| --- | --- | --- |\n| getUserInfo | 查询远端用户信息。 | 2.1.0 |\n\n\n\n##### 其他接口\n| API | 描述 | 支持的最低版本 |\n| --- | --- | --- |\n| getSDKVersion | 获取SDK版本号。 | 2.1.0 |\n| setClientRole | 设置用户角色。 | 2.1.0 |\n| getClientRole | 获取用户角色。 | 2.1.0 |\n| startLastmileDetect | 开始网络质量探测。 | 2.1.0 |\n| stopLastmileDetect | 停止网络质量探测。 | 2.1.0 |\n| getCurrentConnectionStatus | 获取当前网络链接状态。 | 2.1.0 |\n| on | 订阅事件 | 2.1.0 |\n| off | 取消订阅事件 | 2.1.0 |\n\n#### 接口详情\n\n\n##### 基础接口\n\n\n\n- **实例化**\n\n```javascript\nlet aliElectronRtc = new AliRtcEngine(option)\n```\n| 参数 | - | 类型 | 描述 |\n| --- | --- | --- | --- |\n| option | h5CompatibleMode | Boolean | 是否开启H5兼容，默认false |\n| - | extension | Object | 定制参数，默认空对象，可不填 |\n\n注：H5兼容模式是指是否能和Web端正常通信，默认关闭。\n​\n\n\n- **destroy**：销毁实例\n\n```javascript\naliElectronRtc.destroy();\n```\n\n\n\n##### 频道相关接口\n\n- **joinChannel**：加入频道。\n\n注：1、加入频道成功后，如果中途需要加入其他频道，必须先调用leaveChannel离开当前频道。\n2、如果加入频道失败，需要重试时，无需先调用leaveChannel。\n3、该接口是异步接口，是否成功加入频道，通过onJoinChannelResult判断。\n\n```javascript\naliElectronRtc.joinChannel(authInfo, options)\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| authInfo | AliEngineAuthInfo | 鉴权信息 |\n| options | ChannelMediaOptions | 订阅选项 |\n\n- **isInCall**: 是否在频道中\n```javascript\naliElectronRtc.isInCall()\n```\n返回说明：true表示在频道中，false表示不在频道中\n​\n\n\n- **leaveChannel**: 离开频道\n\n```javascript\naliElectronRtc.leaveChannel()\n```\n\n\n注：该接口是异步接口，是否成功加入频道，通过onJoinChannelResult判断\n​\n\n\n- **setChannelProfile**: 设置频道类型\n\n注：默认通信模式，设置频道模式需要在入会前调用。\n返回 0：成功，其他表示对应错误码\n\n```javascript\naliElectronRtc.setChannelProfile(profile)\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| profile | AliEngineChannelProfile | 频道类型 |\n\n\n\n##### 发布相关接口\n\n- **publishLocalVideoStream**：设置是否允许推视频流。\n\n```javascript\naliElectronRtc.publishLocalVideoStream(enable)\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| enable | Boolean | 是否允许推视频流 |\n\n\n\n\n- **isLocalVideoStreamPublished**：查询当前是否允许推视频流。\n\n```javascript\naliElectronRtc.isLocalVideoStreamPublished()\n```\n\n返回说明：true表示允许推相机流，false表示不允许推相机流。\n​\n\n\n- **isScreenSharePublished**：查询当前是否允许推屏幕流。\n\n```javascript\naliElectronRtc.isScreenSharePublished()\n```\n\n返回说明：true表示允许推相机流，false表示不允许推相机流。\n​\n\n\n- **publishLocalAudioStream**：设置是否允许推音频流。\n\n```javascript\naliElectronRtc.publishLocalAudioStream(enable)\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| enable | Boolean | 是否允许推音频流 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n\n\n\n\n- **isLocalAudioStreamPublished**：查询当前是否允许推音频流。\n\n```javascript\naliElectronRtc.isLocalAudioStreamPublished\n```\n\n返回说明：true表示允许推音频流，false表示不允许推音频流。\n\n\n\n\n- **publishLocalDualStream**：设置是否允许推次要视频流。\n\n```javascript\naliElectronRtc.publishLocalDualStream(enable)\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| enable | Boolean | 是否允许推次要视频流 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n\n\n\n\n- **isDualStreamPublished**：查询当前是否允许推次要视频流。\n\n```javascript\naliElectronRtc.isDualStreamPublished()\n```\n\n返回说明:true表示允许推次要视频流，false表示不允许推次要视频流。\n\n\n\n##### 订阅相关接口\n\n- **setRemoteVideoStreamType**：设置订阅的相机流格式。\n\n```javascript\naliElectronRtc.setRemoteVideoStreamType(uid, streamType)\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| uid | String | 远端用户ID。 |\n| streamType | AliEngineVideoStreamType | 相机流格式。 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **setRemoteDefaultVideoStreamType**：设置默认订阅的相机流格式。\n\n```javascript\naliElectronRtc.SetRemoteDefaultVideoStreamType(streamType)\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| streamType | AliEngineVideoStreamType | 相机流格式。 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **setDefaultSubscribeAllRemoteAudioStreams**：设置是否默认拉音频流。\n\n```javascript\naliElectronRtc.setDefaultSubscribeAllRemoteAudioStreams(sub)\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| sub | Boolean | 是否订阅 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **subscribeAllRemoteAudioStreams**：停止或恢复拉所有远端音频流。\n\n```javascript\naliElectronRtc.subscribeAllRemoteAudioStreams(sub)\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| sub | Boolean | 是否订阅。 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **subscribeRemoteAudioStream**：停止或恢复特定远端用户的音频流拉取。\n\n```javascript\naliElectronRtc.subscribeRemoteAudioStream(uid, sub)\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| uid | String | 远端用户ID |\n| sub | Boolean | 是否订阅 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **setDefaultSubscribeAllRemoteVideoStreams**：设置是否默认拉视频流。\n\n```javascript\naliElectronRtc.setDefaultSubscribeAllRemoteVideoStreams(sub)\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| sub | Boolean | 是否订阅。 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **subscribeAllRemoteVideoStreams**：停止或恢复拉所有远端视频流。\n\n```javascript\naliElectronRtc.subscribeAllRemoteVideoStreams(sub)\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| sub | Boolean | 是否订阅。 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **subscribeRemoteVideoStream**：停止或恢复特定远端用户的视频流拉取。\n\n```javascript\naliElectronRtc.subscribeRemoteVideoStream(uid, track, sub)\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| uid | String | 远端用户ID。 |\n| track | AliEngineVideoTrack | 视频流类型。 |\n| sub | Boolean | 是否订阅。 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n##### 视频相关接口\n\n- **setScreenShareEncoderConfiguration**：设置屏幕共享编码属性。\n```javascript\naliElectronRtc.setScreenShareEncoderConfiguration(config)\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| config | AliEngineScreenShareEncoderConfiguration | 屏幕共享编码属性。 |\n\n\n\n\n- **setLocalViewConfig**：为本地预览设置渲染窗口\n```javascript\naliElectronRtc.setLocalViewConfig(element)\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| element | HTMLDivElement | 预览容器 |\n\n\n\n- **enableLocalVideo**：禁用或重新启用本地视频采集。\n```javascript\naliElectronRtc.enableLocalVideo(enable)\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| enable | Boolean | 禁用或重新启用本地视频采集 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **muteLocalCamera**：停止或恢复本地视频数据发送。\n\n```javascript\naliElectronRtc.muteLocalCamera(mute, track)\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| mute | Boolean | 停止或恢复推视频流 |\n| track | AliEngineVideoTrack | 需要改变推流状态的视频流类型。 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n**说明**此接口只是控制指定视频流上是否发送黑帧，采集和数据发送不会停止，如果需要关闭采集请使用enableLocalVideo接口，如果需要中止视频数据发送请使用publishLocalVideoStream接口。\n​\n\n\n- **setRemoteViewConfig**：为远端的视频设置渲染窗口\n```javascript\naliElectronRtc.setRemoteViewConfig(uid, container, type)\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| uid | String | 用户ID。 |\n| container | HTMLDivElement | 视图容器 |\n| type | Number | 视频流 1：camera 2:screen |\n\n\n\n- **stopRecord**：停止录制。\n```javascript\naliElectronRtc.stopRecord()\n```\n返回说明：true表示方法调用成功，false表示方法调用失败。\n​\n\n\n- **startRecord**：开始录制\n```javascript\naliElectronRtc.startRecord(recordType, recordFormat, filePath, audioConfig, videoConfig, isFragment)\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| recordType | AliEngineRecordType | 录制类型 |\n| recordFormat | AliEngineRecordFormat | 录制格式 |\n| filePath | String | 文件路径 |\n| audioConfig | AliEngineRecordAudioConfig | 录制音频设置 |\n| videoConfig | AliEngineRecordVideoConfig | 录制视频设置 |\n| isFragment | Boolean | 是否支持mp4内部分段，只在录制mp4时有效 |\n\n返回说明：true表示方法调用成功，false表示方法调用失败。\n注：目前仅支持音频录制\n​\n\n\n- **pauseRecord**：暂停录制。\n```javascript\naliElectronRtc.pauseRecord()\n```\n返回说明：true表示方法调用成功，false表示方法调用失败。\n\n\n\n- **resumeRecord**：重新开始录制。\n```javascript\naliElectronRtc.resumeRecord()\n```\n返回说明：true表示方法调用成功，false表示方法调用失败。\n​\n\n\n- **setBeautyEffect**：设置是否启用基础美颜。\n```javascript\naliElectronRtc.setBeautyEffect(enable, config)\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| enable | Boolean | 是否启用基础美颜 |\n| config | AliEngineBeautyConfig | 基础美颜参数。 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n\n**说明**该接口目前只支持美白和磨皮。\n​\n\n\n- **setVideoEncoderConfiguration**：设置视频编码属性。\n\n```javascript\naliElectronRtc.setVideoEncoderConfiguration(config)\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| config | ​AliEngineVideoEncoderConfiguration | 预定义的编码属性。 |\n\n\n\n##### 共享视频接口\n\n- **startScreenShareByDesktopId**：根据桌面ID进行屏幕分享。\n\n```javascript\naliElectronRtc.startScreenShareByDesktopId(desktopId, config) \n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| desktopId | Number | 桌面ID（可通过getScreenShareSourceInfo接口获取） |\n| config | [AliEngineScreenShareConfig](t2071758.html#li-063)​ | 屏幕分享配置 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n**说明** 配置指定区域分享时，分享区域最小分辨率为16 x 16，设置区域小于最小分辨率时重置为最小分辨率；设置分享区域超过实际桌面分辨率时，将分享整个桌面。\n​\n\n\n- **startScreenShareByWindowId**：根据窗口ID进行屏幕分享。\n\n```javascript\naliElectronRtc.startScreenShareByWindowId(windowId, config)\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| windowId | Number | 窗口ID（可通过GetScreenShareSourceInfo接口获取） |\n| config | ​AliEngineScreenShareConfig | 屏幕分享配置 |\n\n\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **stopScreenShare**：停止屏幕分享。\n```javascript\naliElectronRtc.stopScreenShare()\n```\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **getScreenShareConfig**：获取屏幕共享配置。\n```javascript\naliElectronRtc.getScreenShareConfig()\n```\n返回说明：返回屏幕共享配置信息 AliEngineScreenShareConfig​\n​\n\n\n- **getScreenShareSourceInfo**：获取屏幕分享源信息。\n```javascript\naliElectronRtc.getScreenShareSourceInfo(sourceType).then(sourceInfo => {\n\t//...\n})\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| sourceType | [AliEngineScreenShareType](t2071758.html#li-052) | 屏幕分享类型。 |\n\n返回说明：Promise 返回屏幕共享源列表\n\n| 返回各项参数名 | 类型 | 描述 |\n| --- | --- | --- |\n| sourceId | Number | 源id |\n| sourceTitle | String | 源名称 |\n| appIcon | NativeImage | null | 窗口icon |\n| thumbnail | NativeImage | null | 缩略图 |\n\n\n\n\n- **getCurrentScreenShareSourceId**：获取当前屏幕共享源ID。\n```javascript\naliElectronRtc.getCurrentScreenShareSourceId()\n```\n返回说明：返回当前屏幕共享源ID。\n​\n\n\n- **getCurrentScreenShareSourceType**：获取当前屏幕共享源类型。\n```javascript\naliElectronRtc.getCurrentScreenShareSourceType()\n```\n返回说明：返回当前屏幕共享源类型。\n​\n\n##### 音频相关接口\n\n- **muteLocalMic**：停止或恢复本地音频数据发送。\n\n```javascript\naliElectronRtc.muteLocalMic(mute, mode)\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| mute | Boolean | 停止或恢复本地音频数据发送 |\n| mode | [AliEngineMuteLocalAudioMode](t2071758.html#li-057) | 静音模式，默认麦克风静音模式。 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n\n**说明** mute只是发送音频数据为静音帧，采集和编码模块仍然在工作。\n​\n\n\n- **muteRemoteAudio**：停止或恢复远端的音频播放。\n\n```javascript\naliElectronRtc.muteRemoteAudio(uid, mute)\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| uid | String | 用户ID。 |\n| mute | Boolean | 停止或恢复远端的音频播放 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **muteAllRemoteAudio**：停止或恢复远端所有的音频播放。\n\n```javascript\naliElectronRtc.muteAllRemoteAudio(mute)\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| mute | Boolean | 停止或恢复远端所有的音频播放 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **startAudioCapture**：开启音频采集。\n```javascript\naliElectronRtc.startAudioCapture()\n```\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **stopAudioCapture**：关闭音频采集。\n```javascript\naliElectronRtc.stopAudioCapture()\n```\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **startAudioPlayer**：开启音频播放设备。\n```javascript\naliElectronRtc.StartAudioPlayer()\n```\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **stopAudioPlayer**：关闭音频播放。\n```javascript\naliElectronRtc.stopAudioPlayer()\n```\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **enableAudioVolumeIndication**：设置音量回调频率和平滑系数。\n```javascript\naliElectronRtc.enableAudioVolumeIndication(interval, smooth, reportVad)\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| interval | Number | 时间间隔，单位为毫秒，最小值不得小于10ms，建议设置300~500ms；小于等于0表示不启用音量提示和说话人提示功能。 |\n| smooth | Number | 平滑系数，数值越大平滑程度越高，反之越低，实时性越好，取值范围：[0,9]，建议设置3。 |\n| reportVad | Number | 说话人检测开关。取值：0：关闭。1：开启，通过onAudioVolumeCallback接口回调每一个说话人的状态。|\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **setAudioProfile**：设置音频Profile。\n\n```javascript\naliElectronRtc.setAudioProfile(audio_profile, audio_scene)\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| audio_profile | [AliEngineAudioProfile](t2071758.html#li-072) | 音频采集或编码模式参数 |\n| audio_scene | [AliEngineAudioScenario](t2071758.html#li-073) | 音频场景模式参数 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **startAudioAccompany**：开始混音\n\n```javascript\naliElectronRtc.startAudioAccompany(filePath, onlyLocalPlay, replaceMic, loopCycles)\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| filePath | String | 混音文件路径。 |\n| onlyLocalPlay | Boolean | 是否只本地播放。 |\n| replaceMic | Boolean | 是否替换掉MIC。 |\n| loopCycles | Number | 循环次数（可以设置-1或者正整数）。 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **stopAudioAccompany**：停止混音\n```javascript\naliElectronRtc.stopAudioAccompany()\n```\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **setAudioAccompanyVolume**：设置混音音量\n```javascript\naliElectronRtc.setAudioAccompanyVolume(volume)\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| volume | Number | 混音音量，取值范围：[0,100]。 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n**说明**设置音量需要在startAudioAccompany后才能生效。\n​\n\n\n- **setAudioAccompanyPublishVolume**：设置混音之后推流出去的音量\n\n```javascript\naliElectronRtc.setAudioAccompanyPublishVolume(volume)\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| volume | Number | 混音音量，取值范围：[0,100]。 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n**说明**设置音量需要在startAudioAccompany后才能生效。\n​\n\n\n- **getAudioAccompanyPublishVolume**：获取推流出去的混音音量\n```javascript\naliElectronRtc.getAudioAccompanyPublishVolume()\n```\n返回说明：返回推流出去的混音音量。\n​\n\n\n- **setAudioAccompanyPlayoutVolume**：设置混音之后本地播放的音量\n```javascript\naliElectronRtc.setAudioAccompanyPlayoutVolume(volume)\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| volume | Number | 混音音量，取值范围：[0,100]。 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n**说明**设置音量需要在startAudioAccompany后才能生效。\n​\n\n\n- **getAudioAccompanyPlayoutVolume**：获取混音本地播放的音量\n```javascript\naliElectronRtc.getAudioAccompanyPlayoutVolume()\n```\n返回说明：当前混音本地播放的音量大小。\n​\n\n\n- **pauseAudioAccompany**：暂停混音\n```javascript\naliElectronRtc.pauseAudioAccompany()\n```\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **resumeAudioAccompany**：重新开始混音\n```javascript\naliElectronRtc.resumeAudioAccompany()\n```\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **getAudioAccompanyDuration**：获取伴奏文件时长\n```javascript\naliElectronRtc.getAudioAccompanyDuration()\n```\n返回说明：返回当前伴奏文件时长，单位为毫秒。\n​\n\n\n- **getAudioAccompanyCurrentPosition**：获取音乐文件播放进度\n```javascript\naliElectronRtc.getAudioAccompanyCurrentPosition()\n```\n返回说明：当前音乐文件播放进度，单位为毫秒。\n​\n\n\n- **setAudioAccompanyPosition**：设置音频文件的播放位置\n```javascript\naliElectronRtc.setAudioAccompanyPosition(pos)\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| pos | Number | 进度条位置，单位为毫秒。 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **enableSystemAudioRecording**：设置是否开启系统声音采集推送。\n\n```javascript\naliElectronRtc.enableSystemAudioRecording(enable, path)\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| enable | Boolean | 是否开启系统声音采集推送 |\n| path | String | windows 可以设置为第三方播放器路径, mac需要设置为虚拟声卡设备名才能采集系统声音，关闭时需要传入要切换回的扬声器名称 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **isSystemAudioRecording**：当前是否开启系统声音采集推送。\n```javascript\naliElectronRtc.isSystemAudioRecording()\n```\n返回说明：true表示开启状态， false表示关闭状态。\n​\n\n\n- **setSystemAudioRecordingVolume**：设置系统声音采集推送音量。\n```javascript\naliElectronRtc.setSystemAudioRecordingVolume(volume)\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| volume | Number | 设置音量。 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **getSystemAudioRecordingVolume**：获取当前设置系统声音采集推送音量。\n\n```javascript\naliElectronRtc.getSystemAudioRecordingVolume()\n```\n\n返回说明：返回系统音量。\n**说明**需要开启系统声音采集推送后才能设置，否则设置失败。\n​\n\n##### 音频设备管理接口\n\n- **getAudioCaptureList**：获取系统中的录音设备列表。\n```javascript\naliElectronRtc.getAudioCaptureList()\n```\n返回说明：返回系统中的录音设备列表。\n​\n\n\n- **getCurrentAudioCaptureName**：获取使用的录音设备名称。\n\n```javascript\naliElectronRtc.getCurrentAudioCaptureName()\n```\n\n返回说明：返回当前音频采集设备名。\n​\n\n\n- **getCurrentAudioCaptureID**：获取使用的录音设备ID。\n\n```javascript\naliElectronRtc.getCurrentAudioCaptureID()\n```\n\n返回说明：返回当前音频采集设备ID。\n​\n\n\n- **setCurrentAudioCaptureName**：选择录音设备名称。\n\n```javascript\naliElectronRtc.setCurrentAudioCaptureName()\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| captureName | String | 音频采集设备名称。 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **setCurrentAudioCaptureID**：选择录音设备ID。\n\n```javascript\naliElectronRtc.setCurrentAudioCaptureID()\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| captureID | String | 音频采集设备名称。 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **getAudioPlayerList**：获取系统中的扬声器列表。\n\n```javascript\naliElectronRtc.getAudioPlayerList()\n```\n\n返回说明：返回音频播放设备列表。\n​\n\n\n- **getCurrentAudioPlayerName**：获取当前使用的扬声器名称。\n\n```javascript\naliElectronRtc.getCurrentAudioPlayerName()\n```\n\n返回说明：返回当前音频播放设备名。\n​\n\n\n- **getCurrentAudioPlayerID**：获取当前使用的扬声器ID。\n\n```javascript\naliElectronRtc.getCurrentAudioPlayerID()\n```\n\n返回说明：返回当前音频播放设备ID。\n​\n\n\n- **setCurrentAudioPlayerName**：选择扬声器名称。\n\n```javascript\naliElectronRtc.setCurrentAudioPlayerName()\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| playerName | String | 音频播放设备名称。 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **setCurrentAudioPlayerID**：选择扬声器ID。\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| playerID | String | 音频播放设备ID。 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **startTestAudioRecordByName**：开始测试音频采集设备\n\n```javascript\naliElectronRtc.startTestAudioRecordByName(deviceName, callbackInterval)\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| deviceName | String | 音频采集设备名称。 |\n| callbackInterval | Number | 音量回调频率，单位：毫秒，默认值200毫秒。 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n**说明**开始测试后音量信息通过onAudioDeviceRecordLevel回调返回。\n​\n\n\n- **startTestAudioRecordById**：开启麦克风设备测试（按设备ID）。\n\n```javascript\naliElectronRtc.startTestAudioRecordById(deviceId, callbackInterval)\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| deviceId | String | 设备ID。 |\n| callbackInterval | Number | 音量回调频率，单位：毫秒，默认值200毫秒。 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n**说明**开始测试后音量信息通过onAudioDeviceRecordLevel回调返回。\n​\n\n\n- **stopTestAudioRecord**：停止测试音频采集设备。\n\n```javascript\naliElectronRtc.stopTestAudioRecord()\n```\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **startTestAudioPlayoutByName**：开始测试音频播放设备。\n\n```javascript\naliElectronRtc.startTestAudioPlayoutByName(deviceName, filePath, callbackInterval, loopCycles)\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| deviceName | String | 音频播放设备名称。 |\n| filePath | String | 音频文件路径。 |\n| callbackInterval | Number | 音量回调频率，单位：毫秒，默认值200毫秒。 |\n| loopCycles | Number | 重复播放次数，-1表示循环播放。 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **startTestAudioPlayoutById**：开启扬声器设备测试（按设备ID）。\n\n```javascript\naliElectronRtc.startTestAudioPlayoutById(deviceId, filePath, callbackInterval, loopCycles)\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| deviceId | String | 设备ID。 |\n| filePath | String | 音频文件路径。 |\n| callbackInterval | Number | 音量回调频率，单位：毫秒，默认值200毫秒。 |\n| loopCycles | Number | 重复播放次数，-1表示循环播放。 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n**说明**开始测试后音量信息通过onAudioDevicePlayoutLevel回调返回。\n​\n\n\n- **stopTestAudioPlayout**：停止测试音频播放设备。\n\n```javascript\naliElectronRtc.stopTestAudioPlayout()\n```\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n##### 视频设备管理接口\n\n- **getCameraList**：获取摄像头列表。\n```javascript\naliElectronRtc.getCameraList()\n```\n返回说明：返回摄像头列表。\n​\n\n\n- **getCurrentCameraName**：获取当前使用的摄像头名称。\n```javascript\naliElectronRtc.getCurrentCameraName()\n```\n返回说明：返回当前使用的摄像头名称。\n​\n\n\n- **getCurrentCameraID**：获取当前使用的摄像头ID。\n\n```javascript\naliElectronRtc.getCurrentCameraID()\n```\n返回说明：返回当前使用的摄像头ID。\n​\n\n\n- **setCurrentCameraName**：选择摄像头名称。\n\n```javascript\naliElectronRtc.setCurrentCameraName(cameraName)\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| cameraName | String | 摄像头名称。 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **setCurrentCameraID**：选择摄像头ID。\n\n```javascript\naliElectronRtc.setCurrentCameraID(cameraID)\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| cameraID | String | 摄像头ID。 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n##### 预览接口\n\n- **startPreview**：开始本地预览。\n```javascript\naliElectronRtc.startPreview()\n```\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **stopPreview**：停止本地预览。\n```javascript\naliElectronRtc.stopPreview()\n```\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **getUserInfo**：查询远端用户的各种状态。\n```javascript\naliElectronRtc.getUserInfo(uid)\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| uid | String | 用户ID。 |\n\n返回说明\n\n| 返回 | 类型 | 描述 |\n| --- | --- | --- |\n| userInfo | Object | 用户信息 |\n\n\n\n\n- **getSDKVersion**：获取SDK版本号。\n```javascript\naliElectronRtc.getSDKVersion()\n```\n返回说明：返回SDK版本号。\n​\n\n\n- **setClientRole**：设置用户角色。\n```javascript\naliElectronRtc.setClientRole(clientRole)\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| clientRole | AliEngineClientRole | 用户角色类型 |\n\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **getClientRole**：获取用户角色。\n```javascript\naliElectronRtc.getClientRole()\n```\n返回说明：返回当前用户角色。\n​\n\n\n- **startLastmileDetect**：开始网络质量探测。\n```javascript\naliElectronRtc.startLastmileDetect()\n```\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n**说明**此接口需在joinChannel之前调用，探测结果在onLastmileDetectResultWithQuality回调。\n​\n\n\n- **stopLastmileDetect**：停止网络质量探测。\n```javascript\naliElectronRtc.stopLastmileDetect()\n```\n返回说明：0表示方法调用成功，其他表示方法调用失败。\n​\n\n\n- **getCurrentConnectionStatus**：获取当前网络连接状态。\n```javascript\naliElectronRtc.getCurrentConnectionStatus()\n```\n返回说明：返回当前网络连接状态 AliEngineConnectionStatus\n​\n\n\n- **on**：订阅事件\n```javascript\naliElectronRtc.on(event, handler)\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| event | String | 事件名称 |\n| handler | Function | 回调函数 |\n\n- **off**：取消订阅事件\n```javascript\naliElectronRtc.off(event, handler)\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| event | String | 事件名称 |\n| handler | Function | 回调函数 |\n\n### 回调文档\n#### 目录\n| API | 描述 | 支持的最低版本 |\n| --- | --- | --- |\n| onJoinChannelResult | 加入频道结果的回调。 | 2.1.0 |\n| onLeaveChannelResult | 离开频道结果的回调。 | 2.1.0 |\n| onRemoteUserOnLineNotify | 远端用户上线的回调。 | 2.1.0 |\n| onRemoteUserOffLineNotify | 远端用户下线的回调。 | 2.1.0 |\n| onAudioPublishStateChanged | 音频推流变更的回调。 | 2.1.0 |\n| onVideoPublishStateChanged | 视频推流变更的回调。 | 2.1.0 |\n| onDualStreamPublishStateChanged | 次要流推流变更的回调。 | 2.1.0 |\n| onScreenSharePublishStateChangedWithInfo | 屏幕分享推流变更的回调（适用于Mac或windows端）。 | 2.1.0 |\n| onRemoteTrackAvailableNotify | 远端用户音视频流发生变化时的回调。 | 2.1.0 |\n| onAudioSubscribeStateChanged | 音频订阅情况变更的回调。 | 2.1.0 |\n| onVideoSubscribeStateChanged | 相机流订阅情况变更的回调。 | 2.1.0 |\n| onScreenShareSubscribeStateChanged | 屏幕分享流订阅情况变更的回调。 | 2.1.0 |\n| onSubscribeStreamTypeChanged | 大小流订阅情况变更的回调。 | 2.1.0 |\n| onOccurWarning | 警告回调。 | 2.1.0 |\n| onOccurError | 错误回调。 | 2.1.0 |\n| onBye | 被服务器踢出或者频道关闭时的回调。 | 2.1.0 |\n| onAudioDeviceStateChanged | 音频设备状态变更的回调。 | 2.1.0 |\n| onVideoDeviceStateChanged | 视频设备状态变更的回调。 | 2.1.0 |\n| onNetworkQualityChanged | 网络质量变化时的回调。 | 2.1.0 |\n| onUserAudioMuted | 对端用户停止音频数据发送的通知。 | 2.1.0 |\n| onUserVideoMuted | 对端用户发送视频黑帧数据发送的通知。 | 2.1.0 |\n| onUpdateRoleNotify | 用户角色发生改变时的回调。 | 2.1.0 |\n| onAudioPlayingStateChanged | 伴奏播放的回调。 | 2.1.0 |\n| onLastmileDetectResultWithQuality | 网络质量探测的回调。 | 2.1.0 |\n| onAudioDeviceRecordLevel | 音频采集设备测试的回调。 | 2.1.0 |\n| onAudioDevicePlayoutLevel | 音频播放设备测试回调。 | 2.1.0 |\n| onAudioDevicePlayoutEnd | 音频播放设备测试结束（音频文件播放完毕）时的回调。 | 2.1.0 |\n| onStats | 当前会话统计信息回调（2s触发一次）。 | 2.1.0 |\n| onLocalVideoStats | 本地视频统计信息回调（2s触发一次）。 | 2.1.0 |\n| onRemoteVideoStats | 远端视频统计信息回调（2s触发一次）。 | 2.1.0 |\n| onLocalAudioStats | 本地音频统计信息回调（2s触发一次）。 | 2.1.0 |\n| onRemoteAudioStats | 远端音频统计信息回调（2s触发一次）。 | 2.1.0 |\n| onMediaRecordEvent | 录制事件回调。 | 2.1.0 |\n| onAudioVolumeCallback | 用户音量大小的回调。 | 2.1.0 |\n| onActiveSpeaker | 订阅的当前说话人。 | 2.1.0 |\n\n\n\n#### 回调详情\n#### \n\n\n- **onJoinChannelResult**：加入频道结果的回调。\n```javascript\naliElectronRtc.on(\"onJoinChannelResult\", (result, channel, elapsed)=> {\n\t// ...\n})\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| result | Number | 加入频道结果，成功返回0，失败返回错误码。 |\n| channel | String | 频道ID。 |\n| elapsed | Number | 加入频道耗时。 |\n\n\n\n\n- **onLeaveChannelResult**：离开频道结果的回调。调用leaveChannel接口后返回，如果leaveChannel后直接释放SDK，将不会收到此回调。\n```javascript\naliElectronRtc.on(\"onJoinChannelResult\", (result)=> {\n\t// ...\n})\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| result | Number | 成功返回0，失败返回错误码信息。 |\n\n\n\n\n- **onRemoteUserOnLineNotify**：远端用户上线的回调。\n```javascript\naliElectronRtc.on(\"onRemoteUserOnLineNotify\", (uid, elapsed)=> {\n\t// ...\n})\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| uid | String | 远端用户ID。 |\n| elapsed | Number | 用户加入频道时的耗时。 |\n\n\n\n\n- **onRemoteUserOffLineNotify**：远端用户下线的回调。\n```javascript\naliElectronRtc.on(\"OnRemoteUserOffLineNotify\", (uid, reason)=> {\n\t// ...\n})\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| uid | String | 远端用户ID。 |\n| reason | AliEngineUserOfflineReason | 用户离线的原因。 |\n\n\n\n\n- **onAudioPublishStateChanged**：音频推流变更的回调。\n```javascript\naliElectronRtc.on(\"onAudioPublishStateChanged\", (oldState, newState, elapseSinceLastState, channel)=> {\n\t// ...\n})\n```\n| 名称 | 类型 | 描述 |\n| --- | --- | --- |\n| oldState | AliEnginePublishState | 之前的推流状态。 |\n| newState | AliEnginePublishState | 当前的推流状态。 |\n| elapseSinceLastState | Number | 状态变更时间间隔。 |\n| channel | String | 当前频道ID。 |\n\n\n\n\n- **onVideoPublishStateChanged**：视频推流变更的回调。\n```javascript\naliElectronRtc.on(\"onVideoPublishStateChanged\", (oldState, newState, elapseSinceLastState, channeluid, elapsed)=> {\n\t// ...\n})\n```\n| 名称 | 类型 | 描述 |\n| --- | --- | --- |\n| oldState | AliEnginePublishState | 之前的推流状态。 |\n| newState | AliEnginePublishState | 当前的推流状态。 |\n| elapseSinceLastState | Number | 状态变更时间间隔。 |\n| channel | String | 当前频道ID。 |\n\n\n\n\n- **onDualStreamPublishStateChanged**：次要流推流变更的回调。\n```javascript\naliElectronRtc.on(\"onDualStreamPublishStateChanged\", (oldState, newState, elapseSinceLastState, channel)=> {\n\t// ...\n})\n```\n| 名称 | 类型 | 描述 |\n| --- | --- | --- |\n| oldState | AliEnginePublishState | 之前的推流状态。 |\n| newState | AliEnginePublishState | 当前的推流状态。 |\n| elapseSinceLastState | Number | 状态变更时间间隔。 |\n| channel | String | 当前频道ID。 |\n\n\n\n- **onScreenSharePublishStateChangedWithInfo**：屏幕分享推流变更的回调\n```javascript\naliElectronRtc.on(\"onRemoteUserOnLineNotify\", (oldState, newState, elapseSinceLastState, channel, screenShareInfo)=> {\n\t// ...\n})\n```\n| 名称 | 类型 | 描述 |\n| --- | --- | --- |\n| oldState | AliEnginePublishState | 之前的推流状态。 |\n| newState | AliEnginePublishState | 当前的推流状态。 |\n| elapseSinceLastState | Number | 状态变更时间间隔。 |\n| channel | String | 当前频道ID。 |\n| screenShareInfo | AliEngineScreenShareInfo | 本次屏幕共享推流信息。 |\n\n\n\n\n- **onRemoteTrackAvailableNotify**：远端用户音视频流发生变化时的回调。\n```javascript\naliElectronRtc.on(\"onRemoteTrackAvailableNotify\", (uid, audioTrack, videoTrack)=> {\n\t// ...\n})\n```\n| 名称 | 类型 | 描述 |\n| --- | --- | --- |\n| uid | String | 远端用户ID。 |\n| audioTrack | AliEngineAudioTrack | 远端用户发生变化后的音频流。 |\n| videoTrack | AliEngineVideoTrack | 远端用户发生变化后的视频流。 |\n\n\n\n\n- **onAudioSubscribeStateChanged**：音频订阅情况变更的回调。\n```javascript\naliElectronRtc.on(\"onAudioSubscribeStateChanged\", (uid, oldState, newState, elapseSinceLastState, channel)=> {\n\t// ...\n})\n```\n| 名称 | 类型 | 描述 |\n| --- | --- | --- |\n| uid | String | 远端用户ID。 |\n| oldState | AliEngineSubscribeState | 之前的订阅状态。 |\n| newState | AliEngineSubscribeState | 当前的订阅状态。 |\n| elapseSinceLastState | Number | 状态变更时间间隔。 |\n| channel | String | 当前频道ID。 |\n\n\n\n\n- **onVideoSubscribeStateChanged**：相机流订阅情况变更的回调。\n```javascript\naliElectronRtc.on(\"onVideoSubscribeStateChanged\", (uid, oldState, newState, elapseSinceLastState, channel)=> {\n\t// ...\n})\n```\n| 名称 | 类型 | 描述 |\n| --- | --- | --- |\n| uid | String | 远端用户ID。 |\n| oldState | AliEngineSubscribeState | 之前的订阅状态。 |\n| newState | AliEngineSubscribeState | 当前的订阅状态。 |\n| elapseSinceLastState | Number | 状态变更时间间隔。 |\n| channel | String | 当前频道ID。 |\n\n\n\n\n- onScreenShareSubscribeStateChanged：屏幕分享流订阅情况变更的回调。\n```javascript\naliElectronRtc.on(\"onRemoteUserOnLineNotify\", (uid, oldState, newState, elapseSinceLastState, channel)=> {\n\t// ...\n})\n```\n| 名称 | 类型 | 描述 |\n| --- | --- | --- |\n| uid | String | 远端用户ID。 |\n| oldState | AliEngineSubscribeState | 之前的订阅状态。 |\n| newState | AliEngineSubscribeState | 当前的订阅状态。 |\n| elapseSinceLastState | Number | 状态变更时间间隔。 |\n| channel | String | 当前频道ID。 |\n\n\n\n\n- **onSubscribeStreamTypeChanged**：大小流订阅情况变更的回调。\n```javascript\naliElectronRtc.on(\"onSubscribeStreamTypeChanged\", (uid, oldStreamType, newStreamType, elapseSinceLastState, channel)=> {\n\t// ...\n})\n```\n| 名称 | 类型 | 描述 |\n| --- | --- | --- |\n| uid | String | 远端用户ID。 |\n| oldStreamType | AliEngineVideoStreamType | 之前的订阅状态。 |\n| newStreamType | AliEngineVideoStreamType | 当前的订阅状态。 |\n| elapseSinceLastState | Number | 状态变更时间间隔。 |\n| channel | String | 当前频道ID。 |\n\n\n\n\n- **onOccurWarning**：警告回调。目前警告回调可以忽略，不会影响正常使用。\n```javascript\naliElectronRtc.on(\"onOccurWarning\", (warn, msg)=> {\n\t// ...\n})\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| warn | Number | 警告类型。 |\n| msg | String | 警告说明。 |\n\n\n\n\n- **onOccurError**：错误回调。\n```javascript\naliElectronRtc.on(\"onOccurError\", (error, msg)=> {\n\t// ...\n})\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| error | Number | 错误类型。 当参数error为16908812或33620229时，您需要先释放实例，重新创建SDK实例，再调用joinChannel加入频道。 |\n| msg | String | 错误说明。 |\n\n\n\n\n- **onBye**：被服务器踢出或者频道关闭时的回调。\n```javascript\naliElectronRtc.on(\"onBye\", (code)=> {\n\t// ...\n})\n```\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| code | Number | onBye类型，详情请参见AliEngineOnByeType。 |\n\n\n\n\n- **onAudioDeviceStateChanged**：音频设备状态变更的回调。\n```javascript\naliElectronRtc.on(\"onAudioDeviceStateChanged\", (deviceInfo, deviceType, deviceState)=> {\n\t// ...\n})\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| deviceInfo | ​AliEngineDeviceInfo | 外接设备信息。 |\n| deviceType | AliEngineExternalDeviceType | 外接设备类型。 |\n| deviceState | AliEngineExternalDeviceState | 外接设备状态。 |\n\n\n\n\n- **onVideoDeviceStateChanged**：视频设备状态变更的回调。\n```javascript\naliElectronRtc.on(\"onVideoDeviceStateChanged\", (deviceInfo, deviceType, deviceState)=> {\n\t// ...\n})\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| deviceInfo | ​[AliEngineDeviceInfo](t2071758.html#li-103) | 外接设备信息。 |\n| deviceType | [AliEngineExternalDeviceType](t2071758.html#li-054) | 外接设备类型。 |\n| deviceState | [AliEngineExternalDeviceState](t2071758.html#li-055) | 外接设备状态。 |\n\n\n\n\n- **onNetworkQualityChanged**：网络质量变化时的回调。\n```javascript\naliElectronRtc.on(\"onNetworkQualityChanged\", (uid, upQuality, downQuality)=> {\n\t// ...\n})\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| uid | String | 网络质量发生变化的用户ID，用户ID为空表示本地，其他表示远端。 |\n| upQuality | [AliEngineNetworkQuality](t2071758.html#li-045) | 上行网络质量。 |\n| downQuality | [AliEngineNetworkQuality](t2071758.html#li-045) | 下行网络质量。 |\n\n\n\n\n- **onConnectionStatusChange**：网络连接状态改变的回调。\n```javascript\naliElectronRtc.on(\"onConnectionStatusChange\", (status, reason)=> {\n\t// ...\n})\n```\n| 名称 | 类型 | 描述 |\n| --- | --- | --- |\n| status | Number | 当前网络链接状态，详情请参见[AliEngineConnectionStatus](t2071758.html#li-010)。 |\n| reason | Number | 网络链接状态改变原因，详情请参见[AliEngineConnectionStatusChangeReason](t2071758.html#li-011)。 |\n\n\n\n\n- **onUserAudioMuted**：对端用户停止音频数据发送的通知。\n```javascript\naliElectronRtc.on(\"onUserAudioMuted\", (uid, isMute)=> {\n\t// ...\n})\n```\n| 名称 | 类型 | 描述 |\n| --- | --- | --- |\n| uid | String | 执行muteAudio的用户。 |\n| isMute | Boolean | 是否静音 |\n\n\n\n\n- **onUserVideoMuted**：对端用户发送视频黑帧数据发送的通知。\n```javascript\naliElectronRtc.on(\"onUserVideoMuted\", (uid, isMute)=> {\n\t// ...\n})\n```\n| 名称 | 类型 | 描述 |\n| --- | --- | --- |\n| uid | String | 执行EnableLocalVideo的用户。 |\n| isMute | Boolean | 是否打开相机流采集 |\n\n\n\n\n- **onUpdateRoleNotify**：用户角色发生改变时的回调。\n```javascript\naliElectronRtc.on(\"onUpdateRoleNotify\", (oldRole, newRole)=> {\n\t// ...\n})\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| oldRole | AliEngineClientRole | 切换前的角色。 |\n| newRole | AliEngineClientRole | 切换后的角色。 |\n\n\n\n\n- **onAudioPlayingStateChanged**：伴奏播放的回调。\n```javascript\naliElectronRtc.on(\"onAudioPlayingStateChanged\", (type, errorCode)=> {\n\t// ...\n})\n```\n| 名称 | 类型 | 描述 |\n| --- | --- | --- |\n| type | AliEngineAudioPlayingType | 当前播放状态。 |\n| errorCode | AliEngineAudioPlayingErrorCode | 错误码。 |\n\n\n\n\n- **onLastmileDetectResultWithQuality**：网络质量探测的回调。\n```javascript\naliElectronRtc.on(\"onLastmileDetectResultWithQuality\", (networkQuality)=> {\n\t// ...\n})\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| networkQuality | AliEngineNetworkQuality | 网络质量。 |\n\n\n\n\n- **onAudioDeviceRecordLevel**：音频采集设备测试的回调。\n```javascript\naliElectronRtc.on(\"onAudioDeviceRecordLevel\", (level)=> {\n\t// ...\n})\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| level | Number | 音频采集设备音量值。 |\n\n\n\n\n- **onAudioDevicePlayoutLevel**：音频播放设备测试回调。\n```javascript\naliElectronRtc.on(\"onAudioDevicePlayoutLevel\", (level)=> {\n\t// ...\n})\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| level | Number | 音频采集设备音量值。 |\n\n\n\n\n- **onAudioDevicePlayoutEnd**：音频播放设备测试结束（音频文件播放完毕）时的回调。\n```javascript\naliElectronRtc.on(\"onAudioDevicePlayoutEnd\", ()=> {\n\t// ...\n})\n```\n\n\n\n- **onStats**：当前会话统计信息回调（2s触发一次）。\n```javascript\naliElectronRtc.on(\"onStats\", (stats)=> {\n\t// ...\n})\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| stats | AliEngineStats | 会话统计信息。 |\n\n\n\n\n- **onLocalVideoStats**：本地视频统计信息回调（2s触发一次）。\n```javascript\naliElectronRtc.on(\"onLocalVideoStats\", (localVideoStats)=> {\n\t// ...\n})\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| localVideoStats | AliEngineLocalVideoStats​ | 本地视频统计信息。 |\n\n\n\n\n- **onRemoteVideoStats**：远端视频统计信息回调（2s触发一次）。\n```javascript\naliElectronRtc.on(\"onRemoteVideoStats\", (remoteVideoStats)=> {\n\t// ...\n})\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| remoteVideoStats | ​AliEngineRemoteVideoStats | 远端视频统计信息。 |\n\n\n\n\n- **onLocalAudioStats**：本地音频统计信息回调（2s触发一次）。\n```javascript\naliElectronRtc.on(\"onLocalAudioStats\", (localAudioStats)=> {\n\t// ...\n})\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| localAudioStats | AliEngineLocalAudioStats | 本地音频统计信息。 |\n\n\n\n\n- **onRemoteAudioStats**：远端音频统计信息回调（2s触发一次）。\n```javascript\naliElectronRtc.on(\"onRemoteAudioStats\", (remoteAudioStats)=> {\n\t// ...\n})\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| remoteAudioStats | AliEngineRemoteAudioStats | 远端音频统计信息。 |\n\n\n\n\n- **onMediaRecordEvent**：录制事件回调。\n```javascript\naliElectronRtc.on(\"onMediaRecordEvent\", (event, filePath)=> {\n\t// ...\n})\n```\n| 参数 | 类型 | 说明 |\n| --- | --- | --- |\n| event | Number | 录制事件。取值：0：录制开始。1：录制结束。2：打开文件失败。3：写文件失败。|\n| filePath | String | 录制文件路径。 |\n\n\n\n\n- **onAudioVolumeCallback**：用户音量大小的回调。\n```javascript\naliElectronRtc.on(\"onAudioVolumeCallback\", (volumeInfo)=> {\n\t// ...\n})\n```\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| volumeInfo | AliEngineUserVolumeInfo | 说话人结构体信息。AliEngineUserVolumeInfo中userid为0表示本地推流音量，1表示远端混音音量，其他表示用户的音量。 |\n\n\n\n\n- **onActiveSpeaker**：订阅的当前说话人。当前时间段说话可能性最大的用户uid。如果返回的uid为0，则默认为本地用户。\n```javascript\naliElectronRtc.on(\"onActiveSpeaker\", (uid)=> {\n\t// ...\n})\n```\n| 名称 | 类型 | 描述 |\n| --- | --- | --- |\n| uid | String | 用户ID。 |\n\n\n\n### 数据类型\n#### 目录\n\n\n| 数据类型 | 描述 | 支持的最低版本 |\n| --- | --- | --- |\n| AliEngineAudioPlayingType | 音乐伴奏播放状态。 | 2.1.0 |\n| AliEngineAudioPlayingErrorCode | 音乐伴奏播放错误码。 | 2.1.0 |\n| AliEngineConnectionStatus | 网络连接状态。 | 2.1.0 |\n| AliEngineConnectionStatusChangeReason | 网络连接状态变更原因。 | 2.1.0 |\n| AliEnginePublishState | 推流状态。 | 2.1.0 |\n| AliEngineSubscribeState | 订阅状态。 | 2.1.0 |\n| AliEngineVideoTrack | 视频流类型。 | 2.1.0 |\n| AliEngineAudioTrack | 音频流类型。 | 2.1.0 |\n| AliEngineVideoStreamType | 相机流类型。 | 2.1.0 |\n| AliEngineVideoRecordSource | 录制视频数据源。 | 2.1.0 |\n| AliEngineRotationMode | 视频旋转角度。 | 2.1.0 |\n| AliEngineAudioSampleRate | 音频采样率类型。 | 2.1.0 |\n| AliEngineNetworkQuality | 网络质量。 | 2.1.0 |\n| AliEngineAuthInfo | 鉴权信息。 | 2.1.0 |\n| AliEngineOnByeType | OnBye类型。 | 2.1.0 |\n| AliEngineUserOfflineReason | 用户离线原因。 | 2.1.0 |\n| AliEngineScreenShareType | 桌面分享类型。 | 2.1.0 |\n| AliEngineClientRole | 角色类型。 | 2.1.0 |\n| AliEngineExternalDeviceType | 外接设备类型。 | 2.1.0 |\n| AliEngineExternalDeviceState | 外接设备状态。 | 2.1.0 |\n| AliEngineMuteLocalAudioMode | 本地静音模式。 | 2.1.0 |\n| AliEngineUserVolumeInfo | 用户音量信息。 | 2.1.0 |\n| AliEngineScreenShareRegion | 屏幕共享区域。 | 2.1.0 |\n| AliEngineScreenShareEncoderConfiguration | 屏幕流码属性设置。 | 2.1.0 |\n| AliEngineScreenShareConfig | 屏幕共享参数配置。 | 2.1.0 |\n| AliEngineScreenShareInfo | 屏幕共享配置信息。 | 2.1.0 |\n| AliEngineStats | 会话数据统计信息。 | 2.1.0 |\n| AliEngineLocalVideoStats | 本地视频统计信息。 | 2.1.0 |\n| AliEngineRemoteVideoStats | 远端视频统计信息。 | 2.1.0 |\n| AliEngineLocalAudioStats | 本地音频统计信息。 | 2.1.0 |\n| AliEngineRemoteAudioStats | 远端音频统计信息。 | 2.1.0 |\n| AliEngineAudioProfile | 音频编码配置。 | 2.1.0 |\n| AliEngineAudioScenario | 音频场景。 | 2.1.0 |\n| AliEngineRecordType | 录制类型。 | 2.1.0 |\n| AliEngineRecordFormat | 录制格式。 | 2.1.0 |\n| AliEngineAudioQuality | 录制音频质量。 | 2.1.0 |\n| AliEngineVideoQuality | 录制视频质量。 | 2.1.0 |\n| AliEngineRecordAudioConfig | 录制音频设置。 | 2.1.0 |\n| AliEngineRecordVideoConfig | 录制视频设置。 | 2.1.0 |\n| AliEngineFrameRate | 视频帧率。 | 2.1.0 |\n| AliEngineVideoEncoderBitrate | 视频编码码率。 | 2.1.0 |\n| AliEngineVideoEncoderOrientationMode | 视频输出模式。 | 2.1.0 |\n| AliEngineVideoMirrorMode | 视频镜像模式。 | 2.1.0 |\n| AliEngineVideoDimensions | 视频分辨率。 | 2.1.0 |\n| AliEngineVideoEncoderConfiguration | 视频编码属性设置。 | 2.1.0 |\n| AliEngineChannelProfile | 频道类型。 | 2.1.0 |\n| AliEngineErrorCode | SDK错误码。 | 2.1.0 |\n| AliEngineBeautyConfig | 美颜设置。 | 2.1.0 |\n| AliEngineDeviceInfo | 设备信息。 | 2.1.0 |\n| ChannelMediaOptions | 入会选项 | 2.1.0 |\n\n\n\n#### 数据详情\n注：枚举数据没有标注枚举值的默认按照表格从0开始枚举递增\n​\n\n\n- **AliEngineAudioPlayingType**：音乐伴奏播放状态。\n\n\n| 枚举名 | 描述 | 枚举值 |\n| --- | --- | --- |\n| AliEngineAudioPlayingStarted | 开始播放。 | 100 |\n| AliEngineAudioPlayingStopped | 停止播放。 | 101 |\n| AliEngineAudioPlayingPaused | 暂停播放。 | 102 |\n| AliEngineAudioPlayingResumed | 重启播放。 | 103 |\n| AliEngineAudioPlayingEnded | 播放结束。 | 104 |\n| AliEngineAudioPlayingBuffering | 播放缓冲中。 | 105 |\n| AliEngineAudioPlayingBufferingEnd | 播放缓冲完。 | 106 |\n| AliEngineAudioPlayingFailed | 播放失败。 | 107 |\n\n\n\n\n- **AliEngineAudioPlayingErrorCode**：音乐伴奏播放错误码。\n\n\n| 枚举名 | 描述 | 枚举值 |\n| --- | --- | --- |\n| AliEngineAudioPlayingNoError | 伴奏播放正常。 | 0 |\n| AliEngineAudioPlayingOpenFailed | 伴奏播放打开失败。 | -100 |\n| AliEngineAudioPlayingDecodeFailed | 伴奏播放解码失败。 | -101 |\n\n\n\n\n- **AliEngineConnectionStatus**：网络连接状态。\n\n\n| 枚举名 | 描述 |\n| --- | --- |\n| AliEngineConnectionInit | 初始化完成。 |\n| AliEngineConnectionDisconnected | 网络连接断开。 |\n| AliEngineConnectionConnecting | 建立网络连接中。 |\n| AliEngineConnectionConnected | 网络已连接。 |\n| AliEngineConnectionReconnecting | 重新建立网络连接中。 |\n| AliEngineConnectionFailed | 网络连接失败。 |\n\n\n\n\n- **AliEngineConnectionStatusChangeReason**：网络连接状态变更原因。\n\n\n| 枚举名 | 描述 |\n| --- | --- |\n| AliEngineConnectionChangedDummyReason | 未知原因。 |\n| AliEngineConnectionMediaPathChanged | 媒体通道变更。 |\n| AliEngineConnectionSignalingHeartbeatTimeout | 心跳超时。 |\n| AliEngineConnectionSignalingHeartbeatAlive | 心跳恢复。 |\n| AliEngineConnectionSignalingHttpdnsResolved | DNS解析成功。 |\n| AliEngineConnectionSignalingHttpdnsFailure | DNS解析失败。 |\n| AliEngineConnectionSignalingGslbFailure | GSLB请求失败。 |\n| AliEngineConnectionSignalingGslbSucccess | GSLB请求成功。 |\n| AliEngineConnectionSignalingJoinChannelFailure | 加入频道失败。 |\n| AliEngineConnectionSignalingJoinChannelSuccess | 加入频道成功。 |\n| AliEngineConnectionSignalingLeaveChannel | 离开频道。 |\n| AliEngineConnectionSignalingConnecting | 信令建立连接。 |\n\n\n\n\n- **AliEnginePublishState**：推流状态。\n\n\n| 枚举名 | 描述 |\n| --- | --- |\n| AliEngineStatsPublishIdle | 初始状态。 |\n| AliEngineStatsNoPublish | 未推流。 |\n| AliEngineStatsPublishing | 推流中。 |\n| AliEngineStatsPublished | 已推流。 |\n\n\n\n\n- **AliEngineSubscribeState**：订阅状态。\n\n\n| 枚举名 | 描述 |\n| --- | --- |\n| AliEngineStatsSubscribeIdle | 初始状态。 |\n| AliEngineStatsNoSubscribe | 未订阅。 |\n| AliEngineStatsSubscribing | 订阅中。 |\n| AliEngineStatsSubscribed | 已订阅。 |\n\n\n\n\n- **AliEngineVideoTrack**：视频流的类型。\n\n\n| 枚举名 | 描述 |\n| --- | --- |\n| AliEngineVideoTrackNo | 无视频流。 |\n| AliEngineVideoTrackCamera | 摄像头流。 |\n| AliEngineVideoTrackScreen | 屏幕共享流。 |\n| AliEngineVideoTrackBoth | 摄像头和屏幕共享。 |\n\n\n\n\n- **AliEngineAudioTrack**：音频流的类型。\n\n\n| 枚举名 | 描述 |\n| --- | --- |\n| AliEngineAudioTrackNo | 无音频流。 |\n| AliEngineAudioTrackMic | 麦克风流。 |\n\n\n\n\n- **AliEngineVideoStreamType**：相机流类型。\n\n\n| 枚举名 | 描述 |\n| --- | --- |\n| AliEngineVideoStreamTypeNone | 无视频流。 |\n| AliEngineVideoStreamTypeHigh | 大流。 |\n| AliEngineVideoStreamTypeLow | 小流。 |\n\n\n\n\n- **AliEngineVideoRecordSource**：录制视频数据源。\n\n\n| 枚举名 | 描述 |\n| --- | --- |\n| AliEngineVideoRecordSourceCamera | 摄像头流。 |\n| AliEngineVideoRecordSourceScreenShare | 屏幕共享流。 |\n| AliEngineVideoRecordSourceBoth | 摄像头和屏幕共享流。 |\n\n\n\n\n- **AliEngineRotationMode**：视频旋转角度。\n\n\n| 枚举名 | 描述 | 枚举值 |\n| --- | --- | --- |\n| AliEngineRotationMode_0 | 旋转0度。 | 0 |\n| AliEngineRotationMode_90 | 旋转90度。 | 90 |\n| AliEngineRotationMode_180 | 旋转180度。 | 180 |\n| AliEngineRotationMode_270 | 旋转270度。 | 270 |\n\n\n\n\n- **AliEngineAudioSampleRate**：音频采样率类型。\n\n\n| 枚举名 | 描述 |\n| --- | --- |\n| AliEngineAudioSampleRate_8000 | 8000Hz。 |\n| AliEngineAudioSampleRate_11025 | 11025Hz。 |\n| AliEngineAudioSampleRate_16000 | 16000Hz。 |\n| AliEngineAudioSampleRate_22050 | 22050Hz。 |\n| AliEngineAudioSampleRate_32000 | 32000Hz。 |\n| AliEngineAudioSampleRate_44100 | 44100Hz。 |\n| AliEngineAudioSampleRate_48000 | 48000Hz。 |\n\n\n\n\n- **AliEngineNetworkQuality**：网络质量。\n\n\n| 枚举名 | 描述 |\n| --- | --- |\n| AliEngineNetworkQualityExcellent | 网络极好，流畅度清晰度质量好。 |\n| AliEngineNetworkQualityGood | 网络质量好，流畅度清晰度和极好差不多。 |\n| AliEngineNetworkQualityPoor | 网络质量较差，音视频流畅度清晰度有瑕疵，不影响沟通。 |\n| AliEngineNetworkQualityBad | 网络质量差，视频卡顿严重，音频能正常沟通。 |\n| AliEngineNetworkQualityVeryBad | 网络质量极差，基本无法沟通。 |\n| AliEngineNetworkQualityDisconnect | 网络中断。 |\n| AliEngineNetworkQualityUnknow | 未知。 |\n\n\n\n\n- **AliEngineAuthInfo**：鉴权信息\n\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| channel | String | 频道号。 |\n| userid | String | 用户ID。 |\n| appid | String | 应用ID。 |\n| nonce | String | 令牌随机码。 |\n| token | String | 令牌。 |\n| timestamp | Number | 时间戳。 |\n| gslb | Array<String> | 服务器地址。 |\n| displayName | String | 用户名字 |\n\n\n\n\n- **AliEngineOnByeType**：OnBye类型。\n\n\n| 枚举名 | 描述 | 枚举值 |\n| --- | --- | --- |\n| AliEngineOnByeBeKickOut | 当前用户被踢出频道。 | 1 |\n| AliEngineOnByeChannelTerminated | 频道结束。 | 2 |\n| AliEngineOnByeUserReplaced | 相同用户在其他设备加入频道，当前设备被下线。 | 3 |\n\n\n\n\n- **AliEngineUserOfflineReason**：用户离线原因。\n\n\n| 枚举名 | 描述 |\n| --- | --- |\n| AliEngineUserOfflineQuit | 用户主动离开。 |\n| AliEngineUserOfflineDropped | 因过长时间收不到对方数据包，超时掉线。 |\n| AliEngineUserOfflineBecomeAudience | 用户身份从主播切换为观众时触发。 |\n\n\n\n\n- **AliEngineScreenShareType**：桌面分享类型。\n\n\n| 枚举名 | 描述 |\n| --- | --- |\n| AliEngineScreenShareDesktop | 桌面分享。 |\n| AliEngineScreenShareWindow | 窗口分享。 |\n\n\n\n\n- **AliEngineClientRole**：角色类型。\n\n\n| 枚举名 | 描述 | 枚举值 |\n| --- | --- | --- |\n| AliEngineClientRoleInteractive | 参与互动角色。 | 1 |\n| AliEngineClientRoleLive | 仅观看角色。 | 2 |\n\n\n\n\n- **AliEngineExternalDeviceType**：外接设备类型。\n\n\n| 枚举名 | 描述 | 枚举值 |\n| --- | --- | --- |\n| AliEngineExternalTypeUnknown | 未知类型。 | -1 |\n| AliEngineExternalTypeAudioCapture | 音频采集设备。 | 0 |\n| AliEngineExternalTypeAudioPlayout | 音频播放设备。 | 1 |\n| AliEngineExternalTypeVideoCapture | 视频采集设备。 | 2 |\n\n\n\n\n- **AliEngineExternalDeviceState**：外接设备状态。\n\n\n| 枚举名 | 描述 |\n| --- | --- |\n| AliEngineExternalDeviceAdd | 新增外接设备。 |\n| AliEngineExternalDeviceRemove | 移除外接设备。 |\n\n\n\n\n- **AliEngineMuteLocalAudioMode**：本地静音模式。\n\n\n| 枚举名 | 描述。 |\n| --- | --- |\n| AliEngineMuteLocalAudioModeDefault | 默认静音。 |\n| AliEngineMuteLocalAudioModeMuteAll | 禁止本地所有音。 |\n| AliEngineMuteLocalAudioModeMuteOnlyMic | 禁止麦克风。 |\n\n\n\n\n- **AliEngineUserVolumeInfo**：用户音量信息。\n\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| uid | String | 用户ID（从AppServer下发的唯一标示符）。 |\n| volume | Number | 用户音量，取值范围：[0,255]。 |\n| speechState | Number | 语音状态 0：当前未说话。1：当前在说话。|\n\n\n\n\n- **AliEngineScreenShareRegion**：屏幕共享区域。\n\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| originX | Number | x轴。 |\n| originY | Number | y轴。 |\n| width | Number | 宽度。 |\n| height | Number | 高度。 |\n\n\n\n\n- **AliEngineScreenShareEncoderConfiguration**：屏幕流码属性设置。\n\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| dimensions | AliEngineVideoDimensions | 视频分辨率。 |\n| frameRate | AliEngineFrameRate | 视频帧率。 |\n| bitrate | Number | 码率。 |\n| rotationMode | AliEngineRotationMode | 视频旋转角度。 |\n\n\n\n\n- **AliEngineScreenShareConfig**：屏幕共享参数配置。\n\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| isShareByRegion | Boolean | 是否指定区域，默认false。 |\n| shareRegion | AliEngineScreenShareRegion | 屏幕分享区域。 |\n\n\n\n\n- **AliEngineScreenShareInfo**：屏幕共享配置信息。\n\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| shareType | AliEngineScreenShareType | 桌面分享类型。 |\n| shareSourceId | Number | 共享源ID。 |\n| shareConfig | AliEngineScreenShareConfig | 屏幕共享参数配置。 |\n\n\n\n\n- **AliEngineStats**：会话数据统计信息。\n\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| sentKBitrate | Number | 发送码率。 |\n| rcvdKBitrate | Number | 接收码率。 |\n| sentBytes | Number | 发送字节数。 |\n| rcvdBytes | Number | 接收字节数。 |\n| systemCpu | Number | 电脑CPU使用率。 |\n| appCpu | Number | RTC进程CPU使用率。 |\n| videoRcvdKBitrate | Number | 视频接收码率。 |\n| videoSentKBitrate | Number | 视频发送码率。 |\n| callDuration | Number | 通话时长，单位：秒。 |\n| sentLossRate | Number | 发送丢包率。 |\n| lastmileDelay | Number | 延时时长，单位：毫秒。 |\n\n\n\n\n- **AliEngineLocalVideoStats**：本地视频统计信息。\n\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| track | AliEngineVideoTrack | 视频流类型。 |\n| sentBitrate | Number | 发送码率。 |\n| sentFps | Number | 发送帧率。 |\n| encodeFps | Number | 编码器输出帧率。 |\n\n\n\n\n- **AliEngineRemoteVideoStats**：远端视频统计信息。\n\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| userid | String | 用户ID。 |\n| track | AliEngineVideoTrack | 视频流类型。 |\n| width | Number | 宽。 |\n| height | Number | 高。 |\n| decodeFps | Number | 编码器输出帧率。 |\n| renderFps | Number | 渲染器输出帧率。 |\n| frozenTimes | Number | 卡顿次数。 |\n\n\n\n\n- **AliEngineLocalAudioStats**：本地音频统计信息。\n\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| track | AliEngineAudioTrack | 音频流类型。 |\n| sentBitrate | Number | 发送码率。 |\n| sentSamplerate | Number | 发送的采样率。 |\n| numChannel | Number | 声道数。 |\n| inputLevel | Number | 输入音量。 |\n\n\n\n\n- **AliEngineRemoteAudioStats**：远端音频统计信息。\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| userid | String | 远端用户UID |\n| track | AliEngineAudioTrack | 音频流类型 |\n| quality | Number | 音质 |\n| networkTransportDelay | Number | 网络传输延时 |\n| jitterBufferDelay | Number | jitterBuffer延时 |\n| audioLossRate | Number | 音频丢包率 |\n| rcvdBitrate | Number | 接收码率 |\n| totalFrozenTimes | Number | 卡顿次数 |\n\n\n\n\n- **AliEngineAudioProfile**：音频编码配置。\n\n| 枚举名 | 描述 | 枚举值 |\n| --- | --- | --- |\n| AliEngineLowQualityMode | 低音质。 | 0x0000 |\n| AliEngineBasicQualityMode | 标准音质。 | 0x0001 |\n| AliEngineHighQualityMode | 高音质。 | 0x0010 |\n| AliEngineStereoHighQualityMode | 立体高音质。 | 0x0011 |\n| AliEngineSuperHighQualityMode | 超高音质。 | 0x0012 |\n| AliEngineStereoSuperHighQualityMode | 立体超高音质。 | 0x0013 |\n\n\n\n\n- **AliEngineAudioScenario**：音频场景。\n\n| 枚举名 | 描述 | 枚举值 |\n| --- | --- | --- |\n| AliEngineSceneDefaultMode | 默认场景。 | 0x0000 |\n| AliEngineSceneEducationMode | 教育场景。 | 0x0100 |\n| AliEngineSeneMediaMode | 媒体场景。 | 0x0200 |\n| AliEngineSceneMusicMode | 音乐场景。 | 0x0300 |\n\n\n\n\n- **AliEngineRecordType**：录制类型。\n\n| 枚举名 | 描述 |\n| --- | --- |\n| AliEngineRecordTypeAudio | 纯音频录制。 |\n| AliEngineRecordTypeVideo | 纯视频录制。 |\n| AliEngineRecordTypeBoth | 音视频录制。 |\n\n\n\n\n- **AliEngineRecordFormat**：录制格式。\n\n| 枚举名 | 描述 |\n| --- | --- |\n| AliEngineRecordFormatAAC | AAC文件。 |\n| AliEngineRecordFormatWAV | WAV文件。 |\n| AliEngineRecordFormatMP4 | MP4文件。 |\n\n\n\n\n- **AliEngineAudioQuality**：录制音频质量。\n\n| 枚举名 | 描述 |\n| --- | --- |\n| AliEngineAudioQualityLow | 低。 |\n| AliEngineAudioQualityMidium | 中。 |\n| AliEngineAudioQualityHigh | 高。 |\n\n\n\n\n- **AliEngineVideoQuality**：录制视频质量。\n\n| 枚举名 | 描述 |\n| --- | --- |\n| AliEngineVideoQualityDefault | 默认，和采集保持一致（例如采集能力为1080P，默认就录制1080P的视频流）。 |\n\n\n\n\n- **AliEngineRecordAudioConfig**：录制音频设置。\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| sampleRate | AliEngineAudioSampleRate | 音频采样率。 |\n| quality | AliEngineAudioQuality | 音频质量。 |\n| externalPcmCaptureRecording | Boolean | 外部PCM输入录制。 |\n| externalPcmRenderRecording | Boolean | 外部PCM渲染录制。 |\n\n\n\n\n- **AliEngineRecordVideoConfig**：录制视频设置。\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| fps | Number | 帧率。 |\n| bitrate | Number | 码率。 |\n| quality | AliEngineVideoQuality | 视频质量。 |\n| sourceType | AliEngineVideoRecordSource | 视频源类型。 |\n\n\n\n\n- **AliEngineFrameRate**：视频帧率。\n\n| 枚举值 | 描述 | 枚举值 |\n| --- | --- | --- |\n| AliEngineFrameRateFps5 | 5 fps。 | 5 |\n| AliEngineFrameRateFps10 | 10 fps。 | 10 |\n| AliEngineFrameRateFps15 | 15 fps。 | 15 |\n| AliEngineFrameRateFps20 | 20 fps。 | 20 |\n| AliEngineFrameRateFps25 | 25 fps。 | 25 |\n| AliEngineFrameRateFps30 | 30 fps。 | 30 |\n\n\n\n\n- **AliEngineVideoEncoderBitrate**：视频编码码率。\n\n| 枚举值 | 描述 |\n| --- | --- |\n| AliEngineVideoStandardBitrate | 标准编码码率。 |\n\n\n\n\n- **AliEngineVideoEncoderOrientationMode**：视频输出模式。\n\n| 枚举值 | 描述 |\n| --- | --- |\n| AliEngineVideoEncoderOrientationModeAdaptive | 自适应模式（默认值）。 |\n| AliEngineVideoEncoderOrientationModeFixedLandscape | 横向模式。 |\n| AliEngineVideoEncoderOrientationModeFixedPortrait | 纵向模式。 |\n\n\n\n\n- **AliEngineVideoMirrorMode**：视频镜像模式。\n\n| 枚举值 | 描述 |\n| --- | --- |\n| AliEngineVideoMirrorModeDisabled | 无镜像。 |\n| AliEngineVideoMirrorModeEnable | 镜像。 |\n\n\n\n\n- **AliEngineVideoDimensions**：视频分辨率。\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| width | Number | 宽。 |\n| height | Number | 高。 |\n\n\n\n\n- **AliEngineVideoEncoderConfiguration**：视频编码属性设置。\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| dimensions | AliEngineVideoDimensions | 视频分辨率。 |\n| frameRate | AliEngineFrameRate | 视频帧率。 |\n| bitrate | Number | 码率。 |\n| orientationMode | AliEngineVideoEncoderOrientationMode | 视频输出模式。 |\n| mirrorMode | AliEngineVideoMirrorMode | 视频镜像模式。 |\n| rotationMode | AliEngineRotationMode | 视频旋转模式。 |\n\n\n\n\n- **AliEngineChannelProfile**：频道类型。\n\n| 枚举名 | 描述 |\n| --- | --- |\n| AliEngineCommunication | 通信模式。 |\n| AliEngineInteractiveLive | 互动模式。 |\n\n\n\n\n- **AliEngineErrorCode**：SDK错误码。\n\n| 枚举名 | 描述 |\n| --- | --- |\n| AliEngineErrorJoinBadAppId | App ID不存在。 |\n| AliEngineErrorJoinInvaildAppId | App ID已失效。 |\n| AliEngineErrorJoinBadChannel | 频道不存在。 |\n| AliEngineErrorJoinInvaildChannel | 频道已失效。 |\n| AliEngineErrorJoinBadToken | Token不存在。 |\n| AliEngineErrorJoinTimeout | 加入频道超时。 |\n| AliEngineErrorJoinBadParam | 加入频道参数错误。 |\n| AliEngineErrorJoinChannelFailed | 加入频道失败。 |\n| AliEngineErrorMicOpenFail | 采集设备初始化失败。 |\n| AliEngineErrorSpeakerOpenFail | 播放设备初始化失败。 |\n| AliEngineErrorMicInterrupt | 采集过程中出现异常。 |\n| AliEngineErrorSpeakerInterrupt | 播放过程中出现异常。 |\n| AliEngineErrorMicAuthFail | 麦克风设备授权失败。 |\n| AliEngineErrorMicNotAvailable | 麦克风设备未授权。 |\n| AliEngineErrorSpeakerNotAvailable | 无可用的音频采集设备。 |\n| AliEngineErrorCameraOpenFail | 相机设备初始化失败。 |\n| AliEngineErrorCameraInterrupt | 相机采集中发生异常。 |\n| AliEngineErrorVideoDisplayOpenFail | 渲染设备初始化失败。 |\n| AliEngineErrorVideoDisplayInterrupt | 渲染过程中出现异常。 |\n| AliEngineErrorAudioBufferFull | 音频输入的buffer已满。 |\n| AliEngineErrorVideoBufferFull | 视频输入的buffer已满。 |\n| AliEngineErrorAudioStreamError | 音频流错误。 |\n| AliEngineErrorAudioFileOpenFail | 音频文件打开失败。 |\n| AliEngineErrorAudioFormatNotSupported | 音频格式不支持。 |\n| AliEngineErrorIceConnectionConnectFail | 媒体通道建立失败。 |\n| AliEngineErrorIceConnectionReconnectFail | 媒体通道重连失败。 |\n| AliEngineErrorIceConnectionHeartbeatTimeout | 信令心跳超时。 |\n| AliEngineErrorLowLatencyLiveCommunicationFail | 低延时互动直播信令失败。 |\n| AliEngineErrorLowLatencyLiveMediaSettingFail | 低延时互动直播媒体设置错误。 |\n| AliEngineErrorLowLatencyLiveNoneBroadcaster | 低延时互动直播当前房间没有主播推流。 |\n| AliEngineErrorLowLatencyLiveNeedRestart | 低延时互动直播错误，应用层需要重新创建新的SDK实例。 |\n| AliEngineErrorLowLatencyLiveNeedRestartAgainLater | 低延时互动直播错误，应用层需要稍等一定时间（自定义间隔）重新创建新的SDK实例。 |\n| AliEngineErrorLowLatencyLiveServiceUnavailable | 低延时互动直播服务不可用或者服务降级。 |\n| AliEngineErrorLowLatencyLiveMediaConnectionInterrruption | 低延时互动直播网络中断错误。 |\n| AliEngineErrorUpdateRoleChannel | 更新频道角色失败。 |\n| AliEngineErrorPublishInvaild | 推流无效。 |\n| AliEngineErrorPublishNotJoinChannel | 未入会推流错误。 |\n| AliEngineErrorPublishAudioStreamFailed | 推音频流失败。 |\n| AliEngineErrorPublishVideoStreamFailed | 推视频流失败。 |\n| AliEngineErrorPublishDualStreamFailed | 推双流失败。 |\n| AliEngineErrorPublishScreenShareFailed | 推共享流失败。 |\n| AliEngineErrorPublishScreenShareConfigError | 推共享流配置失败。 |\n| AliEngineErrorSubscribeInvaild | 订阅无效。 |\n| AliEngineErrorSubscribeNotJoinChannel | 未入会订阅错误。 |\n| AliEngineErrorSubscribeAudioStreamFailed | 订阅音频流失败。 |\n| AliEngineErrorSubscribeVideoStreamFailed | 订阅视频流失败。 |\n| AliEngineErrorSubscribeDualStreamFailed | 订阅双流失败。 |\n| AliEngineErrorSubscribeScreenShareFailed | 订阅共享流失败。 |\n| AliEngineErrorInvaildState | SDK内部状态错误。 |\n| AliEngineErrorSessionRemoved | session已经被移除。 |\n| AliEngineErrorInvaildArgument | 无效的参数。 |\n| AliEngineErrorInner | SDK内部错误。 |\n\n\n\n\n- **AliEngineBeautyConfig**：美颜设置。\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| whiteningLevel | Number | 美白，范围：[0,1]，数值越大美白效果越好。 |\n| smoothnessLevel | Number | 磨皮，范围：[0,1]，数值越大磨皮效果越好。 |\n\n\n\n\n- **AliEngineDeviceInfo**：设备信息。\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| deviceName | String | 设备名称。 |\n| deviceID | String | 设备ID。 |\n\n- **ChannelMediaOptions**：入会选项\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| autoSubscribeAudio | Boolean | 自动订阅音频（默认true） |\n| autoSubscribeVideo | Boolean | 自动订阅视频（默认true） |\n\n\n","readmeFilename":"README.md"}