aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/tests/cli
diff options
context:
space:
mode:
Diffstat (limited to 'server/tests/cli')
-rw-r--r--server/tests/cli/index.ts1
-rw-r--r--server/tests/cli/print-transcode-command.ts36
2 files changed, 37 insertions, 0 deletions
diff --git a/server/tests/cli/index.ts b/server/tests/cli/index.ts
index 029cd5196..242589010 100644
--- a/server/tests/cli/index.ts
+++ b/server/tests/cli/index.ts
@@ -4,6 +4,7 @@ import './create-transcoding-job'
4import './optimize-old-videos' 4import './optimize-old-videos'
5import './peertube' 5import './peertube'
6import './plugins' 6import './plugins'
7import './print-transcode-command'
7import './prune-storage' 8import './prune-storage'
8import './reset-password' 9import './reset-password'
9import './update-host' 10import './update-host'
diff --git a/server/tests/cli/print-transcode-command.ts b/server/tests/cli/print-transcode-command.ts
new file mode 100644
index 000000000..4a7988d4d
--- /dev/null
+++ b/server/tests/cli/print-transcode-command.ts
@@ -0,0 +1,36 @@
1/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
2
3import 'mocha'
4import * as chai from 'chai'
5import { execCLI } from '../../../shared/extra-utils'
6import { getTargetBitrate, VideoResolution } from '../../../shared/models/videos'
7import { VIDEO_TRANSCODING_FPS } from '../../initializers/constants'
8import { getVideoFileBitrate, getVideoFileFPS } from '@server/helpers/ffprobe-utils'
9
10const expect = chai.expect
11
12describe('Test create transcoding jobs', function () {
13 it('Should print the correct command for each resolution', async function () {
14 const fixturePath = 'server/tests/fixtures/video_short.webm'
15 const fps = await getVideoFileFPS(fixturePath)
16 const bitrate = await getVideoFileBitrate(fixturePath)
17
18 for (const resolution of [
19 VideoResolution.H_720P,
20 VideoResolution.H_1080P
21 ]) {
22 const command = await execCLI(`npm run print-transcode-command -- ${fixturePath} -r ${resolution}`)
23 const targetBitrate = Math.min(getTargetBitrate(resolution, fps, VIDEO_TRANSCODING_FPS), bitrate)
24
25 expect(command).to.includes(`-y -acodec aac -vcodec libx264 -filter:v scale=w=trunc(oh*a/2)*2:h=${resolution}`)
26 expect(command).to.includes('-f mp4')
27 expect(command).to.includes('-movflags faststart')
28 expect(command).to.includes('-b:a 256k')
29 expect(command).to.includes('-r 25')
30 expect(command).to.includes('-level:v 3.1')
31 expect(command).to.includes('-g:v 50')
32 expect(command).to.includes(`-maxrate ${targetBitrate}`)
33 expect(command).to.includes(`-bufsize ${targetBitrate * 2}`)
34 }
35 })
36})