Support additional video extensions

This commit is contained in:
Chocobozzz
2018-12-11 14:52:50 +01:00
parent 8923187455
commit 14e2014acc
39 changed files with 268 additions and 90 deletions

View File

@@ -54,6 +54,7 @@ describe('Test config API validators', function () {
},
transcoding: {
enabled: true,
allowAdditionalExtensions: true,
threads: 1,
resolutions: {
'240p': false,

View File

@@ -320,10 +320,15 @@ describe('Test videos API validator', function () {
it('Should fail without an incorrect input file', async function () {
const fields = baseCorrectParams
const attaches = {
let attaches = {
'videofile': join(__dirname, '..', '..', 'fixtures', 'video_short_fake.webm')
}
await makeUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches })
attaches = {
'videofile': join(__dirname, '..', '..', 'fixtures', 'video_short.mkv')
}
await makeUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches })
})
it('Should fail with an incorrect thumbnail file', async function () {

View File

@@ -17,6 +17,7 @@ import {
setAccessTokensToServers,
updateCustomConfig
} from '../../../../shared/utils'
import { ServerConfig } from '../../../../shared/models'
const expect = chai.expect
@@ -43,6 +44,7 @@ function checkInitialConfig (data: CustomConfig) {
expect(data.user.videoQuota).to.equal(5242880)
expect(data.user.videoQuotaDaily).to.equal(-1)
expect(data.transcoding.enabled).to.be.false
expect(data.transcoding.allowAdditionalExtensions).to.be.false
expect(data.transcoding.threads).to.equal(2)
expect(data.transcoding.resolutions['240p']).to.be.true
expect(data.transcoding.resolutions['360p']).to.be.true
@@ -74,6 +76,7 @@ function checkUpdatedConfig (data: CustomConfig) {
expect(data.user.videoQuotaDaily).to.equal(318742)
expect(data.transcoding.enabled).to.be.true
expect(data.transcoding.threads).to.equal(1)
expect(data.transcoding.allowAdditionalExtensions).to.be.true
expect(data.transcoding.resolutions['240p']).to.be.false
expect(data.transcoding.resolutions['360p']).to.be.true
expect(data.transcoding.resolutions['480p']).to.be.true
@@ -96,7 +99,7 @@ describe('Test config', function () {
it('Should have a correct config on a server with registration enabled', async function () {
const res = await getConfig(server.url)
const data = res.body
const data: ServerConfig = res.body
expect(data.signup.allowed).to.be.true
})
@@ -111,11 +114,21 @@ describe('Test config', function () {
])
const res = await getConfig(server.url)
const data = res.body
const data: ServerConfig = res.body
expect(data.signup.allowed).to.be.false
})
it('Should have the correct video allowed extensions', async function () {
const res = await getConfig(server.url)
const data: ServerConfig = res.body
expect(data.video.file.extensions).to.have.lengthOf(3)
expect(data.video.file.extensions).to.contain('.mp4')
expect(data.video.file.extensions).to.contain('.webm')
expect(data.video.file.extensions).to.contain('.ogv')
})
it('Should get the customized configuration', async function () {
const res = await getCustomConfig(server.url, server.accessToken)
const data = res.body as CustomConfig
@@ -165,6 +178,7 @@ describe('Test config', function () {
},
transcoding: {
enabled: true,
allowAdditionalExtensions: true,
threads: 1,
resolutions: {
'240p': false,
@@ -193,6 +207,18 @@ describe('Test config', function () {
checkUpdatedConfig(data)
})
it('Should have the correct updated video allowed extensions', async function () {
const res = await getConfig(server.url)
const data: ServerConfig = res.body
expect(data.video.file.extensions).to.have.length.above(3)
expect(data.video.file.extensions).to.contain('.mp4')
expect(data.video.file.extensions).to.contain('.webm')
expect(data.video.file.extensions).to.contain('.ogv')
expect(data.video.file.extensions).to.contain('.flv')
expect(data.video.file.extensions).to.contain('.mkv')
})
it('Should have the configuration updated after a restart', async function () {
this.timeout(10000)

View File

@@ -20,9 +20,8 @@ import {
uploadVideo,
webtorrentAdd
} from '../../../../shared/utils'
import { join } from 'path'
import { extname, join } from 'path'
import { waitJobs } from '../../../../shared/utils/server/jobs'
import { pathExists } from 'fs-extra'
import { VIDEO_TRANSCODING_FPS } from '../../../../server/initializers/constants'
const expect = chai.expect
@@ -322,6 +321,34 @@ describe('Test video transcoding', function () {
}
})
it('Should accept and transcode additional extensions', async function () {
this.timeout(300000)
for (const fixture of [ 'video_short.mkv', 'video_short.avi' ]) {
const videoAttributes = {
name: fixture,
fixture
}
await uploadVideo(servers[ 1 ].url, servers[ 1 ].accessToken, videoAttributes)
await waitJobs(servers)
for (const server of servers) {
const res = await getVideosList(server.url)
const video = res.body.data.find(v => v.name === videoAttributes.name)
const res2 = await getVideo(server.url, video.id)
const videoDetails = res2.body
expect(videoDetails.files).to.have.lengthOf(4)
const magnetUri = videoDetails.files[ 0 ].magnetUri
expect(magnetUri).to.contain('.mp4')
}
}
})
after(async function () {
killallServers(servers)
})