]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/commitdiff
add script printing command to generate a resolution for a given file
authorRigel Kent <sendmemail@rigelk.eu>
Wed, 23 Dec 2020 02:38:38 +0000 (03:38 +0100)
committerChocobozzz <chocobozzz@cpy.re>
Wed, 13 Jan 2021 08:13:31 +0000 (09:13 +0100)
package.json
scripts/print-transcode-command.ts [new file with mode: 0644]
server/helpers/ffmpeg-utils.ts

index 90b3768ac8fd9cb815004d38b0638c2facb61094..ef4b62dd9226033cb911b75467dd8e512685ff50 100644 (file)
@@ -54,6 +54,7 @@
     "update-host": "node ./dist/scripts/update-host.js",
     "create-transcoding-job": "node ./dist/scripts/create-transcoding-job.js",
     "create-import-video-file-job": "node ./dist/scripts/create-import-video-file-job.js",
+    "print-transcode-command": "node ./dist/scripts/print-transcode-command.js",
     "test": "scripty",
     "help": "scripty",
     "generate-cli-doc": "scripty",
diff --git a/scripts/print-transcode-command.ts b/scripts/print-transcode-command.ts
new file mode 100644 (file)
index 0000000..b75b711
--- /dev/null
@@ -0,0 +1,52 @@
+import { registerTSPaths } from '../server/helpers/register-ts-paths'
+registerTSPaths()
+
+import * as program from 'commander'
+import * as ffmpeg from 'fluent-ffmpeg'
+import { availableEncoders } from '@server/lib/video-transcoding-profiles'
+import { buildx264VODCommand, runCommand, TranscodeOptions } from '@server/helpers/ffmpeg-utils'
+import { exit } from 'process'
+
+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,
+    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)
+}
index bf6408d3e1c63b116c239b779b0622f47209766e..1f5e8d8f6ff69d18609851978a0f8f737ce31563 100644 (file)
@@ -311,22 +311,6 @@ function buildStreamSuffix (base: string, streamNum?: number) {
   return base
 }
 
-// ---------------------------------------------------------------------------
-
-export {
-  getLiveTranscodingCommand,
-  getLiveMuxingCommand,
-  buildStreamSuffix,
-  convertWebPToJPG,
-  processGIF,
-  generateImageFromVideoFile,
-  TranscodeOptions,
-  TranscodeOptionsType,
-  transcode
-}
-
-// ---------------------------------------------------------------------------
-
 // ---------------------------------------------------------------------------
 // Default options
 // ---------------------------------------------------------------------------
@@ -642,3 +626,21 @@ async function runCommand (command: ffmpeg.FfmpegCommand, onEnd?: Function) {
     command.run()
   })
 }
+
+// ---------------------------------------------------------------------------
+
+export {
+  getLiveTranscodingCommand,
+  getLiveMuxingCommand,
+  buildStreamSuffix,
+  convertWebPToJPG,
+  processGIF,
+  generateImageFromVideoFile,
+  TranscodeOptions,
+  TranscodeOptionsType,
+  transcode,
+  runCommand,
+
+  // builders
+  buildx264VODCommand
+}