feat: remove Receiver#createVideoStream
nah
This commit is contained in:
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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
4
typings/index.d.ts
vendored
@@ -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';
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user