申请测试版License
a.登陆【云点播控制台】,两侧菜单中选择【License管理】>【SDKLicense】,单击【创建测试License】。
b.按照实际需求填写AppName、PackageName和BundleID,勾选功能模块【短视频】,单击【确定】。
c.测试版License成功创建后,页面会显示生成的License信息。在SDK初始化配置时须要传入Key和LicenseURL两个参数,请妥善保存以下信息。
步骤2:开始使用插件
使用RY-TencentUGCKit,须要调用[init]()初始化插件,才可以调用其他的功能。
UGCKit.init({
licence: self.licence
}, ret => {
console.log(ret);
});
步骤3:使用UGCKit进行视频录制
调用[record]()可以开启视频录制。
UGCKit.record({}, ret => {
console.log(ret);
});
步骤4:使用UGCKit进行视频导出
调用[picker]()可以从相册中选择视频,进行编辑。
UGCKit.picker({
mediaType: 0,
maxItemCount: 5
}, ret => {
console.log(ret);
});
快速开始步骤1:加载插件
插件名称:RY-TencentAVSmartKit-V2Live
新建nvue文件,注意该模块必须在nvue中使用。
备注:
通过更改width和height的参数值,可以更改视图容器的大小。
注册或登陆腾讯云帐号,并进行实名认证。
点击直播服务,开通直播功能,已开通,则忽视;点击Licence管理,步入Licence页面;点击"创建测试Licence"按键,弹出测试Licence配置界面;在"基本信息"中,输入"AppName"=>应用名称,"PackageName"=>Android包名(须要和自定义底座的Android包名一致),"BundleId"=>iOS包名(与自定义底座iOS的BundleId一致);在"选择功能模块中",选中"直播推流(RTMP推流+RTC推流)"。创建成功后,您会获取Licence,您会获得两个字符串:一个字符串是licenseURL,另一个字符串是揭密key。
注意:
请使用测试Licence开发测试,假若您须要订购即将Licence(信息填写错误难以更改,也可能难以退货),建议先联系我们技术支持陌陌(微讯号:ruanyunkeji006)。
a.手动推流,联系我们技术支持陌陌(微讯号:ruanyunkeji006)。
b.点击推流地址,填入相关信息,生成推流地址。
步骤2:初始化推流组件
this.$refs.livePusher.initPusher({
licence: {
url: 'http://license.vod2.myqcloud.com/license/v1/e50xxxe680/TXLiveSDK.licence',
key: '3d436208xxxxd7f92871'
},
docPath: plus.io.convertLocalFileSystemURL('_doc')
}, ret => {
console.log(ret);
});
步骤3:设置推流窃听器
设置[setLivePusherListener]()推流窃听,会返回推流中各个[风波反弹]()。
this.$refs.livePusher.setLivePusherListener({}, ret => {
console.log(ret);
});
步骤4:开启摄像头预览
调用[startCamera]()插口开启当前手机摄像头的预览。
this.$refs.livePusher.startCamera({
rect: {
x: 0,
y: 0,
w: self.playerWidth,
h: self.playerHeight
}
}, ret => {
console.log(ret);
});
步骤5:启动和结束推流
假如早已通过[startCamera]()插口启动了摄像头预览,就可以调用V2LivePusher中的[startPush]()插口开始推流。推流地址可以使用TRTC地址,或则使用RTMP地址,后者使用UDP合同,推流质量更高,并支持连麦互动。
// 启动推流, URL可以使用 trtc:// 或者 rtmp:// 两种协议,前者支持连麦功能
// 支持连麦
var url = "trtc://cloud.tencent.com/push/streamid?sdkappid=1400188888&userId=A&usersig=xxxxx";
// 不支持连麦,直接推流到直播 CDN
var url = "rtmp://test.com/live/streamid?txSecret=xxxxx&txTime=xxxxxxxx";
this.$refs.livePusher.startPush({
url: url
}, ret => {
console.log(ret);
})
推流结束后,可以调用V2LivePusher中的[stopPush]()插口结束推流。
this.$refs.livePusher.stopPush({}, ret => {
console.log(ret);
});
注意:
假如早已启动了摄像头预览,请在结束推流时将其关掉。
步骤6:纯音频推流
倘若您的直播场景是纯音频直播,不须要视频画面,这么您可以不执行第4步中的操作,或则在调用startPush之前不调用startCamera插口即可。
this.$refs.livePusher.init({
...
}, ret => {
console.log(ret);
});
this.$refs.livePusher.startPush({
url: url
}, ret => {
console.log(ret);
});
this.$refs.livePusher.startMicrophone({}, ret => {
console.log(ret);
});
说明:
倘若您启动纯音频推流,而且RTMP、FLV、HLS格式的播放地址拉不到流,那是由于线路配置问题,请提工单联系我们帮忙更改配置。
步骤7:设定画面清晰度
调用V2LivePusher中的[setVideoQuality]()插口,可以设定听众端的画面清晰度。之所以说是听众端的画面清晰度,是由于主播听到的视频画面是未经编码压缩过的高清原画,不受设置的影响。而[setVideoQuality]()设定的视频编码器的编码质量,听众端可以感遭到音质的差别。详情请参见设定画面质量。
步骤8:美肤保湿和细嫩特效
SDK外置三种不同的锐化算法,每种锐化算法即对应一种美肤风格,您可以选择最适宜您产品定位的方案。
美肤风格疗效说明
光滑风格,算法愈发重视皮肤的光滑程度,适宜秀场直播类场景下使用
自然风格,算法愈发重视保留皮肤细节,适宜对真实性要求更高的主播
由北京优图实验室提供的美肤算法,锐化疗效介于光滑和自然之间,比光滑保留更多皮肤细节,比自然锐化程度更高
美肤风格可以通过V2LivePusher的[setBeautyStyle]()插口设置:
美肤风格设置方法插口说明
美肤风格
[setBeautyLevel]()
取值范围0-9;0表示关掉,1-9值越大,疗效越显著
保湿级别
[setWhitenessLevel]()
取值范围0-9;0表示关掉,1-9值越大,疗效越显著
细嫩级别
[setRuddyLevel]()
取值范围0-9;0表示关掉,1-9值越大,疗效越显著
步骤9:色调滤镜疗效
从手机QQ和Now直播的经验来看,单纯通过[setBeautyStyle]()调整锐化疗效是不够的,只有将美肤疗效和[setFilter]()配合使用能够达到更加多变的美肤疗效。所以,我们的设计师团队提供了17种默认的色调滤镜供您使用。
this.$refs.livePusher.setFilter({
img: '/path/to/filterImg.png'
}, ret => {
console.log(ret);
});
this.$refs.livePusher.setFilterStrength({
strength: 0.6
}, ret => {
console.log(ret);
});
步骤10:设备管理
RY-V2TencentLivePusher提供了一组API用户控制设备的行为,您可通过设备管理插口进一步进行设备管理,详尽用法请参见[设备管理插口]()。
步骤11:听众端的镜像疗效
通过调用V2LivePusher的[setRenderMirror]()可以改变摄像头的镜像方法,从而影响听众端观看到的镜像疗效。之所以说是听众端的镜像疗效,是由于当主播在使用后置摄像头直播时,默认情况下自己见到的画面会被SDK反转。
步骤12:横屏推流
大多数情况下,主播习惯以“竖屏持握”手机进行直播拍摄,听众端看见的也是竖屏码率的画面(比如540×960这样的码率);有时主播也会“横屏持握”手机,这时听众端期望能看见是横屏码率的画面(比如960×540这样的码率),如右图所示:
V2LivePusher默认推出的是竖屏码率的视频画面,假如希望推出横屏码率的画面,可以更改[setVideoQuality]()插口的参数来设定听众端的画面横竖屏模式。
this.$refs.livePusher.setVideoQuality({
resolutionMode: 1
...
}, ret => {
console.log(ret);
});
步骤13:音质设置
调用V2LivePusher中的音质插口可以实现背景混缩、耳返、混响等音质功能。背景混缩是指主播在直播时可以选定一首歌曲伴唱,歌曲会在主播的手机端播放下来,同时也会被混和到音视频流中被听众端看到,所以被称为“混音”。
说明:
详尽用法请参见[音质管理]()。
步骤14:设置Logo水印
设置V2LivePusher中的[setWatermark]()可以让SDK在推出的视频流中降低一个水印,水印位置位是由传入参数(x,y,scale)所决定。
this.$refs.livePusher.setWaterMark({
img: '/path/to/watermark.png',
x: 0.03,
y: 0.015,
scale: 1
}, ret => {
console.log(ret);
});
步骤15:主播端弱网提醒
手机联接Wi-Fi网路不一定就十分好,假如Wi-Fi讯号差或则出口带宽很有限,可能网速不如4G,假如主播在推流时遇见网路很差的情况,须要有一个友好的提示,提示主播应该切换网路。
通过setLivePusherListener里的onWarning可以捕获[onNetworkBusyWarn]()风波,它代表当前主播的网路早已十分糟糕,出现此风波即代表听众端会出现卡顿。此时就可以像上图一样在UI上弹出一个“弱网提示”。
this.$refs.setLivePusherListener({}, ret => {
if ('onWarning' == ret.eventType) {
// todo
if (ret.code == ) {
console.log('您当前的网络环境不佳,请尽快更换网络保证正常直播')
}
}
})
快速开始步骤1:加载插件
插件名称:RY-TencentAVSmartKit-V2Live
新建nvue文件,注意该模块必须在nvue中使用。
备注:通过更改width和height的参数值,可以更改视图容器的大小。
注册或登陆腾讯云帐号,并开通云直播服务
步骤2:初始化推流组件
首先调用[initPlayer]()初始化,该步骤可以指定一些中级配置参数,但通常情况下我们不建议您操作该对象,由于我们早已在其内部配置好了所有须要校调的参数。
this.$refs.livePlayer.initPlayer({
licence: {
url: 'http://license.vod2.myqcloud.com/license/v1/e50xxxe680/TXLiveSDK.licence',
key: '3d436208xxxxd7f92871'
},
docPath: plus.io.convertLocalFileSystemURL('_doc')
}, ret => {
console.log(ret);
});
步骤3:设置拉流窃听器
之后[setLivePlayerListener]()设置推流窃听,会返回推流中各个[风波反弹]()。
this.$refs.livePlayer.setLivePlayerListener({}, ret => {
console.log(ret);
});
步骤4:启动播放
调用[startPlay]()插口开启当前手机摄像头的预览。
this.$refs.livePusher.startPlay({
rect: {
x: 0,
y: 0,
w: self.playerWidth,
h: self.playerHeight
},
url: "http://2157.liveplay.myqcloud.com/live/2157_xxxx.flv"
}, ret => {
console.log(ret);
});
步骤5:画面调整可选值含意
将图象等比列布满整个屏幕,多余部份剪裁掉,此模式下画面不会留黑边,但可能由于部分区域被裁切而显示不全
将图象等比列缩放,适配最长边,缩放后的宽和高都不会超过显示区域,居中显示,画面可能会留有黑边
可选值含意
不旋转
顺秒针旋转90度
顺秒针旋转180度
顺秒针旋转270度
步骤6:暂停播放
对于直播播放而言,并没有真正意义上的暂停,所谓的直播暂停,只是画面冻结和关掉声音,而云端的视频源还在不断地更新着,所以当您调用resume的时侯,会从最新的时间点开始播放,这是和点播对比的最大不同点(点播播放器的暂停和继续与播放本地视频文件时的表现相同)。
// 暂停
this.$refs.livePlayer.pausePlayerAudio({}, ret => {
console.log(ret);
});
this.$refs.livePlayer.pausePlayerVideo({}, ret => {
console.log(ret);
});
// 恢复
this.$refs.livePlayer.resumePlayerAudio({}, ret => {
console.log(ret);
});
this.$refs.livePlayer.resumePlayerVideo({}, ret => {
console.log(ret);
});
步骤7:结束播放
this.$refs.livePlayer.stopPlay({}, ret => {
console.log(ret);
});
步骤8:屏幕截图
通过调用[snapshot]()您可以截取当前直播画面为一帧屏幕通过setLivePlayerListener的[onSnapshotComplete]()反弹截屏图片,此功能只会截取当前直播流的视频画面,倘若您须要截取当前的整个UI界面,请调用iOS的系统API来实现。
this.$refs.livePlayer.setLivePlayerLitener({}, ret => {
if (ret.hasOwnProperty('eventType')) {
if ('onSnapshotComplete' == ret.eventType) {
if (ret.hasOwnproperty('image')) {
// 处理截图
}
}
}
});
this.$refs.livePlayer.snapshot({}, ret => {
console.log(ret);
});
延时调节
腾讯云SDK的直播播放功能,并非基于ffmpeg做二次开发,而是采用了自研的播放引擎,所以相比于开源播放器,在直播的延后控制方面有更好的表现,我们提供了三种延后调节模式,分别适用于:秀场,游戏以及混和场景。
控制模式卡顿率平均延后试用场景原理描述
急速模式
较流畅过高
2s-3s
美眉秀场(冲顶会议)
在延后控制上有优势,适用于对延后大小比较敏感的场景
流畅模式
卡顿率最低
>=5s
游戏直播(企鹅电竞)
对于超大分辨率的游戏直播(比如绝地求生)特别适宜,卡顿率最低
手动模式
网路自适应
2s-8s
混和场景
听众端的网路越好,延后就越低;听众端网路越差,延后就越高
// 自动模式
this.$refs.livePlayer.setCacheParams({
minTime: 1,
maxTime: 5
}, ret => {
console.log(ret);
});
// 极速模式
this.$refs.livePlayer.setCacheParams({
minTime: 1,
maxTime: 1
}, ret => {
console.log(ret);
});
// 流畅模式
this.$refs.livePlayer.setCacheParams({
minTime: 5,
maxTime: 5
}, ret => {
console.log(ret);
});
// 设置完成之后再启动播放