新增功能
This commit is contained in:
+243
@@ -0,0 +1,243 @@
|
||||
import b, { translateTRTCStreamId as v } from "@tencentcloud/trtc-cloud-wx";
|
||||
export * from "@tencentcloud/trtc-cloud-wx";
|
||||
import { default as H } from "@tencentcloud/trtc-cloud-wx";
|
||||
import { resolveComponent as m, openBlock as h, createElementBlock as y, createVNode as g, createBlock as _, createCommentVNode as C } from "vue";
|
||||
const f = (t, o) => {
|
||||
const r = t.__vccOpts || t;
|
||||
for (const [n, e] of o)
|
||||
r[n] = e;
|
||||
return r;
|
||||
}, p = b.getTRTCShareInstance(), u = p.trtc, l = p.InterfaceEventEmitter, R = {
|
||||
name: "TRTCPusher",
|
||||
data() {
|
||||
return {
|
||||
pusher: {},
|
||||
soundMode: ""
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
p.logger.info("trtc-pusher attached"), this.bindTRTCCloudEvent(), l.emit("pusherDomReady", !0);
|
||||
},
|
||||
beforeUnmount() {
|
||||
this.executeCleanup();
|
||||
},
|
||||
beforeDestroy() {
|
||||
this.executeCleanup();
|
||||
},
|
||||
methods: {
|
||||
executeCleanup() {
|
||||
p.logger.info("trtc-pusher detached"), l.emit("pusherDomReady", !1), this.unbindTRTCCloudEvent(), p.exitRoom();
|
||||
},
|
||||
pusherAttributesChange(t) {
|
||||
const { pusher: o, callback: r } = t;
|
||||
this.pusher = { ...this.pusher, ...o }, r && this.$nextTick(r);
|
||||
},
|
||||
playerAudioRouteChange(t) {
|
||||
const { soundMode: o, callback: r } = t;
|
||||
this.soundMode = o, r && r();
|
||||
},
|
||||
bindTRTCCloudEvent() {
|
||||
l.on("pusherAttributesChange", this.pusherAttributesChange), l.on("playerAudioRouteChange", this.playerAudioRouteChange);
|
||||
},
|
||||
unbindTRTCCloudEvent() {
|
||||
l.off("pusherAttributesChange", this.pusherAttributesChange), l.off("playerAudioRouteChange", this.playerAudioRouteChange);
|
||||
},
|
||||
handleStateChange(t) {
|
||||
u.pusherEventHandler(t);
|
||||
},
|
||||
handleNetStatus(t) {
|
||||
u.pusherNetStatusHandler(t);
|
||||
},
|
||||
handleError(t) {
|
||||
u.pusherErrorHandler(t);
|
||||
},
|
||||
handleBGMStart(t) {
|
||||
u.pusherBGMStartHandler(t);
|
||||
},
|
||||
handleBGMProgress(t) {
|
||||
u.pusherBGMProgressHandler(t);
|
||||
},
|
||||
handleBGMComplete(t) {
|
||||
u.pusherBGMCompleteHandler(t);
|
||||
},
|
||||
handleAudioVolumeNotify(t) {
|
||||
p.isEnterRoom && u.pusherAudioVolumeNotify(t);
|
||||
}
|
||||
}
|
||||
}, I = { class: "trtc-pusher-container" };
|
||||
function A(t, o, r, n, e, a) {
|
||||
const d = m("live-pusher"), T = m("live-player");
|
||||
return h(), y("div", I, [
|
||||
g(d, {
|
||||
class: "trtc-pusher",
|
||||
url: e.pusher.url,
|
||||
mode: "HD",
|
||||
autopush: e.pusher.autopush,
|
||||
"enable-camera": e.pusher.enableCamera,
|
||||
"enable-mic": e.pusher.enableMic,
|
||||
muted: e.pusher.muted,
|
||||
"enable-agc": e.pusher.enableAgc,
|
||||
"enable-ans": e.pusher.enableAns,
|
||||
"enable-ear-monitor": e.pusher.enableEarMonitor,
|
||||
"auto-focus": e.pusher.enableAutoFocus,
|
||||
zoom: e.pusher.enableZoom,
|
||||
"min-bitrate": e.pusher.minBitrate,
|
||||
"max-bitrate": e.pusher.maxBitrate,
|
||||
"video-width": e.pusher.videoWidth,
|
||||
"video-height": e.pusher.videoHeight,
|
||||
beauty: e.pusher.beautyLevel,
|
||||
whiteness: e.pusher.whitenessLevel,
|
||||
orientation: e.pusher.videoOrientation,
|
||||
aspect: e.pusher.videoAspect,
|
||||
"device-position": e.pusher.frontCamera,
|
||||
"remote-mirror": e.pusher.enableRemoteMirror,
|
||||
"local-mirror": e.pusher.localMirror,
|
||||
"background-mute": e.pusher.enableBackgroundMute,
|
||||
"audio-quality": e.pusher.audioQuality,
|
||||
"audio-volume-type": e.pusher.audioVolumeType,
|
||||
"audio-reverb-type": e.pusher.audioReverbType,
|
||||
"waiting-image": e.pusher.waitingImage,
|
||||
"beauty-style": e.pusher.beautyStyle,
|
||||
fps: e.pusher.fps,
|
||||
filter: e.pusher.filter,
|
||||
onStatechange: a.handleStateChange,
|
||||
onNetstatus: a.handleNetStatus,
|
||||
onError: a.handleError,
|
||||
onBgmstart: a.handleBGMStart,
|
||||
onBgmprogress: a.handleBGMProgress,
|
||||
onBgmcomplete: a.handleBGMComplete,
|
||||
onAudiovolumenotify: a.handleAudioVolumeNotify
|
||||
}, null, 8, ["url", "autopush", "enable-camera", "enable-mic", "muted", "enable-agc", "enable-ans", "enable-ear-monitor", "auto-focus", "zoom", "min-bitrate", "max-bitrate", "video-width", "video-height", "beauty", "whiteness", "orientation", "aspect", "device-position", "remote-mirror", "local-mirror", "background-mute", "audio-quality", "audio-volume-type", "audio-reverb-type", "waiting-image", "beauty-style", "fps", "filter", "onStatechange", "onNetstatus", "onError", "onBgmstart", "onBgmprogress", "onBgmcomplete", "onAudiovolumenotify"]),
|
||||
g(T, {
|
||||
class: "trtc-player",
|
||||
"sound-mode": e.soundMode
|
||||
}, null, 8, ["sound-mode"])
|
||||
]);
|
||||
}
|
||||
const S = /* @__PURE__ */ f(R, [["render", A], ["__scopeId", "data-v-c40920dd"]]);
|
||||
const s = b.getTRTCShareInstance(), c = s.trtc, i = s.InterfaceEventEmitter, E = {
|
||||
name: "TRTCPlayer",
|
||||
props: {
|
||||
streamId: {
|
||||
type: String,
|
||||
default: ""
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
player: {},
|
||||
TRTCStreamId: "",
|
||||
soundMode: ""
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
streamId(t) {
|
||||
this.setTRTCStreamId(t);
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
s.logger.info("trtc-player attached", this.streamId), this.streamId && i.emit("playerDomReady", { isReady: !0, view: this.streamId }), this.TRTCStreamId = this.getTRTCStreamId(this.streamId), this.bindTRTCCloudEvent();
|
||||
},
|
||||
beforeUnmount() {
|
||||
this.executeCleanup();
|
||||
},
|
||||
beforeDestroy() {
|
||||
this.executeCleanup();
|
||||
},
|
||||
methods: {
|
||||
executeCleanup() {
|
||||
s.logger.info("trtc-player detached", this.streamId), i.emit("playerDomReady", { isReady: !1, streamId: this.streamId }), this.unbindTRTCCloudEvent();
|
||||
},
|
||||
setTRTCStreamId(t) {
|
||||
return s.logger.info("trtc-player setTRTCStreamId", t), new Promise((o, r) => {
|
||||
try {
|
||||
this.$emit("update:streamId", t), this.TRTCStreamId = this.getTRTCStreamId(t), this.$nextTick(() => {
|
||||
s.logger.info("trtc-player setTRTCStreamId success", t), o(), i.emit("playerDomReady", { isReady: !0, view: t });
|
||||
});
|
||||
} catch (n) {
|
||||
s.logger.info("trtc-player setTRTCStreamId fail", t, n), r(n);
|
||||
}
|
||||
});
|
||||
},
|
||||
// 其他方法保持原有逻辑...
|
||||
getTRTCStreamId(t) {
|
||||
const o = t.split("_"), r = o.slice(0, -1).join("_"), n = Number(o[o.length - 1]);
|
||||
return v(r, n);
|
||||
},
|
||||
bindTRTCCloudEvent() {
|
||||
i.on("playerAttributesChange", this.playerAttributesChange), i.on("playerAudioRouteChange", this.playerAudioRouteChange);
|
||||
},
|
||||
unbindTRTCCloudEvent() {
|
||||
i.off("playerAttributesChange", this.playerAttributesChange), i.off("playerAudioRouteChange", this.playerAudioRouteChange);
|
||||
},
|
||||
playerAttributesChange(t) {
|
||||
const { view: o, playerAttributes: r, callback: n } = t;
|
||||
o === this.streamId && (this.player = { ...this.player, ...r }, n && n());
|
||||
},
|
||||
playerAudioRouteChange(t) {
|
||||
const { soundMode: o, callback: r } = t;
|
||||
this.soundMode = o, r && r();
|
||||
},
|
||||
_playerStateChange(t) {
|
||||
c.playerEventHandler(t);
|
||||
},
|
||||
_playerFullscreenChange(t) {
|
||||
c.playerFullscreenChange(t);
|
||||
},
|
||||
_playerNetStatus(t) {
|
||||
c.playerNetStatus(t);
|
||||
},
|
||||
_playerAudioVolumeNotify(t) {
|
||||
try {
|
||||
t.currentTarget.dataset.streamid = this.player.streamID, c.playerAudioVolumeNotify(t);
|
||||
} catch (o) {
|
||||
s.logger.warn(o);
|
||||
}
|
||||
}
|
||||
}
|
||||
}, M = { class: "trtc-player-container" }, x = {
|
||||
key: 1,
|
||||
class: "trtc-dark-mask"
|
||||
};
|
||||
function B(t, o, r, n, e, a) {
|
||||
const d = m("live-player");
|
||||
return h(), y("div", M, [
|
||||
r.streamId ? (h(), _(d, {
|
||||
key: 0,
|
||||
class: "trtc-player",
|
||||
id: e.player.streamID,
|
||||
"data-userid": e.player.userID,
|
||||
"data-streamid": e.player.streamID,
|
||||
"data-streamtype": e.player.streamType,
|
||||
src: e.player.src,
|
||||
mode: "RTC",
|
||||
autoplay: e.player.autoplay,
|
||||
"mute-audio": e.player.muteAudio,
|
||||
"mute-video": e.player.muteVideo,
|
||||
orientation: e.player.orientation,
|
||||
"object-fit": e.player.objectFit,
|
||||
"background-mute": e.player.enableBackgroundMute,
|
||||
"min-cache": e.player.minCache,
|
||||
"max-cache": e.player.maxCache,
|
||||
"sound-mode": e.soundMode,
|
||||
"enable-recv-message": e.player.enableRecvMessage,
|
||||
"auto-pause-if-navigate": e.player.autoPauseIfNavigate,
|
||||
"auto-pause-if-open-native": e.player.autoPauseIfOpenNative,
|
||||
debug: e.player.debug,
|
||||
onStatechange: a._playerStateChange,
|
||||
onFullscreenchange: a._playerFullscreenChange,
|
||||
onNetstatus: a._playerNetStatus,
|
||||
onAudiovolumenotify: a._playerAudioVolumeNotify
|
||||
}, null, 8, ["id", "data-userid", "data-streamid", "data-streamtype", "src", "autoplay", "mute-audio", "mute-video", "orientation", "object-fit", "background-mute", "min-cache", "max-cache", "sound-mode", "enable-recv-message", "auto-pause-if-navigate", "auto-pause-if-open-native", "debug", "onStatechange", "onFullscreenchange", "onNetstatus", "onAudiovolumenotify"])) : C("", !0),
|
||||
e.player.stopVideo ? (h(), y("div", x)) : C("", !0)
|
||||
]);
|
||||
}
|
||||
const N = /* @__PURE__ */ f(E, [["render", B], ["__scopeId", "data-v-645a3f31"]]), P = (t) => {
|
||||
t.component("TRTCPusher", S), t.component("TRTCPlayer", N);
|
||||
};
|
||||
export {
|
||||
N as TRTCPlayer,
|
||||
S as TRTCPusher,
|
||||
H as default,
|
||||
P as install
|
||||
};
|
||||
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
.trtc-pusher-container[data-v-c40920dd]{height:100%;width:100%;position:relative}.trtc-pusher[data-v-c40920dd]{height:100%;width:100%}.trtc-player[data-v-c40920dd]{width:0;height:0;display:flex}.trtc-player-container[data-v-645a3f31]{height:100%;width:100%;position:relative}.trtc-player[data-v-645a3f31]{height:100%;width:100%}.trtc-dark-mask[data-v-645a3f31]{width:100%;height:100%;background-color:#000;position:absolute;top:0}
|
||||
Reference in New Issue
Block a user