123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- import { Connection } from "./webrtc/connection.js";
- import { uuid } from "./webrtc/uuid.js";
- document.addEventListener("DOMContentLoaded", async () => {
- const connection = new Connection();
- window.connection = connection;
- const testConfig = {
- userId: uuid(16, 16),
- roomId: "22s1111ss",
- sdkAppId: 1400653314,
- sceneCode: "2111",
- };
- console.log("testConfig", testConfig);
- connection.init(testConfig, async () => {
- if (connection.client) {
- await connection.client.join({ roomId: testConfig.roomId });
- console.log("userSig", connection.userSig);
- // connection.socket.on("init-scene", {
- // videos: ["0/0_1_0", "1/0_2_0"],
- // range: [start, end],
- // isRotate: true,
- // });
- connection.socket.emit("getPush", {
- userId: testConfig.userId,
- roomId: testConfig.roomId,
- sceneCode: testConfig.sceneCode,
- userSig: connection.userSig,
- });
- connection.socket.on("getPush", (data) => {
- console.log(
- "getPush",
- `ffmpeg -loglevel info -re -stream_loop -1 -i output.mp4 -c:v libx264 -preset fast -profile:v baseline -g 30 -sc_threshold 0 -b:v 1500k -f flv "${data}"`
- );
- });
- connection.socket.emit("init-webrtc");
- console.log("connection.client", connection.client);
- connection.client.on("peer-join", (event) => {
- console.log("peer-join", event);
- });
- connection.client.on("client-banned", () => {
- location.reload();
- });
- connection.client.on("stream-added", (event) => {
- const remoteStream = event.stream;
- const remoteUserId = remoteStream.getUserId();
- console.warn("stream-added", remoteStream);
- console.warn(
- "received a remoteStream ID: " +
- remoteStream.getId() +
- " from user: " +
- remoteUserId
- );
- // 若需要观看该远端流,则需要订阅它
- connection.client.subscribe(remoteStream);
- });
- // connection.client.on('network-quality', event => {
- // console.log(`network-quality, uplinkNetworkQuality:${event.uplinkNetworkQuality}, downlinkNetworkQuality: ${event.downlinkNetworkQuality}`)
- // // 自 v4.10.3 支持获取上、下行的 RTT 及丢包率
- // console.log(`uplink rtt:${event.uplinkRTT} loss:${event.uplinkLoss}`)
- // console.log(`downlink rtt:${event.downlinkRTT} loss:${event.downlinkLoss}`)
- // })
- connection.client.on("stream-subscribed", (event) => {
- const remoteStream = event.stream;
- // 远端流订阅成功,在HTML页面中创建一个<video>标签,假设该标签ID为‘remote-video-view’
- // 播放该远端流
- // console.log("remoteStream", remoteStream);
- // remoteStream.resume();
- remoteStream.play("testVideoFeed");
- const frame = remoteStream.getVideoFrame();
- const track = remoteStream.getVideoTrack();
- console.warn("frame", frame, track);
- console.warn("frame", remoteStream);
- });
- connection.client.on("error", (event) => {
- console.log("error", event);
- });
- connection.client.on("connection-state-changed", (event) => {
- console.warn("connection-state-changed", event);
- });
- // 监听‘stream-removed’事件
- connection.client.on("stream-removed", (event) => {
- const remoteStream = event.stream;
- console.log(
- "remoteStream ID: " +
- remoteStream.getId() +
- " has been removed"
- );
- // 停止播放并删除相应<video>标签
- });
- // 监听‘stream-updated’事件
- connection.client.on("stream-updated", (event) => {
- const remoteStream = event.stream;
- console.warn(
- "remoteStream ID: " +
- remoteStream.getId() +
- " was updated hasAudio: " +
- remoteStream.hasAudio() +
- " hasVideo: " +
- remoteStream.hasVideo()
- );
- });
- // 监听‘stream-subscribed’事件
- }
- });
- });
|