Add resolution to create-transcoding-job script (#654)

* Add resolution to create-transcoding-job script

* Requested changes
pull/665/head
Florent F 2018-06-15 18:27:35 +02:00 committed by Chocobozzz
parent f3a2cf8d2f
commit 05623b9030
3 changed files with 46 additions and 4 deletions

View File

@ -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()

View File

@ -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)
})

View File

@ -93,6 +93,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
You can use this script to import a video file to replace an already uploaded file or to add a new resolution to a video.