Spaces:
				
			
			
	
			
			
		Paused
		
	
	
	
			
			
	
	
	
	
		
		
		Paused
		
	File size: 994 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 24 25 26 27 28 29 30 31 32 33 34 | import fs from "node:fs"
import util from "node:util"
import path from "node:path"
import ffmpeg from "fluent-ffmpeg"
import { v4 as uuidv4 } from "uuid"
import tmpDir from "temp-dir"
const unlinkAsync = util.promisify(fs.unlink)
export async function getFirstVideoFrameAsBase64(videoPath: string): Promise<string | void> {
  const tmpFileName = `${uuidv4()}.jpg`
  const tmpFilePath = path.resolve(tmpDir, tmpFileName)
    return new Promise((resolve, reject) => {
        ffmpeg(videoPath)
            .outputOptions("-vframes 1")
            .output(tmpFilePath)
            .on("end", async () => {
                let base64;
                try {
                  base64 = await fs.promises.readFile(tmpFilePath, { encoding: "base64" });
                  await unlinkAsync(tmpFilePath)
                } catch(err) {
                   return reject(err)
                }
                resolve(base64)
            })
            .on("error", reject)
            .run()
    })
}
 | 
