ipcMain.on("videos:added", (event, videos) => { const promises = _.map(videos, video => { return new Promise(resolve => { ffmpeg.ffprobe(video.path, (err, metadata) => { video.duration = metadata.format.duration; video.format = "avi"; resolve(video); }); }); }); Promise.all(promises).then(results => { mainWindow.webContents.send("metadata:complete", results); }); });
const getVideoMetadata = (filePath) => { return new Promise((resolve, reject) => { ffmpeg(filePath) .ffprobe((err, metadata) => { if (err) { reject(err); return; } if (!(metadata && metadata.streams && metadata.format && metadata.format.duration)) { reject(new Error(`Fail to parse metadata`)); return; } const video = metadata.streams.find((s) => s.codec_type === 'video'); if (!video) { reject(new Error(`No video stream found`)); return; } const audio = metadata.streams.find((s) => s.codec_type === 'audio'); const duration = metadata.format.duration; resolve({ audio, video, duration }); }); }); }
var wd = 0; var markdir = "./public/mark/mark.png"; var videometa = metadata.format; var videostreams = metadata.streams; var bitrate = Math.floor(videometa.bit_rate / 1000);
var wd = 0; var markdir = "./public/mark/mark.png"; var videometa = metadata.format; var videostreams = metadata.streams; var bitrate = Math.floor(videometa.bit_rate / 1000);