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

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

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

相关推荐
王夏奇4 分钟前
python中的__all__ 具体用法
java·前端·python
叫我一声阿雷吧35 分钟前
JS 入门通关手册(45):浏览器渲染原理与重绘重排(性能优化核心,面试必考
javascript·前端面试·前端性能优化·浏览器渲染·浏览器渲染原理,重排重绘·reflow·repaint
大家的林语冰1 小时前
《前端周刊》尤大开源 Vite+ 全家桶,前端工业革命启动;尤大爆料 Void 云服务新产品,Vite 进军全栈开发;ECMA 源码映射规范......
前端·javascript·vue.js
jiayong231 小时前
第 8 课:开始引入组合式函数
前端·javascript·学习
田八1 小时前
聊聊AI的发展史,AI的爆发并不是偶然
前端·人工智能·程序员
zhanghongbin011 小时前
AI 采集器:Claude Code、OpenAI、LiteLLM 监控
java·前端·人工智能
IT_陈寒1 小时前
Python的列表推导式里藏了个坑,差点让我加班到凌晨
前端·人工智能·后端
吴声子夜歌1 小时前
ES6——正则的扩展详解
前端·mysql·es6
天若有情6732 小时前
【C++原创开源】formort.h:一行头文件,实现比JS模板字符串更爽的链式拼接+响应式变量
开发语言·javascript·c++·git·github·开源项目·模版字符串
天***88522 小时前
Edge 浏览器离线绿色增强版+官方安装包,支持win7等系统
前端·edge