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); });