58 lines
1.7 KiB
TypeScript
58 lines
1.7 KiB
TypeScript
import { Client } from "discord.js-selfbot-v13";
|
|||
|
|
import dotenv from "dotenv";
|
||
|
|
import { createYtDlp } from "./src/media/ytdlp.js";
|
||
|
|
import { Streamer } from "./vendor/Discord-video-stream/dist/client/index.js";
|
||
|
|
import {
|
||
|
|
playStream,
|
||
|
|
prepareStream,
|
||
|
|
} from "./vendor/Discord-video-stream/dist/media/newApi.js";
|
||
|
|
|
||
|
|
dotenv.config();
|
||
|
|
|
||
|
|
async function test() {
|
||
|
|
const ytdlp = createYtDlp();
|
||
|
|
const url = "https://www.youtube.com/watch?v=aqz-KE-bpKQ"; // Small video
|
||
|
|
|
||
|
|
console.log("Getting direct video url...");
|
||
|
|
const directUrl = await ytdlp.getDirectVideoUrl(url);
|
||
|
|
console.log("Direct URL:", directUrl);
|
||
|
|
|
||
|
|
console.log("Preparing stream...");
|
||
|
|
const { command, output } = prepareStream(directUrl, {
|
||
|
|
logLevel: "debug",
|
||
|
|
customInputOptions: [
|
||
|
|
"-headers",
|
||
|
|
"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.3\r\nConnection: keep-alive\r\n",
|
||
|
|
],
|
||
|
|
});
|
||
|
|
|
||
|
|
command.on("stderr", (data) => {
|
||
|
|
console.log("FFMPEG STDERR:", data);
|
||
|
|
});
|
||
|
|
|
||
|
|
console.log("Testing demux manually...");
|
||
|
|
const { demux } = await import(
|
||
|
|
"./vendor/Discord-video-stream/dist/media/LibavDemuxer.js"
|
||
|
|
);
|
||
|
|
try {
|
||
|
|
const demuxPromise = demux(output, { format: "nut" });
|
||
|
|
const timeoutPromise = new Promise((_, reject) =>
|
||
|
|
setTimeout(() => reject(new Error("Demux timeout")), 15000),
|
||
|
|
);
|
||
|
|
|
||
|
|
const { video, audio } = (await Promise.race([
|
||
|
|
demuxPromise,
|
||
|
|
timeoutPromise,
|
||
|
|
])) as any;
|
||
|
|
console.log("Demux success!");
|
||
|
|
console.log("Video stream:", !!video);
|
||
|
|
console.log("Audio stream:", !!audio);
|
||
|
|
} catch (err) {
|
||
|
|
console.error("Demux failed:", err.message);
|
||
|
|
}
|
||
|
|
|
||
|
|
process.exit(0);
|
||
|
|
}
|
||
|
|
|
||
|
|
test();
|