aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/helpers/utils.ts
diff options
context:
space:
mode:
authorChocobozzz <florian.bigard@gmail.com>2017-10-02 12:20:26 +0200
committerChocobozzz <florian.bigard@gmail.com>2017-10-03 15:31:26 +0200
commit40298b02546e8225dd21bf6048fe7f224aefc32a (patch)
tree0a0b981dbeb2af47810adff6553a0df995a03734 /server/helpers/utils.ts
parentf0adb2701c1cf404ff63095f71e542bfe6d025ae (diff)
downloadPeerTube-40298b02546e8225dd21bf6048fe7f224aefc32a.tar.gz
PeerTube-40298b02546e8225dd21bf6048fe7f224aefc32a.tar.zst
PeerTube-40298b02546e8225dd21bf6048fe7f224aefc32a.zip
Implement video transcoding on server side
Diffstat (limited to 'server/helpers/utils.ts')
-rw-r--r--server/helpers/utils.ts27
1 files changed, 25 insertions, 2 deletions
diff --git a/server/helpers/utils.ts b/server/helpers/utils.ts
index ce07ceff9..b74442ab0 100644
--- a/server/helpers/utils.ts
+++ b/server/helpers/utils.ts
@@ -4,6 +4,7 @@ import * as Promise from 'bluebird'
4import { pseudoRandomBytesPromise } from './core-utils' 4import { pseudoRandomBytesPromise } from './core-utils'
5import { CONFIG, database as db } from '../initializers' 5import { CONFIG, database as db } from '../initializers'
6import { ResultList } from '../../shared' 6import { ResultList } from '../../shared'
7import { VideoResolution } from '../../shared/models/videos/video-resolution.enum'
7 8
8function badRequest (req: express.Request, res: express.Response, next: express.NextFunction) { 9function badRequest (req: express.Request, res: express.Response, next: express.NextFunction) {
9 res.type('json').status(400).end() 10 res.type('json').status(400).end()
@@ -13,11 +14,11 @@ function generateRandomString (size: number) {
13 return pseudoRandomBytesPromise(size).then(raw => raw.toString('hex')) 14 return pseudoRandomBytesPromise(size).then(raw => raw.toString('hex'))
14} 15}
15 16
16interface FormatableToJSON { 17interface FormattableToJSON {
17 toFormattedJSON () 18 toFormattedJSON ()
18} 19}
19 20
20function getFormattedObjects<U, T extends FormatableToJSON> (objects: T[], objectsTotal: number) { 21function getFormattedObjects<U, T extends FormattableToJSON> (objects: T[], objectsTotal: number) {
21 const formattedObjects: U[] = [] 22 const formattedObjects: U[] = []
22 23
23 objects.forEach(object => { 24 objects.forEach(object => {
@@ -47,6 +48,27 @@ function isSignupAllowed () {
47 }) 48 })
48} 49}
49 50
51function computeResolutionsToTranscode (videoFileHeight: number) {
52 const resolutionsEnabled: number[] = []
53 const configResolutions = CONFIG.TRANSCODING.RESOLUTIONS
54
55 const resolutions = [
56 VideoResolution.H_240P,
57 VideoResolution.H_360P,
58 VideoResolution.H_480P,
59 VideoResolution.H_720P,
60 VideoResolution.H_1080P
61 ]
62
63 for (const resolution of resolutions) {
64 if (configResolutions[resolution.toString()] === true && videoFileHeight >= resolution) {
65 resolutionsEnabled.push(resolution)
66 }
67 }
68
69 return resolutionsEnabled
70}
71
50type SortType = { sortModel: any, sortValue: string } 72type SortType = { sortModel: any, sortValue: string }
51 73
52// --------------------------------------------------------------------------- 74// ---------------------------------------------------------------------------
@@ -56,5 +78,6 @@ export {
56 generateRandomString, 78 generateRandomString,
57 getFormattedObjects, 79 getFormattedObjects,
58 isSignupAllowed, 80 isSignupAllowed,
81 computeResolutionsToTranscode,
59 SortType 82 SortType
60} 83}