File size: 903 Bytes
eb8e9a3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
const express = require('express')
const multer = require('multer')
const ffmpeg = require('fluent-ffmpeg')
const fs = require('fs')
const path = require('path')
const archiver = require('archiver')

const app = express()
const upload = multer({ dest: '/tmp' })

app.post('/upload', upload.single('video'), (req, res) => {
  const video = req.file.path
  const out = `/tmp/f_${Date.now()}`
  fs.mkdirSync(out)

  ffmpeg(video)
    .output(`${out}/frame_%d.png`)
    .on('end', () => {
      const zip = `${out}.zip`
      const stream = fs.createWriteStream(zip)
      const archive = archiver('zip')
      stream.on('close', () => {
        fs.rmSync(video)
        fs.rmSync(out, { recursive: true, force: true })
        res.download(zip, () => fs.unlinkSync(zip))
      })
      archive.pipe(stream)
      archive.directory(out, false)
      archive.finalize()
    })
    .run()
})

app.listen(7860)