return form.value['transcoding']['enabled'] === true
}
+ isRemoteRunnerVODEnabled (form: FormGroup) {
+ return form.value['transcoding']['remoteRunners']['enabled'] === true
+ }
+
+ isRemoteRunnerLiveEnabled (form: FormGroup) {
+ return form.value['live']['transcoding']['remoteRunners']['enabled'] === true
+ }
+
isStudioEnabled (form: FormGroup) {
return form.value['videoStudio']['enabled'] === true
}
</my-peertube-checkbox>
</div>
- <div class="form-group" formGroupName="remoteRunners" [ngClass]="getDisabledLiveTranscodingClass()">
+ <div class="callout callout-light pt-2 mt-2 pb-0">
+ <label i18n>Output formats</label>
+
+ <div class="form-group" [ngClass]="getDisabledLiveTranscodingClass()">
+ <label i18n for="liveTranscodingThreads">Live resolutions to generate</label>
+
+ <div class="ms-2 mt-2 d-flex flex-column">
+
+ <ng-container formGroupName="resolutions">
+ <div class="form-group" *ngFor="let resolution of liveResolutions">
+ <my-peertube-checkbox
+ [inputName]="getResolutionKey(resolution.id)" [formControlName]="resolution.id"
+ labelText="{{resolution.label}}"
+ >
+ <ng-template *ngIf="resolution.description" ptTemplate="help">
+ <div [innerHTML]="resolution.description"></div>
+ </ng-template>
+ </my-peertube-checkbox>
+ </div>
+ </ng-container>
+
+ <div class="form-group">
+ <my-peertube-checkbox
+ inputName="transcodingAlwaysTranscodeOriginalResolution" formControlName="alwaysTranscodeOriginalResolution"
+ i18n-labelText labelText="Also transcode original resolution"
+ >
+ <ng-container i18n ngProjectAs="description">
+ Even if it's above your maximum enabled resolution
+ </ng-container>
+ </my-peertube-checkbox>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="form-group mt-4" formGroupName="remoteRunners" [ngClass]="getDisabledLiveTranscodingClass()">
<my-peertube-checkbox
inputName="transcodingRemoteRunnersEnabled" formControlName="enabled"
- i18n-labelText labelText="Enable remote runners"
+ i18n-labelText labelText="Enable remote runners for lives"
>
<ng-container ngProjectAs="description">
<span i18n>
</my-peertube-checkbox>
</div>
- <div class="form-group" [ngClass]="getDisabledLiveTranscodingClass()">
- <label i18n for="liveTranscodingThreads">Live resolutions to generate</label>
-
- <div class="ms-2 mt-2 d-flex flex-column">
-
- <ng-container formGroupName="resolutions">
- <div class="form-group" *ngFor="let resolution of liveResolutions">
- <my-peertube-checkbox
- [inputName]="getResolutionKey(resolution.id)" [formControlName]="resolution.id"
- labelText="{{resolution.label}}"
- >
- <ng-template *ngIf="resolution.description" ptTemplate="help">
- <div [innerHTML]="resolution.description"></div>
- </ng-template>
- </my-peertube-checkbox>
- </div>
- </ng-container>
-
- <div class="form-group">
- <my-peertube-checkbox
- inputName="transcodingAlwaysTranscodeOriginalResolution" formControlName="alwaysTranscodeOriginalResolution"
- i18n-labelText labelText="Also transcode original resolution"
- >
- <ng-container i18n ngProjectAs="description">
- Even if it's above your maximum enabled resolution
- </ng-container>
- </my-peertube-checkbox>
- </div>
- </div>
- </div>
-
- <div class="form-group" [ngClass]="getDisabledLiveTranscodingClass()">
+ <div class="form-group" [ngClass]="getDisabledLiveLocalTranscodingClass()">
<label i18n for="liveTranscodingThreads">Live transcoding threads</label>
<span class="small muted ms-1">
<div *ngIf="formErrors.live.transcoding.threads" class="form-error">{{ formErrors.live.transcoding.threads }}</div>
</div>
- <div class="form-group mt-4" [ngClass]="getDisabledLiveTranscodingClass()">
+ <div class="form-group mt-4" [ngClass]="getDisabledLiveLocalTranscodingClass()">
<label i18n for="liveTranscodingProfile">Live transcoding profile</label>
<span class="small muted ms-1" i18n>new live transcoding profiles can be added by PeerTube plugins</span>
return this.editConfigurationService.isLiveEnabled(this.form)
}
+ isRemoteRunnerLiveEnabled () {
+ return this.editConfigurationService.isRemoteRunnerLiveEnabled(this.form)
+ }
+
getDisabledLiveClass () {
return { 'disabled-checkbox-extra': !this.isLiveEnabled() }
}
return { 'disabled-checkbox-extra': !this.isLiveEnabled() || !this.isLiveTranscodingEnabled() }
}
+ getDisabledLiveLocalTranscodingClass () {
+ return { 'disabled-checkbox-extra': !this.isLiveEnabled() || !this.isLiveTranscodingEnabled() || this.isRemoteRunnerLiveEnabled() }
+ }
+
isLiveTranscodingEnabled () {
return this.editConfigurationService.isLiveTranscodingEnabled(this.form)
}
<ng-container ngProjectAs="extra">
- <div class="form-group" formGroupName="remoteRunners" [ngClass]="getTranscodingDisabledClass()">
- <my-peertube-checkbox
- inputName="transcodingRemoteRunnersEnabled" formControlName="enabled"
- i18n-labelText labelText="Enable remote runners"
- >
- <ng-container ngProjectAs="description">
- <span i18n>
- Use <a routerLink="/admin/system/runners/runners-list">remote runners</a> to process VOD transcoding.
- Remote runners has to register on your instance first.
- </span>
- </ng-container>
- </my-peertube-checkbox>
- </div>
-
<div class="callout callout-light pt-2 pb-0">
<label i18n>Input formats</label>
</my-peertube-checkbox>
</div>
- <div class="form-group mt-4" [ngClass]="getTranscodingDisabledClass()">
+ <div class="form-group mt-4" formGroupName="remoteRunners" [ngClass]="getTranscodingDisabledClass()">
+ <my-peertube-checkbox
+ inputName="transcodingRemoteRunnersEnabled" formControlName="enabled"
+ i18n-labelText labelText="Enable remote runners for VOD"
+ >
+ <ng-container ngProjectAs="description">
+ <span i18n>
+ Use <a routerLink="/admin/system/runners/runners-list">remote runners</a> to process VOD transcoding.
+ Remote runners has to register on your instance first.
+ </span>
+ </ng-container>
+ </my-peertube-checkbox>
+ </div>
+
+ <div class="form-group mt-4" [ngClass]="getLocalTranscodingDisabledClass()">
<label i18n for="transcodingThreads">Transcoding threads</label>
<span class="small muted ms-1">
<div *ngIf="formErrors.transcoding.threads" class="form-error">{{ formErrors.transcoding.threads }}</div>
</div>
- <div class="form-group" [ngClass]="getTranscodingDisabledClass()">
+ <div class="form-group" [ngClass]="getLocalTranscodingDisabledClass()">
<label i18n for="transcodingConcurrency">Transcoding jobs concurrency</label>
<span class="small muted ms-1" i18n>allows to transcode multiple files in parallel. ⚠️ Requires a PeerTube restart</span>
<div *ngIf="formErrors.transcoding.concurrency" class="form-error">{{ formErrors.transcoding.concurrency }}</div>
</div>
- <div class="form-group" [ngClass]="getTranscodingDisabledClass()">
+ <div class="form-group" [ngClass]="getLocalTranscodingDisabledClass()">
<label i18n for="transcodingProfile">Transcoding profile</label>
<span class="small muted ms-1" i18n>new transcoding profiles can be added by PeerTube plugins</span>
<div class="form-group" formGroupName="remoteRunners" [ngClass]="getStudioDisabledClass()">
<my-peertube-checkbox
inputName="videoStudioRemoteRunnersEnabled" formControlName="enabled"
- i18n-labelText labelText="Enable remote runners"
+ i18n-labelText labelText="Enable remote runners for studio"
>
<ng-container ngProjectAs="description">
<span i18n>
return 'transcoding.resolutions.' + resolution
}
+ isRemoteRunnerVODEnabled () {
+ return this.editConfigurationService.isRemoteRunnerVODEnabled(this.form)
+ }
+
isTranscodingEnabled () {
return this.editConfigurationService.isTranscodingEnabled(this.form)
}
return { 'disabled-checkbox-extra': !this.isTranscodingEnabled() }
}
+ getLocalTranscodingDisabledClass () {
+ return { 'disabled-checkbox-extra': !this.isTranscodingEnabled() || this.isRemoteRunnerVODEnabled() }
+ }
+
getStudioDisabledClass () {
return { 'disabled-checkbox-extra': !this.isStudioEnabled() }
}
describe('When having a video quota', function () {
it('Should fail with a registered user having too many videos with legacy upload', async function () {
- this.timeout(30000)
+ this.timeout(120000)
const user = { username: 'registered' + randomInt(1, 1500), password: 'password' }
await server.registrations.register(user)
// ---------------------------------------------------------------
before(async function () {
- this.timeout(30000)
+ this.timeout(120000)
server = await createSingleServer(1)
let command: CommentsCommand
before(async function () {
- this.timeout(30000)
+ this.timeout(120000)
server = await createSingleServer(1)