直播平台源码搭建教程:微信小程序中的直播如何去掉水印
直播平台源码搭建教程:微信小程序中的直播如何去掉水印
本文与大家分享一下直播平台源码搭建教程,如何去掉直播视频的水印
var services = require('../../lib/service')
var ReceiverOptions = null;
Page({
data: {
loading: false,
videoInfo: {}, //{videoId:0,videourl:'',title:''}
//0:加载完成(还有数据) 1:加载中 2:加载完成(没有更多数据了)
searchLoadingStatus: 2,
//1:已授权 0:未授权
typeCode: 0,
//搜索位置名称
searchKeyWord: '',
systemInfo: {},
//视频下载状态 0:未下载 1:正在下载
videoDownLoadStatus: 0,
videoDownProgress: 0,
videoPlayCoverList: [],
//是否显示下载视频按钮
showDownLoadBtn: false,
//显示分享按钮
showShareVideoBtn: false,
//是否显示在线客服
showOnlineKf: false,
//积分总数
creditsAmountSum: 0,
//视频下载Url
downLoadVideoUrl: '',
//视频下载提示语
downloadVideoWaitRemindText: '正在生成视频地址,请稍后...'
},
onLoad(options) {
var that = this;
wx.getSystemInfo({
success: function(res) {
that.setData({
systemInfo: res //windowWidth,windowHeight
});
console.log(res);
}
});
getApp().getWxLoginInfo(function() {
that.loadSupportPlat(true);
that.videoSystemSetting();
});
},
onShow() {
var that = this;
var userLoginStatus = getApp().globalData.UserInfo.UserLoginStatus;
if (userLoginStatus) {
that.loadSupportPlat(false);
}
wx.getClipboardData({
success(res) {
console.log(res.data);
var linkStr = res.data;
if (linkStr.indexOf('http:') >= 0 || linkStr.indexOf('https:') >= 0) {
//清空剪切板内容
wx.setClipboardData({
data: ' ',
success(clearRes) {
wx.hideToast();
}
})
wx.showModal({
title: '是否粘贴剪切板中的链接地址',
content: linkStr,
success(res) {
if (res.confirm) {
that.setData({
searchKeyWord: linkStr
});
}
}
})
}
}
})
that.setData({
searchLoadingStatus: 2
});
},
loadSupportPlat: function(loading) {
var that = this;
services.service('minivideo/getplatlist', {
"WxUserId": 0
},
function(res) {
console.log(res);
that.setData({
videoPlayCoverList: res.data.Data
});
}, null, null, loading);
},
loadShareVideo: function() {
let that = this;
var videoId = that.data.videoInfo.videoId;
//videoId = 10004;
if (videoId > 0) {
services.service('minivideo/getvideoinfo', {
"WxUserId": 0,
"VideoId": videoId
},
function(res) {
console.log(res);
if (res.data.Status) {
var analysisStatus = res.data.Data.AnalysisStatus;
var showDownLoadBtn = false;
//下载成功,显示下载,分享按钮
if (analysisStatus == 3) {
showDownLoadBtn = true;
}
that.setData({
downloadVideoWaitRemindText: '',
showDownLoadBtn: showDownLoadBtn,
showShareVideoBtn: true,
videoInfo: {
videoId: videoId,
videourl: res.data.Data.VideoUrl
},
downLoadVideoUrl: res.data.Data.VideoUrl
});
}
}, null, null, true);
} else {
}
},
//系统设置
videoSystemSetting: function() {
let that = this;
services.service('minivideo/getconfig', {},
function(res) {
console.log(res);
if (res.data.Status) {
that.setData({
showShareVideoBtn: res.data.Data.ShowShareVideo,
showOnlineKf: res.data.Data.ShowOnlineKf
});
}
}, null, null, false);
},
//保存视频到相册
btnSaveVideo: function() {
var that = this;
wx.authorize({
scope: "scope.writePhotosAlbum",
success: function() {
var downLoadStatus = that.data.videoDownLoadStatus;
if (downLoadStatus == 0) {
var videourl = that.data.downLoadVideoUrl;
if (videourl == null || videourl == '') {
that.showToast('请先提取视频');
return;
}
that.setData({
videoDownLoadStatus: 1,
videoDownProgress: 0
})
const downloadTask = wx.downloadFile({
url: videourl,
success(res) {
if (res.statusCode === 200) {
wx.saveVideoToPhotosAlbum({
filePath: res.tempFilePath,
success(res) {
//保存成功
that.showSuccessToast('已保存到相册');
},
fail(res) {
console.log(res);
that.showToast('保存失败');
}
})
}
},
fail(res) {
that.showToast('下载视频失败');
},
complete(res) {
that.setData({
videoDownLoadStatus: 0
})
}
})
//监听下载进度
downloadTask.onProgressUpdate(function(res) {
that.setData({
videoDownProgress: res.progress
})
})
}
},
fail: function() {
that.showToast('授权保存视频到相册失败,请删除该小程序重新授权');
}
});
},
//复制链接
copyVideoLink: function() {
var that = this;
var videoUrl = that.data.videoInfo.videourl;
wx.setClipboardData({
data: videoUrl,
success(res) {
that.showToast('复制成功')
}
});
},
//搜索
bindSearchTap: function(e) {
console.log('开始提取视频')
console.log(e);
var that = this;
var searchLoadingStatus = that.data.searchLoadingStatus;
if (searchLoadingStatus != 1) {
that.setData({
//加载中
searchLoadingStatus: 1
});
var _userInfo = e.detail.userInfo;
if (_userInfo != null && _userInfo != undefined) {
//先授权
getApp().authorUserInfo(_userInfo, function(data) {
that.getVideoPlayUrl();
}, false);
} else {
that.showToast("请先允许微信授权");
that.setData({
//加载中
searchLoadingStatus: 2
});
}
}
},
//使用教程
bindUseCourse: function(e) {
wx.navigateTo({
url: '../useCourse/useCourse'
});
},
//跳转到位置收藏大师
navigateToLocationMiniProgram: function(e) {
var wxUserId = getApp().globalData.UserInfo.WxUserId;
wx.navigateToMiniProgram({
appId: 'wxb91f7b85c23f0624',
path: 'pages/home/home?skip=' + wxUserId,
//extraData: {
// flag: 'Skip_1'
//},
envVersion: 'release',
success(res) {
// 打开成功
},
fail(res) {
that.showToast('调起小程序失败,请稍后重试');
}
})
},
//清空输入框
clearInput: function() {
var that = this;
that.setData({
searchKeyWord: ''
});
},
//输入框输入监听
searchInputMonitor: function(e) {
var that = this;
that.setData({
searchKeyWord: e.detail.value
});
},
//提取视频
getVideoPlayUrl: function() {
var that = this;
that.startGetVideoPlayUrl();
},
startGetVideoPlayUrl: function() {
var that = this;
var wxUserId = getApp().globalData.UserInfo.WxUserId;
var keyword = that.data.searchKeyWord;
services.service('minivideo/addvideourl', {
WxUserId: wxUserId,
OriginalUrl: keyword,
XcxTypeCode: 1
},
function(res) {
if (res.data.Status) {
var videoUrl = res.data.Data.VideoUrl;
var videoRecordId = res.data.Data.VideoRecordId;
var videoImgs = res.data.Data.Imgs;
that.setData({
videoInfo: {
videoId: videoRecordId,
videourl: videoUrl,
title: '',
imgs: videoImgs
}
});
var needDownLoadToServer = res.data.Data.NeedDownLoadToServer;
if (needDownLoadToServer) {
if (videoUrl != null && videoUrl != '') {
that.downLoadVideoToServer(wxUserId, videoUrl, videoRecordId);
}
} else {
that.setData({
downLoadVideoUrl: videoUrl,
showDownLoadBtn: true
});
}
} else {
wx.showModal({
content: res.data.Msg,
showCancel: false
})
}
}, null,
function() {
that.setData({
//加载完成
searchLoadingStatus: 2
});
})
},
//下载视频到服务器
downLoadVideoToServer: function(wxUserId, videoUrl, videoRecordId) {
var that = this;
that.setData({
showDownLoadBtn: false,
downloadVideoWaitRemindText: '正在生成视频地址,请稍后...'
});
services.service('minivideo/downloadvideo', {
"WxUserId": wxUserId,
"VideoUrl": videoUrl,
"VideoRecordId": videoRecordId
},
function(res) {
if (res.data.Status) {
var url = res.data.Data.Url;
that.setData({
downLoadVideoUrl: url,
showDownLoadBtn: true
});
} else {
that.showToast(res.data.Msg);
that.setData({
showDownLoadBtn: false,
downloadVideoWaitRemindText: res.data.Msg
});
}
}, null, null, false);
},
//如何获取更多次数
getTimesMore: function() {
wx.navigateTo({
url: '../getTimesMore/getTimesMore'
});
},
showToast(title) {
wx.showToast({
title: title,
icon: 'none',
duration: 2000
})
},
onShareAppMessage: function(res) {
let that = this;
return {
path: '/pages/home/home'
}
}
});
以上就是直播平台源码搭建教程,欢迎感兴趣的朋友一起讨论。
直播平台源码搭建教程:微信小程序中的直播如何去掉水印的更多相关文章
- PHP直播平台源码搭建教程
直播源码市场火爆,但是PHP直播平台源码的搭建过程较为复杂,本文就简单为大家概述一下直播的实现过程以及PHP直播平台源码是如何搭建的. 一.直播的定义 如今PHP直播平台源码绝大部分情况下是指在现场架 ...
- 在Mac Os(苹果)上用手机抓包软件Charles抓取微信小程序中的高清无水印视频
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_118 手机抓包是一名测试工程师常备的技能,比如我想查看一个接口请求的参数.返回值,还有移动设备上的http请求.https请求,这 ...
- 微信小程序中如何使用WebSocket实现长连接(含完整源码)
本文由腾讯云技术团队原创,感谢作者的分享. 1.前言 微信小程序提供了一套在微信上运行小程序的解决方案,有比较完整的框架.组件以及 API,在这个平台上面的想象空间很大.腾讯云研究了一番之后,发现 ...
- 微信小程序开发系列五:微信小程序中如何响应用户输入事件
微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 微信小程序开发系列三:微信小程序的调试方法 微信小程序开发系列四:微信小程序 ...
- 微信小程序中发送模版消息注意事项
在微信小程序中发送模版消息 参考微信公众平台Api文档地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html#模版消息管理 此参考地址 ...
- 全栈开发工程师微信小程序-中(中)
全栈开发工程师微信小程序-中(中) 开放能力 open-data 用于展示微信开放的数据 type 开放数据类型 open-gid 当 type="groupName" 时生效, ...
- 微信小程序中图片上传阿里云Oss
本人今年6月份毕业,最近刚在上海一家小公司实习,做微信小程序开发.最近工作遇到一个小问题. 微信小程序图片上传阿里云服务器Oss也折腾了蛮久才解决的,所以特意去记录一下. 第一步:配置阿里云地址: 我 ...
- 微信小程序中用户登录和登录态维护
提供用户登录以及维护用户的登录状态,是一个拥有用户系统的软件应用普遍需要做的事情.像微信这样的一个社交平台,如果做一个小程序应用,我们可能很少会去做一个完全脱离和舍弃连接用户信息的纯工具软件. 让用户 ...
- 全栈开发工程师微信小程序-中(下)
全栈开发工程师微信小程序-中(下) 微信小程序视图层 wxml用于描述页面的结构,wxss用于描述页面的样式,组件用于视图的基本组成单元. // 绑定数据 index.wxml <view> ...
随机推荐
- FOV
来源:https://blog.csdn.net/chepwavege/article/details/98876550 视场 (视图字段) 是指现场对面相机镜头的立体角.图如下图所示︰ 高频通气︰ ...
- C#实现——十大排序算法之选择排序
选择排序法 1.工作原理(算法思路) 给定一个待排序数组,找到数组中最小的那个元素 如果最小元素不是待排序数组的第一个元素,则将其和第一个元素互换 在剩下的元素中,重复1.2过程,直到排序完成. 2. ...
- java基础知识总结(续写)
1.两个容易搞混的C盘文件夹 文件名 描述 Progrm Files 默认存储的64位软件 Progrm Files(x86) 默认存储32位软件 2.常用基础DOS命令(Windows+R打开命令) ...
- 【C语言教程】“双向循环链表”学习总结和C语言代码实现!
双向循环链表 定义 双向循环链表和它名字的表意一样,就是把双向链表的两头连接,使其成为了一个环状链表.只需要将表中最后一个节点的next指针指向头节点,头节点的prior指针指向尾节点,链表就能成环儿 ...
- linux(centos8):jmeter5.3并发测试实例(参数在范围内随机取值)
一,测试的url地址说明: 1,这是一个秒杀功能的url: http://127.0.0.1:8080/second/skusecond?actid=2020&skuid=cpugreen&a ...
- springboot入门系列(二):SpringBoot整合Swagger
上一篇<简单搭建SpringBoot项目>讲了简单的搭建SpringBoot 项目,而 SpringBoot 和 Swagger-ui 搭配在持续交付的前后端开发中意义重大,Swagger ...
- Vue踩坑日记-This dependency was not found:element-ui.js
该问题为在Vue启动项目时候报错找不到element-ui模块 解决办法:打开CMD 控制台 CD到项目根目录 我的目录(C:\Users\Administrator\Desktop\cms-heli ...
- MySQL 日志之 binlog 格式 → 关于 MySQL 默认隔离级别的探讨
开心一刻 产品还没测试直接投入生产时,这尼玛... 背景问题 在讲 binlog 之前,我们先来回顾下主流关系型数据库的默认隔离级别,是默认隔离级别,不是事务有哪几种隔离级别,别会错题意了 1.Ora ...
- String题目解析1
Java又不是C++,什么时候字符数组等于字符串了(对这句话我不负责任)? 而常量池中的字符串,只有变量名不同是可以用双等号判断是否相等的,内存都是常量池中的字符串. 但是new出来的字符串,只能用e ...
- Python ( 学习基础篇 第二部 )
目录 运算符 算数运算符 比较运算符 赋值运算符 位运算符 逻辑运算符 成员运算符 身份运算符 Python 中运算符的优先级 运算符总结基础语法 判断类型 isinstence 代码块 流程控制 w ...