secure_video_share/addvideo.js
2024-07-31 13:37:56 +02:00

38 lines
962 B
JavaScript

const fs = require("fs");
const path = require("path");
const crypto = require("crypto");
const { exec } = require("child_process");
const videokey = process.argv[2];
const base = path.join(__dirname, "public", "videos", videokey);
fs.mkdirSync(base);
fs.writeFileSync(
path.join(base, "key_info.txt"),
`
/videos/${videokey}/key_file.key
videos/${videokey}/key_file.key
`.trim(),
);
const key = crypto.randomBytes(16);
fs.writeFileSync(path.join(base, "key_file.key"), key);
const proc = exec(
`ffmpeg -i ../input.mp4 -c:v libx264 -c:a aac -f hls -hls_key_info_file videos/${videokey}/key_info.txt -hls_playlist_type vod -hls_flags independent_segments videos/${videokey}/output.m3u8`,
{ cwd: path.join(__dirname, "public") },
);
proc.stdout.on("data", (data) => {
console.log(data);
});
proc.stderr.on("data", (data) => {
console.error(data);
});
proc.on("exit", () => {
console.log("\n\nHotovo!\nhttp://localhost:3000/?" + videokey);
});