From 05623b9030e16449b21a55735fb0451276d61e14 Mon Sep 17 00:00:00 2001 From: Florent F Date: Fri, 15 Jun 2018 18:27:35 +0200 Subject: [PATCH] Add resolution to create-transcoding-job script (#654) * Add resolution to create-transcoding-job script * Requested changes --- scripts/create-transcoding-job.ts | 13 ++++++++- server/tests/cli/create-transcoding-job.ts | 32 ++++++++++++++++++++-- support/doc/tools.md | 5 ++++ 3 files changed, 46 insertions(+), 4 deletions(-) diff --git a/scripts/create-transcoding-job.ts b/scripts/create-transcoding-job.ts index 463cdfad3..179fb4fa6 100755 --- a/scripts/create-transcoding-job.ts +++ b/scripts/create-transcoding-job.ts @@ -8,6 +8,7 @@ import { JobQueue } from '../server/lib/job-queue' program .option('-v, --video [videoUUID]', 'Video UUID') + .option('-r, --resolution [resolution]', 'Video resolution (integer)') .parse(process.argv) if (program['video'] === undefined) { @@ -15,6 +16,11 @@ if (program['video'] === undefined) { process.exit(-1) } +if (program.resolution !== undefined && Number.isNaN(+program.resolution)) { + console.error('The resolution must be an integer (example: 1080).') + process.exit(-1) +} + run() .then(() => process.exit(0)) .catch(err => { @@ -30,7 +36,12 @@ async function run () { const dataInput = { videoUUID: video.uuid, - isNewVideo: false + isNewVideo: false, + resolution: undefined + } + + if (program.resolution !== undefined) { + dataInput.resolution = program.resolution } await JobQueue.Instance.init() diff --git a/server/tests/cli/create-transcoding-job.ts b/server/tests/cli/create-transcoding-job.ts index e7c36f9c6..c2e3840c5 100644 --- a/server/tests/cli/create-transcoding-job.ts +++ b/server/tests/cli/create-transcoding-job.ts @@ -22,6 +22,7 @@ const expect = chai.expect describe('Test create transcoding jobs', function () { let servers: ServerInfo[] = [] + let video1UUID: string let video2UUID: string before(async function () { @@ -36,9 +37,10 @@ describe('Test create transcoding jobs', function () { await doubleFollow(servers[0], servers[1]) // Upload two videos for our needs - await uploadVideo(servers[0].url, servers[0].accessToken, { name: 'video1' }) - const res = await uploadVideo(servers[0].url, servers[0].accessToken, { name: 'video2' }) - video2UUID = res.body.video.uuid + const res1 = await uploadVideo(servers[0].url, servers[0].accessToken, { name: 'video1' }) + video1UUID = res1.body.video.uuid + const res2 = await uploadVideo(servers[0].url, servers[0].accessToken, { name: 'video2' }) + video2UUID = res2.body.video.uuid await waitJobs(servers) }) @@ -100,6 +102,30 @@ describe('Test create transcoding jobs', function () { } }) + it('Should run a transcoding job on video 1 with resolution', async function () { + this.timeout(60000) + + const env = getEnvCli(servers[0]) + await execCLI(`${env} npm run create-transcoding-job -- -v ${video1UUID} -r 480`) + + await waitJobs(servers) + + for (const server of servers) { + const res = await getVideosList(server.url) + const videos = res.body.data + expect(videos).to.have.lengthOf(2) + + const res2 = await getVideo(server.url, video1UUID) + const videoDetail: VideoDetails = res2.body + + expect(videoDetail.files).to.have.lengthOf(2) + + expect(videoDetail.files[0].resolution.id).to.equal(720) + + expect(videoDetail.files[1].resolution.id).to.equal(480) + } + }) + after(async function () { killallServers(servers) }) diff --git a/support/doc/tools.md b/support/doc/tools.md index 26b44c835..0addc0803 100644 --- a/support/doc/tools.md +++ b/support/doc/tools.md @@ -92,6 +92,11 @@ You can use this script to force transcoding of an existing video. ``` $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run create-transcoding-job -- -v [videoUUID] ``` + +Or to transcode to a specific resolution: +``` +$ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run create-transcoding-job -- -v [videoUUID] -r [resolution] +``` ### create-import-video-file-job.js