diff options
Diffstat (limited to 'server/tests/cli/print-transcode-command.ts')
-rw-r--r-- | server/tests/cli/print-transcode-command.ts | 36 |
1 files changed, 36 insertions, 0 deletions
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 | |||
3 | import 'mocha' | ||
4 | import * as chai from 'chai' | ||
5 | import { execCLI } from '../../../shared/extra-utils' | ||
6 | import { getTargetBitrate, VideoResolution } from '../../../shared/models/videos' | ||
7 | import { VIDEO_TRANSCODING_FPS } from '../../initializers/constants' | ||
8 | import { getVideoFileBitrate, getVideoFileFPS } from '@server/helpers/ffprobe-utils' | ||
9 | |||
10 | const expect = chai.expect | ||
11 | |||
12 | describe('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 | }) | ||