add support for 1440p (Quad HD/QHD/WQHD) videos
This commit is contained in:
parent
7185dab3ff
commit
b7085c7132
|
@ -81,6 +81,10 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit, A
|
||||||
id: '1080p',
|
id: '1080p',
|
||||||
label: $localize`1080p`
|
label: $localize`1080p`
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
id: '1440p',
|
||||||
|
label: $localize`1440p`
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: '2160p',
|
id: '2160p',
|
||||||
label: $localize`2160p`
|
label: $localize`2160p`
|
||||||
|
|
|
@ -227,6 +227,7 @@ transcoding:
|
||||||
480p: false
|
480p: false
|
||||||
720p: false
|
720p: false
|
||||||
1080p: false
|
1080p: false
|
||||||
|
1440p: false
|
||||||
2160p: false
|
2160p: false
|
||||||
|
|
||||||
# Generate videos in a WebTorrent format (what we do since the first PeerTube release)
|
# Generate videos in a WebTorrent format (what we do since the first PeerTube release)
|
||||||
|
@ -280,6 +281,7 @@ live:
|
||||||
480p: false
|
480p: false
|
||||||
720p: false
|
720p: false
|
||||||
1080p: false
|
1080p: false
|
||||||
|
1440p: false
|
||||||
2160p: false
|
2160p: false
|
||||||
|
|
||||||
import:
|
import:
|
||||||
|
|
|
@ -240,6 +240,7 @@ transcoding:
|
||||||
480p: false
|
480p: false
|
||||||
720p: false
|
720p: false
|
||||||
1080p: false
|
1080p: false
|
||||||
|
1440p: false
|
||||||
2160p: false
|
2160p: false
|
||||||
|
|
||||||
# Generate videos in a WebTorrent format (what we do since the first PeerTube release)
|
# Generate videos in a WebTorrent format (what we do since the first PeerTube release)
|
||||||
|
@ -293,6 +294,7 @@ live:
|
||||||
480p: false
|
480p: false
|
||||||
720p: false
|
720p: false
|
||||||
1080p: false
|
1080p: false
|
||||||
|
1440p: false
|
||||||
2160p: false
|
2160p: false
|
||||||
|
|
||||||
import:
|
import:
|
||||||
|
|
|
@ -78,6 +78,7 @@ transcoding:
|
||||||
480p: true
|
480p: true
|
||||||
720p: true
|
720p: true
|
||||||
1080p: true
|
1080p: true
|
||||||
|
1440p: true
|
||||||
2160p: true
|
2160p: true
|
||||||
hls:
|
hls:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
@ -98,6 +99,7 @@ live:
|
||||||
480p: false
|
480p: false
|
||||||
720p: false
|
720p: false
|
||||||
1080p: false
|
1080p: false
|
||||||
|
1440p: false
|
||||||
2160p: false
|
2160p: false
|
||||||
|
|
||||||
import:
|
import:
|
||||||
|
|
|
@ -423,6 +423,7 @@ function customConfig (): CustomConfig {
|
||||||
'480p': CONFIG.TRANSCODING.RESOLUTIONS['480p'],
|
'480p': CONFIG.TRANSCODING.RESOLUTIONS['480p'],
|
||||||
'720p': CONFIG.TRANSCODING.RESOLUTIONS['720p'],
|
'720p': CONFIG.TRANSCODING.RESOLUTIONS['720p'],
|
||||||
'1080p': CONFIG.TRANSCODING.RESOLUTIONS['1080p'],
|
'1080p': CONFIG.TRANSCODING.RESOLUTIONS['1080p'],
|
||||||
|
'1440p': CONFIG.TRANSCODING.RESOLUTIONS['1440p'],
|
||||||
'2160p': CONFIG.TRANSCODING.RESOLUTIONS['2160p']
|
'2160p': CONFIG.TRANSCODING.RESOLUTIONS['2160p']
|
||||||
},
|
},
|
||||||
webtorrent: {
|
webtorrent: {
|
||||||
|
@ -447,6 +448,7 @@ function customConfig (): CustomConfig {
|
||||||
'480p': CONFIG.LIVE.TRANSCODING.RESOLUTIONS['480p'],
|
'480p': CONFIG.LIVE.TRANSCODING.RESOLUTIONS['480p'],
|
||||||
'720p': CONFIG.LIVE.TRANSCODING.RESOLUTIONS['720p'],
|
'720p': CONFIG.LIVE.TRANSCODING.RESOLUTIONS['720p'],
|
||||||
'1080p': CONFIG.LIVE.TRANSCODING.RESOLUTIONS['1080p'],
|
'1080p': CONFIG.LIVE.TRANSCODING.RESOLUTIONS['1080p'],
|
||||||
|
'1440p': CONFIG.LIVE.TRANSCODING.RESOLUTIONS['1440p'],
|
||||||
'2160p': CONFIG.LIVE.TRANSCODING.RESOLUTIONS['2160p']
|
'2160p': CONFIG.LIVE.TRANSCODING.RESOLUTIONS['2160p']
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -188,6 +188,7 @@ function computeResolutionsToTranscode (videoFileResolution: number, type: 'vod'
|
||||||
VideoResolution.H_720P,
|
VideoResolution.H_720P,
|
||||||
VideoResolution.H_240P,
|
VideoResolution.H_240P,
|
||||||
VideoResolution.H_1080P,
|
VideoResolution.H_1080P,
|
||||||
|
VideoResolution.H_1440P,
|
||||||
VideoResolution.H_4K
|
VideoResolution.H_4K
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ function checkMissedConfig () {
|
||||||
'redundancy.videos.strategies', 'redundancy.videos.check_interval',
|
'redundancy.videos.strategies', 'redundancy.videos.check_interval',
|
||||||
'transcoding.enabled', 'transcoding.threads', 'transcoding.allow_additional_extensions', 'transcoding.hls.enabled',
|
'transcoding.enabled', 'transcoding.threads', 'transcoding.allow_additional_extensions', 'transcoding.hls.enabled',
|
||||||
'transcoding.resolutions.0p', 'transcoding.resolutions.240p', 'transcoding.resolutions.360p', 'transcoding.resolutions.480p',
|
'transcoding.resolutions.0p', 'transcoding.resolutions.240p', 'transcoding.resolutions.360p', 'transcoding.resolutions.480p',
|
||||||
'transcoding.resolutions.720p', 'transcoding.resolutions.1080p', 'transcoding.resolutions.2160p',
|
'transcoding.resolutions.720p', 'transcoding.resolutions.1080p', 'transcoding.resolutions.1440p', 'transcoding.resolutions.2160p',
|
||||||
'import.videos.http.enabled', 'import.videos.torrent.enabled', 'auto_blacklist.videos.of_users.enabled',
|
'import.videos.http.enabled', 'import.videos.torrent.enabled', 'auto_blacklist.videos.of_users.enabled',
|
||||||
'trending.videos.interval_days',
|
'trending.videos.interval_days',
|
||||||
'instance.name', 'instance.short_description', 'instance.description', 'instance.terms', 'instance.default_client_route',
|
'instance.name', 'instance.short_description', 'instance.description', 'instance.terms', 'instance.default_client_route',
|
||||||
|
@ -41,7 +41,8 @@ function checkMissedConfig () {
|
||||||
'live.enabled', 'live.allow_replay', 'live.max_duration', 'live.max_user_lives', 'live.max_instance_lives',
|
'live.enabled', 'live.allow_replay', 'live.max_duration', 'live.max_user_lives', 'live.max_instance_lives',
|
||||||
'live.transcoding.enabled', 'live.transcoding.threads',
|
'live.transcoding.enabled', 'live.transcoding.threads',
|
||||||
'live.transcoding.resolutions.240p', 'live.transcoding.resolutions.360p', 'live.transcoding.resolutions.480p',
|
'live.transcoding.resolutions.240p', 'live.transcoding.resolutions.360p', 'live.transcoding.resolutions.480p',
|
||||||
'live.transcoding.resolutions.720p', 'live.transcoding.resolutions.1080p', 'live.transcoding.resolutions.2160p'
|
'live.transcoding.resolutions.720p', 'live.transcoding.resolutions.1080p', 'live.transcoding.resolutions.1440p',
|
||||||
|
'live.transcoding.resolutions.2160p'
|
||||||
]
|
]
|
||||||
|
|
||||||
const requiredAlternatives = [
|
const requiredAlternatives = [
|
||||||
|
|
|
@ -189,6 +189,7 @@ const CONFIG = {
|
||||||
get '480p' () { return config.get<boolean>('transcoding.resolutions.480p') },
|
get '480p' () { return config.get<boolean>('transcoding.resolutions.480p') },
|
||||||
get '720p' () { return config.get<boolean>('transcoding.resolutions.720p') },
|
get '720p' () { return config.get<boolean>('transcoding.resolutions.720p') },
|
||||||
get '1080p' () { return config.get<boolean>('transcoding.resolutions.1080p') },
|
get '1080p' () { return config.get<boolean>('transcoding.resolutions.1080p') },
|
||||||
|
get '1440p' () { return config.get<boolean>('transcoding.resolutions.1440p') },
|
||||||
get '2160p' () { return config.get<boolean>('transcoding.resolutions.2160p') }
|
get '2160p' () { return config.get<boolean>('transcoding.resolutions.2160p') }
|
||||||
},
|
},
|
||||||
HLS: {
|
HLS: {
|
||||||
|
@ -221,6 +222,7 @@ const CONFIG = {
|
||||||
get '480p' () { return config.get<boolean>('live.transcoding.resolutions.480p') },
|
get '480p' () { return config.get<boolean>('live.transcoding.resolutions.480p') },
|
||||||
get '720p' () { return config.get<boolean>('live.transcoding.resolutions.720p') },
|
get '720p' () { return config.get<boolean>('live.transcoding.resolutions.720p') },
|
||||||
get '1080p' () { return config.get<boolean>('live.transcoding.resolutions.1080p') },
|
get '1080p' () { return config.get<boolean>('live.transcoding.resolutions.1080p') },
|
||||||
|
get '1440p' () { return config.get<boolean>('live.transcoding.resolutions.1440p') },
|
||||||
get '2160p' () { return config.get<boolean>('live.transcoding.resolutions.2160p') }
|
get '2160p' () { return config.get<boolean>('live.transcoding.resolutions.2160p') }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,6 +45,7 @@ const customConfigUpdateValidator = [
|
||||||
body('transcoding.resolutions.480p').isBoolean().withMessage('Should have a valid transcoding 480p resolution enabled boolean'),
|
body('transcoding.resolutions.480p').isBoolean().withMessage('Should have a valid transcoding 480p resolution enabled boolean'),
|
||||||
body('transcoding.resolutions.720p').isBoolean().withMessage('Should have a valid transcoding 720p resolution enabled boolean'),
|
body('transcoding.resolutions.720p').isBoolean().withMessage('Should have a valid transcoding 720p resolution enabled boolean'),
|
||||||
body('transcoding.resolutions.1080p').isBoolean().withMessage('Should have a valid transcoding 1080p resolution enabled boolean'),
|
body('transcoding.resolutions.1080p').isBoolean().withMessage('Should have a valid transcoding 1080p resolution enabled boolean'),
|
||||||
|
body('transcoding.resolutions.1440p').isBoolean().withMessage('Should have a valid transcoding 1440p resolution enabled boolean'),
|
||||||
body('transcoding.resolutions.2160p').isBoolean().withMessage('Should have a valid transcoding 2160p resolution enabled boolean'),
|
body('transcoding.resolutions.2160p').isBoolean().withMessage('Should have a valid transcoding 2160p resolution enabled boolean'),
|
||||||
|
|
||||||
body('transcoding.webtorrent.enabled').isBoolean().withMessage('Should have a valid webtorrent transcoding enabled boolean'),
|
body('transcoding.webtorrent.enabled').isBoolean().withMessage('Should have a valid webtorrent transcoding enabled boolean'),
|
||||||
|
@ -75,6 +76,7 @@ const customConfigUpdateValidator = [
|
||||||
body('live.transcoding.resolutions.480p').isBoolean().withMessage('Should have a valid transcoding 480p resolution enabled boolean'),
|
body('live.transcoding.resolutions.480p').isBoolean().withMessage('Should have a valid transcoding 480p resolution enabled boolean'),
|
||||||
body('live.transcoding.resolutions.720p').isBoolean().withMessage('Should have a valid transcoding 720p resolution enabled boolean'),
|
body('live.transcoding.resolutions.720p').isBoolean().withMessage('Should have a valid transcoding 720p resolution enabled boolean'),
|
||||||
body('live.transcoding.resolutions.1080p').isBoolean().withMessage('Should have a valid transcoding 1080p resolution enabled boolean'),
|
body('live.transcoding.resolutions.1080p').isBoolean().withMessage('Should have a valid transcoding 1080p resolution enabled boolean'),
|
||||||
|
body('live.transcoding.resolutions.1440p').isBoolean().withMessage('Should have a valid transcoding 1440p resolution enabled boolean'),
|
||||||
body('live.transcoding.resolutions.2160p').isBoolean().withMessage('Should have a valid transcoding 2160p resolution enabled boolean'),
|
body('live.transcoding.resolutions.2160p').isBoolean().withMessage('Should have a valid transcoding 2160p resolution enabled boolean'),
|
||||||
|
|
||||||
body('search.remoteUri.users').isBoolean().withMessage('Should have a remote URI search for users boolean'),
|
body('search.remoteUri.users').isBoolean().withMessage('Should have a remote URI search for users boolean'),
|
||||||
|
|
|
@ -92,6 +92,7 @@ describe('Test config API validators', function () {
|
||||||
'480p': true,
|
'480p': true,
|
||||||
'720p': false,
|
'720p': false,
|
||||||
'1080p': false,
|
'1080p': false,
|
||||||
|
'1440p': false,
|
||||||
'2160p': false
|
'2160p': false
|
||||||
},
|
},
|
||||||
webtorrent: {
|
webtorrent: {
|
||||||
|
@ -118,6 +119,7 @@ describe('Test config API validators', function () {
|
||||||
'480p': true,
|
'480p': true,
|
||||||
'720p': true,
|
'720p': true,
|
||||||
'1080p': true,
|
'1080p': true,
|
||||||
|
'1440p': true,
|
||||||
'2160p': true
|
'2160p': true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -179,6 +179,7 @@ describe('Test live constraints', function () {
|
||||||
'480p': true,
|
'480p': true,
|
||||||
'720p': true,
|
'720p': true,
|
||||||
'1080p': true,
|
'1080p': true,
|
||||||
|
'1440p': true,
|
||||||
'2160p': true
|
'2160p': true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,6 +75,7 @@ describe('Permenant live', function () {
|
||||||
'480p': true,
|
'480p': true,
|
||||||
'720p': true,
|
'720p': true,
|
||||||
'1080p': true,
|
'1080p': true,
|
||||||
|
'1440p': true,
|
||||||
'2160p': true
|
'2160p': true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -164,6 +165,7 @@ describe('Permenant live', function () {
|
||||||
'480p': false,
|
'480p': false,
|
||||||
'720p': false,
|
'720p': false,
|
||||||
'1080p': false,
|
'1080p': false,
|
||||||
|
'1440p': false,
|
||||||
'2160p': false
|
'2160p': false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -99,6 +99,7 @@ describe('Save replay setting', function () {
|
||||||
'480p': true,
|
'480p': true,
|
||||||
'720p': true,
|
'720p': true,
|
||||||
'1080p': true,
|
'1080p': true,
|
||||||
|
'1440p': true,
|
||||||
'2160p': true
|
'2160p': true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,6 +75,7 @@ function checkInitialConfig (server: ServerInfo, data: CustomConfig) {
|
||||||
expect(data.transcoding.resolutions['480p']).to.be.true
|
expect(data.transcoding.resolutions['480p']).to.be.true
|
||||||
expect(data.transcoding.resolutions['720p']).to.be.true
|
expect(data.transcoding.resolutions['720p']).to.be.true
|
||||||
expect(data.transcoding.resolutions['1080p']).to.be.true
|
expect(data.transcoding.resolutions['1080p']).to.be.true
|
||||||
|
expect(data.transcoding.resolutions['1440p']).to.be.true
|
||||||
expect(data.transcoding.resolutions['2160p']).to.be.true
|
expect(data.transcoding.resolutions['2160p']).to.be.true
|
||||||
expect(data.transcoding.webtorrent.enabled).to.be.true
|
expect(data.transcoding.webtorrent.enabled).to.be.true
|
||||||
expect(data.transcoding.hls.enabled).to.be.true
|
expect(data.transcoding.hls.enabled).to.be.true
|
||||||
|
@ -91,6 +92,7 @@ function checkInitialConfig (server: ServerInfo, data: CustomConfig) {
|
||||||
expect(data.live.transcoding.resolutions['480p']).to.be.false
|
expect(data.live.transcoding.resolutions['480p']).to.be.false
|
||||||
expect(data.live.transcoding.resolutions['720p']).to.be.false
|
expect(data.live.transcoding.resolutions['720p']).to.be.false
|
||||||
expect(data.live.transcoding.resolutions['1080p']).to.be.false
|
expect(data.live.transcoding.resolutions['1080p']).to.be.false
|
||||||
|
expect(data.live.transcoding.resolutions['1440p']).to.be.false
|
||||||
expect(data.live.transcoding.resolutions['2160p']).to.be.false
|
expect(data.live.transcoding.resolutions['2160p']).to.be.false
|
||||||
|
|
||||||
expect(data.import.videos.http.enabled).to.be.true
|
expect(data.import.videos.http.enabled).to.be.true
|
||||||
|
@ -322,6 +324,7 @@ describe('Test config', function () {
|
||||||
'480p': true,
|
'480p': true,
|
||||||
'720p': false,
|
'720p': false,
|
||||||
'1080p': false,
|
'1080p': false,
|
||||||
|
'1440p': false,
|
||||||
'2160p': false
|
'2160p': false
|
||||||
},
|
},
|
||||||
webtorrent: {
|
webtorrent: {
|
||||||
|
@ -346,6 +349,7 @@ describe('Test config', function () {
|
||||||
'480p': true,
|
'480p': true,
|
||||||
'720p': true,
|
'720p': true,
|
||||||
'1080p': true,
|
'1080p': true,
|
||||||
|
'1440p': true,
|
||||||
'2160p': true
|
'2160p': true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -153,6 +153,7 @@ describe('Test stats (excluding redundancy)', function () {
|
||||||
'480p': false,
|
'480p': false,
|
||||||
'720p': false,
|
'720p': false,
|
||||||
'1080p': false,
|
'1080p': false,
|
||||||
|
'1440p': false,
|
||||||
'2160p': false
|
'2160p': false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,6 +36,7 @@ describe('Test audio only video transcoding', function () {
|
||||||
'480p': false,
|
'480p': false,
|
||||||
'720p': false,
|
'720p': false,
|
||||||
'1080p': false,
|
'1080p': false,
|
||||||
|
'1440p': false,
|
||||||
'2160p': false
|
'2160p': false
|
||||||
},
|
},
|
||||||
hls: {
|
hls: {
|
||||||
|
|
|
@ -202,6 +202,7 @@ describe('Test HLS videos', function () {
|
||||||
'480p': true,
|
'480p': true,
|
||||||
'720p': true,
|
'720p': true,
|
||||||
'1080p': true,
|
'1080p': true,
|
||||||
|
'1440p': true,
|
||||||
'2160p': true
|
'2160p': true
|
||||||
},
|
},
|
||||||
hls: {
|
hls: {
|
||||||
|
|
|
@ -33,6 +33,7 @@ describe('Test create transcoding jobs', function () {
|
||||||
'480p': true,
|
'480p': true,
|
||||||
'720p': true,
|
'720p': true,
|
||||||
'1080p': true,
|
'1080p': true,
|
||||||
|
'1440p': true,
|
||||||
'2160p': true
|
'2160p': true
|
||||||
},
|
},
|
||||||
hls: {
|
hls: {
|
||||||
|
|
|
@ -117,6 +117,7 @@ function updateCustomSubConfig (url: string, token: string, newConfig: DeepParti
|
||||||
'480p': true,
|
'480p': true,
|
||||||
'720p': false,
|
'720p': false,
|
||||||
'1080p': false,
|
'1080p': false,
|
||||||
|
'1440p': false,
|
||||||
'2160p': false
|
'2160p': false
|
||||||
},
|
},
|
||||||
webtorrent: {
|
webtorrent: {
|
||||||
|
@ -141,6 +142,7 @@ function updateCustomSubConfig (url: string, token: string, newConfig: DeepParti
|
||||||
'480p': true,
|
'480p': true,
|
||||||
'720p': true,
|
'720p': true,
|
||||||
'1080p': true,
|
'1080p': true,
|
||||||
|
'1440p': true,
|
||||||
'2160p': true
|
'2160p': true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@ export type ConfigResolutions = {
|
||||||
'480p': boolean
|
'480p': boolean
|
||||||
'720p': boolean
|
'720p': boolean
|
||||||
'1080p': boolean
|
'1080p': boolean
|
||||||
|
'1440p': boolean
|
||||||
'2160p': boolean
|
'2160p': boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ export const enum VideoResolution {
|
||||||
H_480P = 480,
|
H_480P = 480,
|
||||||
H_720P = 720,
|
H_720P = 720,
|
||||||
H_1080P = 1080,
|
H_1080P = 1080,
|
||||||
|
H_1440P = 1440,
|
||||||
H_4K = 2160
|
H_4K = 2160
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,9 +54,15 @@ function getBaseBitrate (resolution: number) {
|
||||||
return 5200 * 1000
|
return 5200 * 1000
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (resolution <= VideoResolution.H_1440P) {
|
||||||
|
// quality according to Google Live Encoder: 6000 - 13000 Kbps
|
||||||
|
// Quality according to YouTube Video Info: 8600 (av01) - 17000 (vp9.2) Kbps
|
||||||
|
return 10_000 * 1000
|
||||||
|
}
|
||||||
|
|
||||||
// 4K
|
// 4K
|
||||||
// quality according to Google Live Encoder: 13000 - 34000 Kbps
|
// quality according to Google Live Encoder: 13000 - 34000 Kbps
|
||||||
return 22000 * 1000
|
return 22_000 * 1000
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -3941,7 +3941,7 @@ components:
|
||||||
properties:
|
properties:
|
||||||
id:
|
id:
|
||||||
type: integer
|
type: integer
|
||||||
description: 'Video resolution (240, 360, 720 ...)'
|
description: 'Video resolution (240, 360, 720, 1080, 1440 or 2160)'
|
||||||
example: 240
|
example: 240
|
||||||
label:
|
label:
|
||||||
type: string
|
type: string
|
||||||
|
@ -4829,6 +4829,8 @@ components:
|
||||||
type: boolean
|
type: boolean
|
||||||
1080p:
|
1080p:
|
||||||
type: boolean
|
type: boolean
|
||||||
|
1440p:
|
||||||
|
type: boolean
|
||||||
2160p:
|
2160p:
|
||||||
type: boolean
|
type: boolean
|
||||||
hls:
|
hls:
|
||||||
|
|
|
@ -106,6 +106,9 @@ transcoding:
|
||||||
1080p:
|
1080p:
|
||||||
__name: "PEERTUBE_TRANSCODING_1080P"
|
__name: "PEERTUBE_TRANSCODING_1080P"
|
||||||
__format: "json"
|
__format: "json"
|
||||||
|
1440p:
|
||||||
|
__name: "PEERTUBE_TRANSCODING_1440P"
|
||||||
|
__format: "json"
|
||||||
2160p:
|
2160p:
|
||||||
__name: "PEERTUBE_TRANSCODING_2160P"
|
__name: "PEERTUBE_TRANSCODING_2160P"
|
||||||
__format: "json"
|
__format: "json"
|
||||||
|
|
Loading…
Reference in New Issue