<script charset="utf-8" src="https://webar-static.tencent-cloud.com/ar-sdk/resources/latest/webar-sdk.umd.js"></script>
// 从麦克风和摄像头采集本地音视频流const localStream = TRTC.createStream({ userId, audio: true, video: true });localStream.initialize().then(() => {console.log('initialize localStream success');// 本地流初始化成功,可通过Client.publish(localStream)发布本地音视频流}).catch(error => {console.error('failed initialize localStream ' + error);});
// 获取自定义的streamconst stream = await this.ar.getOutput();// 从指定的音视频源创建本地音视频流const audioTrack = stream.getAudioTracks()[0];const videoTrack = stream.getVideoTracks()[0];const localStream = TRTC.createStream({ userId, audioSource: audioTrack, videoSource: videoTrack });localStream.initialize().then(() => {console.log('initialize localStream success');// 本地流初始化成功,可通过Client.publish(localStream)发布本地音视频流}).catch(error => {console.error('failed initialize localStream ' + error);});
const { ArSdk } = window.AR/** ----- 鉴权配置 ----- *//*** 腾讯云账号 APPID** 进入[腾讯云账号中心](https://console.tencentcloud.com/developer) 即可查看 APPID*/const APPID = ''; // 此处请填写您自己的参数/*** Web LicenseKey** 登录音视频终端 SDK 控制台的[Web License 管理](https://console.tencentcloud.com/vcube/web),创建项目即可获得 LicenseKey*/const LICENSE_KEY = ''; // 此处请填写您自己的参数/*** 计算签名用的密钥 Token** 注意:此处仅用于 DEMO 调试,正式环境中请将 Token 保管在服务端,签名方法迁移到服务端实现,通过接口提供,前端调用拉取签名,参考* [签名方法](https://www.tencentcloud.com/document/product/616/71370?from_cn_redirect=1#.E7.AD.BE.E5.90.8D.E6.96.B9.E6.B3.95)*/const token = ''; // 此处请填写您自己的参数/** ----------------------- *//*** 定义获取签名方法** 注意:此处方案仅适用于 DEMO 调试,正式环境中签名方法推荐在服务端实现,通过接口提供,前端调用拉取签名* 如:* async function () {* return fetch('http://xxx.com/get-ar-sign').then(res => res.json());* };*/const getSignature = function () {const timestamp = Math.round(new Date().getTime() / 1000);const signature = sha256(timestamp + token + APPID + timestamp).toUpperCase();return { signature, timestamp };};let w = 1280;let h = 720;// ar sdk 基础配置参数const config = {camera: { //这个参数表示从本机摄像头开始采集流width: 1280,height:720},auth: {licenseKey: LICENSE_KEY,appId: APPID,authFunc: getSignature},// 初始美颜效果(可选参数)beautify: {whiten: 0.1, // 美白 0-1dermabrasion: 0.5, // 磨皮 0-1lift: 0.3, // 瘦脸 0-1shave: 0, // 削脸 0-1eye: 0, // 大眼 0-1chin: 0, // 下巴 0-1}}// config 传入 ar sdkconst ar = new ArSdk(config);// created回调里可以获取内置特效与滤镜列表进行界面展示ar.on('created', () => {// 获取内置美妆、贴纸ar.getEffectList({Type: 'Preset'}).then((res) => {const list = res.map(item => ({name: item.Name,id: item.EffectId,cover: item.CoverUrl,url: item.Url,label: item.Label,type: item.PresetType,}));const makeupList = list.filter(item=>item.label.indexOf('美妆')>=0)const stickerList = list.filter(item=>item.label.indexOf('贴纸')>=0)// 渲染美妆、贴纸列表视图renderMakeupList(makeupList);renderStickerList(stickerList);}).catch((e) => {console.log(e);});// 内置滤镜ar.getCommonFilter().then((res) => {const list = res.map(item => ({name: item.Name,id: item.EffectId,cover: item.CoverUrl,url: item.Url,label: item.Label,type: item.PresetType,}));// 渲染滤镜列表视图renderFilterList(list);}).catch((e) => {console.log(e);});});ar.on('ready', (e) => {// 在 ready 回调里及该事件之后,可使用三种方法来设置美颜特效:setBeautify/setEffect/setFilter// 例如使用range input(滑动控件)设置美颜效果,例如$('#dermabrasion_range_input').change((e) => {ar.setBeautify({dermabrasion: e.target.value, // 磨皮 0-1});});// 通过created回调中创建的美妆、贴纸列表交互设置效果(setEffect的输入参数支持三种格式,详见SDK接入指南)$('#makeup_list li').click(() => {ar.setEffect([{id: effect.id, intensity: 1}]);});$('#sticker_list li').click(() => {ar.setEffect([{id: effect.id, intensity: 1}]);});// 通过created回调中创建的滤镜列表交互设置滤镜效果(setFilter第二个参数1表示强度,详见SDK接入指南)ar.setFilter(filterList[0].id, 1);$('#filter_list li').click(() => {ar.setFilter(filter.id, 1);});});ar.on('error', (e) => {console.log(e);});
// 获取 ar sdk 输出流const arStream = await this.ar.getOutput();const audioSource = arStream.getAudioTracks()[0];const videoSource = arStream.getVideoTracks()[0];// create a local stream with audio/video from custom sourcethis.localStream_ = TRTC.createStream({audioSource,videoSource});
index_AR.html
),成功后可以新开浏览器标签页进入刚才创建的房间模拟其他人加入房间的效果。const cameraApi = this.ar.camera;// 支持获取设备列表const devices = await cameraApi.getDevices()console.log(devices)// 支持切换不同摄像头// await cameraApi.switchDevice('video', 'your-video-device-id')// 禁用视频轨道// cameraApi.muteVideo()// 恢复视频轨道// cameraApi.unmuteVideo()// 禁用音频轨道// cameraApi.muteAudio()// 恢复音频轨道// cameraApi.unmuteAudio()// 停止摄像头// cameraApi.stop()// 重启摄像头// await cameraApi.restart()
// 使用SDK内置player,其中my-dom-id表示您需要放置播放器的容器idconst player = await sdk.initLocalPlayer('my-dom-id')// 直接播放await player.play()// 暂停player.pause()
index_AR.html
和 rtc-client-with-webar.js
,美颜特效的交互逻辑代码在base-js/js/ar_interact.js
,您的 TRTC 密钥信息配置在 base-js/js/debug/GenerateTestUserSig.js
。
本页内容是否解决了您的问题?