12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import { registerTSPaths } from '../server/helpers/register-ts-paths'
- registerTSPaths()
- import { program } from 'commander'
- import ffmpeg from 'fluent-ffmpeg'
- import { buildx264VODCommand, runCommand, TranscodeOptions } from '@server/helpers/ffmpeg-utils'
- import { exit } from 'process'
- import { VideoTranscodingProfilesManager } from '@server/lib/transcoding/video-transcoding-profiles'
- program
- .arguments('<path>')
- .requiredOption('-r, --resolution [resolution]', 'video resolution')
- .action((path, cmd) => {
- if (cmd.resolution !== undefined && Number.isNaN(+cmd.resolution)) {
- console.error('The resolution must be an integer (example: 1080).')
- process.exit(-1)
- }
- run(path, cmd)
- .then(() => process.exit(0))
- .catch(err => {
- console.error(err)
- process.exit(-1)
- })
- })
- .parse(process.argv)
- async function run (path: string, cmd: any) {
- const options = {
- type: 'video' as 'video',
- inputPath: path,
- outputPath: '/dev/null',
- availableEncoders: VideoTranscodingProfilesManager.Instance.getAvailableEncoders(),
- profile: 'default',
- resolution: +cmd.resolution,
- isPortraitMode: false
- } as TranscodeOptions
- let command = ffmpeg(options.inputPath)
- .output(options.outputPath)
- command = await buildx264VODCommand(command, options)
- command.on('start', (cmdline) => {
- console.log(cmdline)
- exit()
- })
- await runCommand({ command })
- }
|