fluent-ffmpeg / node-fluent-ffmpeg

A fluent API to FFMPEG (http://www.ffmpeg.org)
MIT License
7.62k stars 872 forks source link

How to record screen on Mac? #1270

Open Nquq opened 2 months ago

Nquq commented 2 months ago

Version information

Code to reproduce

const { createWriteStream } = require('fs')
const ffmpegPath = require('@ffmpeg-installer/ffmpeg').path
const ffmpeg = require('fluent-ffmpeg')
ffmpeg.setFfmpegPath(ffmpegPath)

const cropArea = '3600:1980:0:400'
const screenID = 2

const outStream = createWriteStream('../videos/test.mp4')

const stop = movie => {
    return movie.ffmpegProc.stdin.write('q')
}

const recordingProcessVideo = ffmpeg(`${screenID}:1`)
    .inputFormat('avfoundation')
    .videoFilter(`crop=${cropArea}`)
    .format('matroska')
    .on('error', error => console.log(`Encoding Error: ${error.message}`))
    .on('exit', () => console.log('Video recorder exited'))
    .on('close', () => console.log('Video recorder closed'))
    .on('end', () => console.log('Video Transcoding succeeded !'))
    .on('start', () => console.log('Video Transcoding Started !'))
    .on('progress', progress => console.log(progress))

recordingProcessVideo.pipe(outStream, { end: true })

setTimeout(() => {
    stop(recordingProcessVideo)
}, 3000)

1-2 months ago its works fine, but now its dont work. Only 'start' event work. Nothing happend after timeout

image