uniapp live-pusher + 腾讯云直播

直播端

html 复制代码
<live-pusher
			id="livePusher"
			ref="livePusher"
			class="livePusher"
			:url="src"
			:mode="mode"
			:enable-camera="enableCamera"
			:auto-focus="true"
			:device-position="position"
			:beauty="beauty"
			:whiteness="whiteness"
			aspect="9:16"
			@statechange="statechange"
			@netstatus="netstatus"
			@error="error"
			:style="'height: ' + windowHeight + 'px;'"
			style="width: 750rpx"
		></live-pusher>
javascript 复制代码
<script>
import { mapState } from 'vuex';
export default {
	data() {
		return {
			windowHeight: 0,
			src: '',
			mode: 'FHD',
			enableCamera: true,
			position: 'front',
			beauty: 0,
			whiteness: 0,
			context: null,
			// 是否开始推流
			isStart: false,
			isPause: false,
		};
	},
	onLoad(options) {
		/* 叫后端返回,推流地址别加鉴权,加了鉴权出不来 */
		this.src = options.url;
	},
	onShow() {
		let res = uni.getSystemInfoSync();
		this.windowHeight = res.windowHeight;
		if (this.context) {
			this.resume();
		}
	},
	onReady() {
		this.context = uni.createLivePusherContext('livePusher', this);
		this.startPreview();
		// 开始推流
		this.start();
	},
	onBackPress(e) {
		if (e.from == 'backbutton') {
			this.back();
			return true;
		}
	},
	onUnload() {
		this.stop();
	},
	methods: {
		// 开始推流
		start() {
			this.context.start({
				success: (e) => {
					this.isStart = true;
					console.log('开始推流', e);
				},
				fail: (err) => {
					console.log('开始推流失败', err);
				}
			});
		},
		// 开启预览
		startPreview() {
			this.context.startPreview({
				success: (e) => {
					console.log('开启预览', e);
				}
			});
		},
		// 直播状态变化
		statechange(e) {
			console.log('直播状态变化', e);
		},
		// 直播网络变化
		netstatus(e) {
			console.log('直播网络变化', e);
		},
		error(e) {
			console.log('直播报错', e);
		},
		stop() {
			this.context.stop({
				success: () => {
					
				}
			});
		},
		// 继续推流
		resume() {
			this.context.resume({
				success: () => {
					this.isPause = false;
				}
			});
		},
		// 暂停推流
		pause() {
			this.context.pause({
				success: () => {
					this.isPause = true;
				}
			});
		},
		// 退出直播
		back() {
			uni.showModal({
				content: '是否要关闭直播间?',
				success: (res) => {
					if (res.cancel) {
						return;
					}
					this.stop();
				}
			});
		},
	}
};
</script>

腾讯云直播文档地址(发给后端就行---推流地址别加鉴权)

https://cloud.tencent.com/document/product/267/32833

观众端,拉流地址就让后端直接返回就行

其他代码就不贴了,涉及到我这边其他业务,你们不一定用得上,懒得贴

相关推荐
计算机魔术师10 分钟前
我把这套 Notebook 跑通后,终于搞懂了 RAG 到底在做什么
前端
计算机魔术师15 分钟前
失控AI集群策划数月后成功逃离OpenAI
前端
Eiceblue17 分钟前
React 项目实战:用 JavaScript 合并多个本地 Excel 文件
前端·javascript·react.js·excel
水上冰石30 分钟前
【MuJoCo从入门到精通】第2章 第一个 MuJoCo 仿真
前端·人工智能·算法
深蓝AI1 小时前
TypeScript 7.0 原生编译器实战:8—12 倍提速,迁移前的 7 个检查
javascript
码事漫谈1 小时前
比尔·盖茨这次谈的不是模型,是账单
前端·后端
mayaairi2 小时前
JS BOM完全指南(二):事件轮询、三大尺寸家族与浏览器对象详解
开发语言·javascript·ecmascript
星栈2 小时前
AI 生成页面全是紫粉渐变?我用 ui-ux-pro-max-skill 重构了整个产品页
前端·weui
avi91113 小时前
【】js不同颜色(Vue 框架)今时今日2026年学编程入门(10月1日)
前端·vue.js·vue·vue框架·前端入门·vue入门·html上传