详情页标题前

腾讯云云直播Web 美颜特效接入

详情页1

准备工作

请阅读 Web 美颜特效 SDK 接入指南,熟悉 SDK 基本用法。请阅读云直播 入门文档 以及 WebRTC 推流,了解 WebRTC 推流工具基本用法,并完成直播基础设置。

开始使用

步骤1:Web 美颜特效 SDK 引入

在需要直播推流的页面(PC Web 端)中引入 js 脚本:

注意 这里是示例项目,为了方便使用 script 标签方式引入,您也可以参考 接入指南 中的方法,用 npm 包的方式引入。

步骤2:WebRTC 推流资源引入

在需要直播推流的页面(PC Web 端)中引入 js 脚本:

注意 请在 HTML 的 body 部分引入上述脚本,如果在 head 部分引入会报错。

步骤3:初始化 Web 美颜特效 SDK

示例代码如下:

const { ArSdk } = window.AR;
/** ----- 鉴权配置 ----- */
/** * 腾讯云账号 APPID * * 进入[腾讯云账号中心](https://console.cloud.tencent.com/developer) 即可查看 APPID */const APPID = ''; // 此处请填写您自己的参数
/** * Web LicenseKey * * 登录音视频终端 SDK 控制台的[Web License 管理](https://console.cloud.tencent.com/vcube/web),创建项目即可获得 LicenseKey */const LICENSE_KEY = ''; // 此处请填写您自己的参数
/** * 计算签名用的密钥 Token * * 注意:此处仅用于 DEMO 调试,正式环境中请将 Token 保管在服务端,签名方法迁移到服务端实现,通过接口提供,前端调用拉取签名,参考 * [签名方法](https://cloud.tencent.com/document/product/616/71370#.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 = 720;let h = 480;
// 获取输入流const stream = await navigator.mediaDevices.getUserMedia({ audio: true, video: { width: w, height: h }})
// ar sdk 基础配置参数const config = { input: stream, auth: { licenseKey: LICENSE_KEY, appId: APPID, authFunc: getSignature }, // 初始美颜效果(可选参数) beautify: { whiten: 0.1, // 美白 0-1 dermabrasion: 0.5, // 磨皮 0-1 lift: 0.3, // 瘦脸 0-1 shave: 0, // 削脸 0-1 eye: 0, // 大眼 0-1 chin: 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', async (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 sdk 输出的流在下一步中进行 WebRTC 推流 const arStream = await ar.getOutput();
});
ar.on('error', (e) => { console.log(e);});

更细致的 UI 控制用法您可以通过下载文末提供的代码包来进一步查看。

步骤4:开始推流

完成上一步之后,在 SDK ready 回调中获取输出流即可进行 WebRTC 推流,示例代码如下:

let livePusher = new TXLivePusher()// 设置直播推流基础参数 beginlet DOMAIN = '您的推流域名'let AppName = '您的appName' let StreamName = '您的streamName'let txSecret = '您的txSecret'let txTime = '您的txTime'// 设置直播推流基础参数 end
let pushUrl = `webrtc://${DOMAIN}/${AppName}/${StreamName}?txSecret=${txSecret}&txTime=${txTime}`
// 可选:设置预览界面元素livePusher.setRenderView('id_local_video');// 捕获流内容livePusher.startCustomCapture(arStream);// 立刻开始推流,您也可以通过其他函数来控制推流时机livePusher.startPush(pushUrl)

其中 txSecret 和 txTime 都需要计算,为了方便您也可以通过 直播控制台地址生成器 快速生成这些参数和推流 URL,具体请参见 地址生成器
推流(startPush)成功后,您应该就能看到应用了美颜特效的直播流的效果了。

步骤5:查看效果

注意 示例项目需您自行启动本机 Web 服务,并保证通过端口号可访问到 HTML 文件。若您有一个已备案成功的播放域名,可参考 直播播放 查看实际的播放效果。若您无播放域名,可在直播控制台流管理 中预览当前流的画面。

代码示例

您可以下载 示例代码 解压后查看 AR_LEB_WEB 代码目录。
云直播官网1折活动,限时活动,即将结束,速速收藏
同尘科技腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:https://www.yunxiaoer.com/143152.html

(0)
上一篇 2023年12月9日 上午1:32
下一篇 2023年12月9日
详情页2

相关推荐

  • 腾讯云对象存储PHP SDK 常见问题

    PHP SDK 运行时抛出 Call to undefined method GuzzleHttp\Utils::chooseHandler() 异常,该如何处理? PHP SDK 依赖 Guzzle,推荐用户使用 Composer 方式安装 SDK。在使用 Composer 方式安装时,需要执行 php composer.phar install 命令安装…

    腾讯云 2023年12月9日
  • 腾讯云对象存储更新模板

    功能描述 更新语音合成模板。 授权说明 授权策略中 action 设置为 ci:UpdateMediaTemplate 。查看所有 action。 服务开通 使用该功能需提前开通数据万象,并绑定存储桶。详情请参见 绑定存储桶。 使用限制 使用该接口时,请先确认相关限制条件。详情请参见 使用限制。 请求 请求示例 PUT /template/<Temp…

    腾讯云 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯云对象存储查询文件处理服务

    功能描述 本接口用于查询已经开通文件处理功能的存储桶。 授权说明 授权策略中 action 设置为 ci:DescribeFileProcessBucket 。查看所有 action。 服务开通 使用该功能需提前开通数据万象,并绑定存储桶。详情请参见 绑定存储桶。 使用限制 使用该接口时,请先确认相关限制条件。详情请参见 使用限制。 请求 请求示例 GET…

    腾讯云 2023年12月9日
  • 腾讯云TDSQL-C MySQL版TDSQL-C MySQL 版和云数据库 MySQL 有什么区别

    TDSQL-C MySQL 版和云数据库 MySQL 都是腾讯云的关系型数据库产品,其中,TDSQL-C MySQL 版基于云原生架构设计,融合了传统数据库、云计算与新硬件技术的优势,支持较多的高级功能和特性,为用户提供具备高弹性、高性能、最高 PB 级海量存储、安全可靠的数据库服务;而云数据库 MySQL 是腾讯云基于开源数据库 MySQL 专业打造的高性…

    2023年12月9日
  • 腾讯云轻量应用服务器使用移动设备登录 Windows 实例云小二

    操作场景 本文以 Microsoft Remote Desktop 客户端为例,介绍如何在不同系统的移动设备上登录 Windows 实例。您也可以使用第三方远程桌面客户端软件,例如: Parallels(仅供参考)。 适用移动设备 iOS 及 Android 设备 前提条件 轻量应用服务器实例状态为运行中。已获取登录实例的管理员账号及密码。如果您使用系统默认…

    2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。