前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >体验腾讯云音视频

体验腾讯云音视频

原创
作者头像
就叫7620521吧
修改2022-12-12 14:40:31
7.8K0
修改2022-12-12 14:40:31
举报
文章被收录于专栏:征文活动专栏征文活动专栏

从开通音视频出发

了解音视频

首次开通腾讯云音视频免费赠送10000分钟的免费试用套餐包,包含了视频通话语音通话视频互动直播语音互动直播这些模块,另外说明一下腾讯云音视频是按照 1 : 2 : 4 : 9 : 16 : 36 分别抵扣语音、标清、高清、超高清、2K和4K时长,例如1分钟高清视频时长扣除4分钟免费套餐包时长。

开通音视频

当开通后可以在套餐包管理查看使用详情,创建时间和截止时间并设置告警提示;

点击跳转音视频产品页

开发前须知

UserSig保护

UserSig 是腾讯云设计的一种安全保护签名,目的是为了阻止恶意攻击者盗用您的云服务使用权。 目前,腾讯云的实时音视频(TRTC)、即时通信(IM)以及移动直播(MLVB)等服务都采用了该套安全保护机制。要使用这些服务,您需要在相应 SDK 的初始化或登录函数中提供 SDKAppID,UserID 和 UserSig 三个关键信息。 其中 SDKAppID 用于标识您的应用,UserID 用于标识您的用户,而 UserSig 则是基于前两者计算出的安全签名,它由 HMAC SHA256 加密算法计算得出。只要攻击者不能伪造 UserSig,就无法盗用您的云服务流量。

点击查看个人SDK ID和key

node代码

UserSig安全

官方推荐正确的做法是将 UserSig 的计算代码放在您的业务服务器上,然后由您的 App 在需要的时候向您的服务器获取实时算出的 UserSig,所以我们起个node服务简单的过一遍,实际场景需要自己去定制开发。

代码语言:javascript
复制
npm i tls-sig-api-v2
代码语言:javascript
复制
var TLSSigAPIv2 = require('tls-sig-api-v2');

router.post('/voice', (req, res) => {
	var videoApi = new TLSSigAPIv2.Api(req.body.sdkAppId, '应用密钥');
	// 第一个人参数获取前端提交的用户id 也就是加密需要的userId,第二个是过期时间腾讯云文档推荐时间长一点
	let privateKey = videoApi.genSig(req.body.user, 86400 * 180)
	if (req.body.user) {
		res.json({
			code: 200,
			data: privateKey
		})
	}

})

web端代码

您需要在项目中使用 npm 安装 trtc-js-sdk 包。

代码语言:javascript
复制
npm install trtc-js-sdk --save

个人写法,仅供参考(不接受批评斜眼笑)

代码语言:javascript
复制
import TRTC from "trtc-js-sdk";
import axios from "axios";
export default {
  data() {
    return {
      // 房间号
      roomId: "",
      // 本地客户端 提供了加入通话房间、发布本地流、订阅远端流等功能
      client: "",
      // 音频流对象 提供对音视频流的控制操作,包括音频和视频的播放控制
      localStream: "",
      // 加密key
      userSig: "",
      // 用户ID
      userId: "",
      sdkAppId: 1400770493,
    };
  },
  created() {
    // 首页做了一个填写用户id和房间号 所以这里是query拿到的参数
    this.roomId = this.$route.query.roomId;
    this.userId = this.$route.query.userId;
    // 这个type是做了一个判断 1是创建房间 2是加入房间
    this.type = this.$route.query.type;
    // 获取到roomId和userId后区调用getUserSig获取加密后的key
    this.getUserSig();
  },
  methods: {
    // 获取userSig
    getUserSig() {
      let url = "线上地址";
      axios
      // 把roomId和SDkid丢进去
        .post(url, { user: this.userId, sdkAppId: this.sdkAppId })
        .then((res) => {
          this.userSig = res.data.data;
          // 拿到加密后的key 判断是进入房间还是加入房间 调用不同的方式
          if (this.type == 1) {
            this.getVideoRoom();
          }
          if (this.type == 2) {
            this.getJoin();
          }
        });
    },
    // 创建房间
    getVideoRoom() {
      // 实时通话模式下创建客户端对象
      this.client = TRTC.createClient({
        sdkAppId: this.sdkAppId, // 填写您申请的 sdkAppId
        userId: this.userId, // 填写您业务对应的 userId
        userSig: this.userSig,
        mode: "rtc",
      });
      // 创建房间
      this.client
        .join({ roomId: Number(this.roomId), role: "anchor" })
        .then(() => {
          console.log("创建成功,加入房间成功");
          // 调用创建本地流方法
          this.getlocalVideo();
        });
      this.client.on("stream-added", (event) => {
        const remoteStream = event.stream;
        console.log("远端流增加: " + remoteStream.getId());
        //订阅远端流
        this.client.subscribe(remoteStream);
      });
      this.client.on("stream-subscribed", (event) => {
        const remoteStream = event.stream;
        console.log("远端流订阅成功:" + remoteStream.getId());
        // 播放远端流,传入的元素 ID 必须是页面里存在的 div 元素
        remoteStream.play("remote_stream" + remoteStream.getId());
      });
    },
    // 发布本地音视频流
    getlocalVideo() {
      // 从麦克风和摄像头采集本地音视频流
      this.localStream = TRTC.createStream({
        userId: this.userId,
        audio: true, // 音频
        video: true, // 视频 可false
      });
      this.localStream.initialize().then(() => {
        console.log("本地流初始化成功");
        this.localStream.play("joinVideoOne");
        // 本地流初始化成功,可通过Client.publish(localStream)发布本地音视频流
        this.client.publish(this.localStream);
      });
    },
    // 获取房间号
    getJoin() {
      this.client = TRTC.createClient({
        sdkAppId: this.sdkAppId, // 填写您申请的 sdkAppId
        userId: this.userId, // 填写您业务对应的 userId
        userSig: this.userSig,
        mode: "rtc",
      });
      this.client.on("stream-subscribed", (event) => {
        const remoteStream = event.stream;
        console.log("远端流订阅成功:" + remoteStream.getId());
        // 如果您遇到播放失败的问题,需要使用 remoteStream 监听 error 并处理 0x4043 浏览器限制自动播放的问题
        remoteStream.on("error", (error) => {
          const errorCode = error.getCode();
          if (errorCode === 0x4043) {
            // PLAY_NOT_ALLOWED, 引导用户手势操作并调用 stream.resume 恢复音视频播放,
            // 在点击回调里调用 remoteStream.resume() 进行恢复播放。
          }
        });
        // 播放远端流,传入的元素 ID 必须是页面里存在的 div 元素
        remoteStream.play("JoinVideoTwo" + remoteStream.getId());
      });
      this.localStream = TRTC.createStream({
        userId: this.userId,
        audio: true,
        video: true,
      });
      this.localStream.initialize();
    },
  },
};

展示效果

展示部分图片

权限请求
权限请求

相关文档集合

web端api点击这个

服务端api点击这个

userSig相关点

官方Demo 体验

个人demo体验

个人使用体验

腾讯云音视频产品本身足够优秀,使用起来体验非常不错,api和文档也非常齐全。官方提供的demo也简单易懂,腾讯会议,贝壳等等知名it公司都有接入。更是直接提供给新开通用户白送一万分钟的体验包,官网活动折扣首单9.9元两万分钟

产品详情介绍

AI 智能降噪

源自腾讯天籁实验室,通过深度学习技术,智能检测和去除混合在传播信号中的噪声干扰,提高语音的质量和可懂度,提升声音的清晰度,改善用户听感。

实时信令

与即时通信 IM 协同使用,即可实现呼叫等待、接听、会议邀请、会控、公告、通知、评论、弹幕、礼物、点赞、红包、上下麦状态等丰富功能。

屏幕分享

又称屏幕共享,可将系统桌面、应用窗口或指定画面区域分享给他人,支持单个用户同时上行摄像头和屏幕分享两路画面,保证音画同步。

卓越音质与立体声

支持 48kHz 采样的高音质,由业内领先的腾讯天籁实验室提供 3A 处理算法,杜绝回声和啸叫。全链路 192kbps 高音质、真左右声道立体声音频,实现房间用户听感清晰和沉浸式互动体验。

录制与回放

提供覆盖实时音视频互动全程的云端录音与录像功能,保证录制过程的可靠性和稳定性,并提供录制文件存储、转码、下载、点播等一站式服务。

内容安全审核

打通腾讯天御内容审核,实现自动识别音频或视频中出现的涉黄、敏感等违法、违规内容,从而降低人工运营维护成本。

特效美颜

支持基础美颜和滤镜功能,支持与腾讯特效(美颜特效)SDK快捷集成,获得智能美颜、美妆、美体、贴纸特效、虚拟背景、手势识别等扩展能力。

旁路直播

用 MCU 旁路转码集群,将 TRTC 所使用的 UDP 协议转换为标准的直播 RTMP 协议并旁路到直播系统中,让观众通过直播 CDN 进行观看。

监控仪表盘

提供全方位的质量排查、实时质量监控服务。针对通话过程提供精准易用的可视化运维工具、支持实时通话质量监控能力以及应用维度的大盘数据查询功能,助您快速了解业务使用情况。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 从开通音视频出发
    • 了解音视频
      • 开通音视频
      • 开发前须知
        • UserSig保护
        • node代码
          • UserSig安全
          • web端代码
            • 个人写法,仅供参考(不接受批评斜眼笑)
              • 展示效果
              • 相关文档集合
                • 个人使用体验
                • 产品详情介绍
                  • AI 智能降噪
                    • 实时信令
                      • 屏幕分享
                        • 卓越音质与立体声
                          • 录制与回放
                            • 内容安全审核
                              • 特效美颜
                                • 旁路直播
                                  • 监控仪表盘
                                  相关产品与服务
                                  云直播
                                  云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
                                  领券
                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档