Verified Commit 10ef0891 authored by Chocobozzz's avatar Chocobozzz
Browse files

Merge branch 'release/3.4.0' into develop

parents c80e458a 3c25d37a
......@@ -144,6 +144,7 @@ export class VideoAddComponent implements OnInit, CanComponentDeactivate {
}
canDeactivate (): { canDeactivate: boolean, text?: string} {
if (this.secondStepType === 'upload') return this.videoUpload.canDeactivate()
if (this.secondStepType === 'import-url') return this.videoImportUrl.canDeactivate()
if (this.secondStepType === 'import-torrent') return this.videoImportTorrent.canDeactivate()
if (this.secondStepType === 'go-live') return this.videoGoLive.canDeactivate()
......
......@@ -302,7 +302,10 @@ function computeFPS (fpsArg: number, resolution: VideoResolution) {
// Hard FPS limits
if (fps > VIDEO_TRANSCODING_FPS.MAX) fps = getClosestFramerateStandard(fps, 'HD_STANDARD')
else if (fps < VIDEO_TRANSCODING_FPS.MIN) fps = VIDEO_TRANSCODING_FPS.MIN
if (fps < VIDEO_TRANSCODING_FPS.MIN) {
throw new Error(`Cannot compute FPS because ${fps} is lower than our minimum value ${VIDEO_TRANSCODING_FPS.MIN}`)
}
return fps
}
......
......@@ -346,7 +346,7 @@ const VIEW_LIFETIME = {
let CONTACT_FORM_LIFETIME = 60000 * 60 // 1 hour
const VIDEO_TRANSCODING_FPS: VideoTranscodingFPS = {
MIN: 10,
MIN: 1,
STANDARD: [ 24, 25, 30 ],
HD_STANDARD: [ 50, 60 ],
AVERAGE: 30,
......
......@@ -517,10 +517,16 @@ describe('Test live', function () {
await waitUntilLivePublishedOnAllServers(servers, liveVideoId)
const bitrateLimits = {
720: 5000 * 1000, // 60FPS
360: 1100 * 1000,
240: 600 * 1000
const maxBitrateLimits = {
720: 6500 * 1000, // 60FPS
360: 1250 * 1000,
240: 700 * 1000
}
const minBitrateLimits = {
720: 5500 * 1000,
360: 1000 * 1000,
240: 550 * 1000
}
for (const server of servers) {
......@@ -560,7 +566,8 @@ describe('Test live', function () {
const probe = await ffprobePromise(segmentPath)
const videoStream = await getVideoStreamFromFile(segmentPath, probe)
expect(probe.format.bit_rate).to.be.below(bitrateLimits[videoStream.height])
expect(probe.format.bit_rate).to.be.below(maxBitrateLimits[videoStream.height])
expect(probe.format.bit_rate).to.be.at.least(minBitrateLimits[videoStream.height])
await makeRawRequest(file.torrentUrl, HttpStatusCode.OK_200)
await makeRawRequest(file.fileUrl, HttpStatusCode.OK_200)
......
......@@ -11,7 +11,6 @@ import {
doubleFollow,
generateHighBitrateVideo,
generateVideoWithFramerate,
getFileSize,
makeGetRequest,
PeerTubeServer,
setAccessTokensToServers,
......@@ -617,8 +616,8 @@ describe('Test video transcoding', function () {
const file = video.files.find(f => f.resolution.id === r)
const path = servers[1].servers.buildWebTorrentFilePath(file.fileUrl)
const size = await getFileSize(path)
expect(size, `${path} not below ${60_000}`).to.be.below(60_000)
const bitrate = await getVideoFileBitrate(path)
expect(bitrate, `${path} not below ${60_000}`).to.be.below(60_000)
}
})
})
......
......@@ -9,7 +9,7 @@ import { VideoResolution } from '../../../shared/models/videos'
const expect = chai.expect
describe('Test create transcoding jobs', function () {
describe('Test print transcode jobs', function () {
it('Should print the correct command for each resolution', async function () {
const fixturePath = buildAbsoluteFixturePath('video_short.webm')
......@@ -21,7 +21,7 @@ describe('Test create transcoding jobs', function () {
VideoResolution.H_1080P
]) {
const command = await CLICommand.exec(`npm run print-transcode-command -- ${fixturePath} -r ${resolution}`)
const targetBitrate = Math.min(getMaxBitrate({ resolution, fps, ratio: 16 / 9 }), bitrate)
const targetBitrate = Math.min(getMaxBitrate({ resolution, fps, ratio: 16 / 9 }), bitrate + (bitrate * 0.3))
expect(command).to.includes(`-vf scale=w=-2:h=${resolution}`)
expect(command).to.includes(`-y -acodec aac -vcodec libx264`)
......
......@@ -78,7 +78,7 @@ function calculateBitrate (options: {
for (const toTestResolution of resolutionsOrder) {
if (toTestResolution <= resolution) {
return resolution * resolution * ratio * fps * bitPerPixel[toTestResolution]
return Math.floor(resolution * resolution * ratio * fps * bitPerPixel[toTestResolution])
}
}
......
......@@ -29,7 +29,7 @@ export class MockInstancesIndex {
})
})
const port = 42101 + randomInt(1, 100)
const port = 42000 + randomInt(1, 1000)
app.listen(port, () => res(port))
})
}
......
......@@ -22,7 +22,7 @@ export class MockJoinPeerTubeVersions {
})
})
const port = 42201 + randomInt(1, 100)
const port = 43000 + randomInt(1, 1000)
app.listen(port, () => res(port))
})
}
......
......@@ -32,7 +32,7 @@ export class MockObjectStorage {
)
})
const port = 42301 + randomInt(1, 100)
const port = 44000 + randomInt(1, 1000)
this.server = app.listen(port, () => res(port))
})
}
......
......@@ -23,7 +23,7 @@ export class MockBlocklist {
return res.json(this.body)
})
const port = 42201 + randomInt(1, 100)
const port = 45000 + randomInt(1, 1000)
this.server = app.listen(port, () => res(port))
})
}
......
......@@ -9,7 +9,7 @@ class MockProxy {
initialize () {
return new Promise<number>(res => {
const port = 42501 + randomInt(1, 100)
const port = 46000 + randomInt(1, 1000)
this.server = proxy(createServer())
this.server.listen(port, () => res(port))
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment