Files
discord.js-selfbot/src/client/voice/dispatcher/VideoDispatcher.js

69 lines
1.4 KiB
JavaScript
Raw Normal View History

'use strict';
const BaseDispatcher = require('./BaseDispatcher');
/**
* The class that sends video packet data to the voice connection.
* ```js
* // Obtained using:
* client.voice.joinChannel(channel).then(connection => {
* // You can play a file or a stream here:
* const dispatcher = connection.playVideo('/home/hydrabolt/video.mp4', { fps: 60, preset: 'ultrafast' });
* });
* ```
2024-07-24 19:42:12 +07:00
* @extends {BaseDispatcher}
*/
class VideoDispatcher extends BaseDispatcher {
constructor(player, highWaterMark = 12, streams, fps, payloadType) {
super(player, highWaterMark, payloadType, true, streams);
2025-03-02 18:28:47 +07:00
/**
* Video FPS
* @type {number}
*/
this.fps = fps;
2025-03-02 18:28:47 +07:00
this.mtu = 1200;
}
get TIMESTAMP_INC() {
return 90000 / this.fps;
}
get FRAME_LENGTH() {
return 1000 / this.fps;
}
/**
* Get the type of the dispatcher
* @returns {'video'}
*/
getTypeDispatcher() {
return 'video';
}
partitionMtu(data) {
const out = [];
const dataLength = data.length;
for (let i = 0; i < dataLength; i += this.mtu) {
out.push(data.slice(i, i + this.mtu));
}
return out;
}
/**
* Set FPS
* @param {number} value fps
*/
setFPSSource(value) {
this.fps = value;
}
2025-03-02 18:28:47 +07:00
_codecCallback() {
throw new Error('The _codecCallback method must be implemented');
}
}
module.exports = VideoDispatcher;