File size: 620 Bytes
07d10ce
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import path from "node:path"

import ffmpeg from "fluent-ffmpeg"
import { v4 as uuidv4 } from "uuid"
import tmpDir from "temp-dir"

export async function getFirstVideoFrame(videoFilePath: string): Promise<string | void> {
  const tmpFileName = `${uuidv4()}.jpg`

  const tmpFilePath = path.resolve(tmpDir, tmpFileName)

    return new Promise((resolve, reject) => {
        ffmpeg(videoFilePath)
            .outputOptions("-vframes 1")
            .output(tmpFilePath)
            .on("end", async () => {
                resolve(tmpFilePath)
            })
            .on("error", reject)
            .run()
    })
}