feat: remove Receiver#createVideoStream

nah
This commit is contained in:
Elysia
2024-09-16 22:01:58 +07:00
parent 99e348fe2b
commit f4a4fb6416
3 changed files with 4 additions and 58 deletions

View File

@@ -4,7 +4,6 @@ const EventEmitter = require('events');
const { Buffer } = require('node:buffer'); const { Buffer } = require('node:buffer');
const crypto = require('node:crypto'); const crypto = require('node:crypto');
const { setTimeout } = require('node:timers'); const { setTimeout } = require('node:timers');
const { IvfJoinner } = require('./video/IvfJoinner');
const Speaking = require('../../../util/Speaking'); const Speaking = require('../../../util/Speaking');
const secretbox = require('../util/Secretbox'); const secretbox = require('../util/Secretbox');
const { SILENCE_FRAME } = require('../util/Silence'); const { SILENCE_FRAME } = require('../util/Silence');
@@ -27,7 +26,7 @@ class PacketHandler extends EventEmitter {
this.receiver = receiver; this.receiver = receiver;
this.nonce = null; this.nonce = null;
this.streams = new Map(); this.streams = new Map();
this.videoStreams = new Map(); this.videoStreams = new Map(); // Placeholder
this.speakingTimeouts = new Map(); this.speakingTimeouts = new Map();
} }
@@ -64,14 +63,6 @@ class PacketHandler extends EventEmitter {
return stream; return stream;
} }
makeVideoStream(user) {
if (this.videoStreams.has(user)) return this.videoStreams.get(user);
const stream = new IvfJoinner('VP8'); // Test VP8 ok
stream.stream.on('end', () => this.videoStreams.delete(user));
this.videoStreams.set(user, stream);
return stream;
}
parseBuffer(buffer) { parseBuffer(buffer) {
const { secret_key, mode } = this.receiver.connection.authentication; const { secret_key, mode } = this.receiver.connection.authentication;
// Open packet // Open packet
@@ -118,20 +109,6 @@ class PacketHandler extends EventEmitter {
packet = Buffer.from(packet); packet = Buffer.from(packet);
break; break;
} }
case 'xsalsa20_poly1305_lite': {
packet = secretbox.methods.open(buffer.slice(12, buffer.length - 4), this.nonce, secret_key);
break;
}
case 'xsalsa20_poly1305_suffix': {
packet = secretbox.methods.open(buffer.slice(12, buffer.length - 24), this.nonce, secret_key);
break;
}
case 'xsalsa20_poly1305': {
packet = secretbox.methods.open(buffer.slice(12), this.nonce, secret_key);
break;
}
default: { default: {
throw new RangeError(`Unsupported decryption method: ${mode}`); throw new RangeError(`Unsupported decryption method: ${mode}`);
} }
@@ -158,7 +135,7 @@ class PacketHandler extends EventEmitter {
push(buffer) { push(buffer) {
const ssrc = buffer.readUInt32BE(8); const ssrc = buffer.readUInt32BE(8);
const userStat = this.connection.ssrcMap.get(ssrc) || this.connection.ssrcMap.get(ssrc - 1); // Maybe vidoe_ssrc ? const userStat = this.connection.ssrcMap.get(ssrc) || this.connection.ssrcMap.get(ssrc - 1); // Maybe video_ssrc ?
if (!userStat) return; if (!userStat) return;

View File

@@ -53,37 +53,6 @@ class VoiceReceiver extends EventEmitter {
} }
return stream; return stream;
} }
/**
* Creates a new video receiving stream. If a stream already exists for a user, then that stream will be returned
* rather than generating a new one.
* @param {UserResolvable} user The user to start listening to.
* @returns {IvfJoinner}
* @deprecated Only support VP8
* @example
* const video = connection.receiver.createVideoStream('1071734918972985395');
* video.stream.pipe(fs.createWriteStream('test.ivf'));
* setTimeout(() => {
* video.stop();
* video.createFinalFile(
* fs.createReadStream('test.ivf'),
* fs.createWriteStream('final.ivf'),
* );
* }, 10_000);
*/
createVideoStream(user) {
user = this.connection.client.users.resolve(user);
if (!user) throw new Error('VOICE_USER_MISSING');
const stream = this.packets.makeVideoStream(user.id);
return stream;
}
createTestVideoStream(user) {
user = this.connection.client.users.resolve(user);
if (!user) throw new Error('VOICE_USER_MISSING');
const stream = this.packets.makeTestVideoStream(user.id);
return stream;
}
} }
module.exports = VoiceReceiver; module.exports = VoiceReceiver;

4
typings/index.d.ts vendored
View File

@@ -1076,8 +1076,6 @@ export class StreamConnection extends VoiceConnection {
export class VoiceReceiver extends EventEmitter { export class VoiceReceiver extends EventEmitter {
constructor(connection: VoiceConnection); constructor(connection: VoiceConnection);
public createStream(user: UserResolvable, options?: { mode?: 'opus' | 'pcm'; end?: 'silence' | 'manual' }): Readable; public createStream(user: UserResolvable, options?: { mode?: 'opus' | 'pcm'; end?: 'silence' | 'manual' }): Readable;
/** @deprecated Only recorded VP8 stream */
public createVideoStream(user: UserResolvable): IvfJoinner;
public on(event: 'debug', listener: (error: Error | string) => void): this; public on(event: 'debug', listener: (error: Error | string) => void): this;
public on(event: string, listener: (...args: any[]) => void): this; public on(event: string, listener: (...args: any[]) => void): this;
@@ -1086,12 +1084,14 @@ export class VoiceReceiver extends EventEmitter {
public once(event: string, listener: (...args: any[]) => void): this; public once(event: string, listener: (...args: any[]) => void): this;
} }
/*
export class IvfJoinner { export class IvfJoinner {
constructor(codec: 'VP8'); constructor(codec: 'VP8');
public stream: Readable; public stream: Readable;
public stop(): void; public stop(): void;
public createFinalFile(read: Readable, write: Writable): void; public createFinalFile(read: Readable, write: Writable): void;
} }
*/
export { Collection } from '@discordjs/collection'; export { Collection } from '@discordjs/collection';