]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame_incremental - client/src/app/+admin/config/edit-custom-config/edit-vod-transcoding.component.html
Fix typo
[github/Chocobozzz/PeerTube.git] / client / src / app / +admin / config / edit-custom-config / edit-vod-transcoding.component.html
... / ...
CommitLineData
1<ng-container [formGroup]="form">
2
3 <div class="row mt-4"> <!-- transcoding grid -->
4 <div class="col-12 col-lg-4 col-xl-3"></div>
5 <div class="col-12 col-lg-8">
6
7 <div class="callout callout-orange">
8 <span i18n>
9 Estimating a server's capacity to transcode and stream videos isn't easy and we can't tune PeerTube automatically.
10 </span>
11
12 <span i18n>
13 However, you may want to read <a class="link-orange" target="_blank" rel="noopener noreferrer" href="https://docs.joinpeertube.org/admin/configuration?id=transcoding">our guidelines</a> before tweaking the following values.
14 </span>
15 </div>
16 </div>
17 </div>
18
19 <div class="row mt-4"> <!-- transcoding grid -->
20 <div class="col-12 col-lg-4 col-xl-3">
21 <div i18n class="inner-form-title">TRANSCODING</div>
22 <div i18n class="inner-form-description">
23 Process uploaded videos so that they are in a streamable form that any device can play. Though costly in
24 resources, this is a critical part of PeerTube, so tread carefully.
25 </div>
26 </div>
27
28 <div class="col-12 col-lg-8 col-xl-9">
29
30 <ng-container formGroupName="transcoding">
31
32 <div class="col-12 col-xl-11">
33 <my-peertube-checkbox inputName="transcodingEnabled" formControlName="enabled" [recommended]="true">
34 <ng-template ptTemplate="label">
35 <ng-container i18n>Transcoding enabled</ng-container>
36 </ng-template>
37
38 <ng-container ngProjectAs="extra">
39
40 <div class="callout callout-light pt-2 pb-0">
41 <label i18n>Input formats</label>
42
43 <div class="form-group" [ngClass]="getTranscodingDisabledClass()">
44 <my-peertube-checkbox
45 inputName="transcodingAllowAdditionalExtensions" formControlName="allowAdditionalExtensions"
46 i18n-labelText labelText="Allow additional extensions"
47 >
48 <ng-container ngProjectAs="description">
49 <span i18n>Allows users to upload videos with additional extensions than .mp4, .ogv and .webm (for example: .avi, .mov, .mkv etc).</span>
50 </ng-container>
51 </my-peertube-checkbox>
52 </div>
53
54 <div class="form-group" [ngClass]="getTranscodingDisabledClass()">
55 <my-peertube-checkbox
56 inputName="transcodingAllowAudioFiles" formControlName="allowAudioFiles"
57 i18n-labelText labelText="Allow audio files upload"
58 >
59 <ng-container ngProjectAs="description">
60 <div i18n>Allows users to upload .mp3, .ogg, .wma, .flac, .aac, or .ac3 audio files.</div>
61 <div i18n>The file will be merged in a still image video with the preview file on upload.</div>
62 </ng-container>
63 </my-peertube-checkbox>
64 </div>
65 </div>
66
67 <div class="callout callout-light pt-2 mt-2 pb-0">
68 <label i18n>Output formats</label>
69
70 <ng-container formGroupName="webtorrent">
71 <div class="form-group" [ngClass]="getTranscodingDisabledClass()">
72 <my-peertube-checkbox
73 inputName="transcodingWebTorrentEnabled" formControlName="enabled"
74 i18n-labelText labelText="WebTorrent enabled"
75 >
76 <ng-template ptTemplate="help">
77 <ng-container>
78 <p i18n>If you also enabled HLS support, it will multiply videos storage by 2</p>
79 </ng-container>
80 </ng-template>
81 </my-peertube-checkbox>
82 </div>
83 </ng-container>
84
85 <ng-container formGroupName="hls">
86 <div class="form-group" [ngClass]="getTranscodingDisabledClass()">
87 <my-peertube-checkbox
88 inputName="transcodingHlsEnabled" formControlName="enabled"
89 i18n-labelText labelText="HLS with P2P support enabled"
90 [recommended]="true"
91 >
92 <ng-template ptTemplate="help">
93 <ng-container i18n>
94 <strong>Requires ffmpeg >= 4.1</strong>
95
96 <p>Generate HLS playlists and fragmented MP4 files resulting in a better playback than with plain WebTorrent:</p>
97 <ul>
98 <li>Resolution change is smoother</li>
99 <li>Faster playback especially with long videos</li>
100 <li>More stable playback (less bugs/infinite loading)</li>
101 </ul>
102
103 <p>If you also enabled WebTorrent support, it will multiply videos storage by 2</p>
104 </ng-container>
105 </ng-template>
106 </my-peertube-checkbox>
107 </div>
108 </ng-container>
109
110 <div class="form-group" [ngClass]="getTranscodingDisabledClass()">
111 <label i18n>Resolutions to generate</label>
112
113 <div class="ms-2 d-flex flex-column">
114 <my-peertube-checkbox
115 inputName="transcodingAlwaysTranscodeOriginalResolution" formControlName="alwaysTranscodeOriginalResolution"
116 i18n-labelText labelText="Always transcode original resolution"
117 >
118 </my-peertube-checkbox>
119
120 <span class="mt-3 mb-2 small muted" i18n>
121 The original file resolution will be the default target if no option is selected.
122 </span>
123
124 <ng-container formGroupName="resolutions">
125 <div class="form-group" *ngFor="let resolution of resolutions">
126 <my-peertube-checkbox
127 [inputName]="getResolutionKey(resolution.id)" [formControlName]="resolution.id"
128 labelText="{{ resolution.label }}"
129 >
130 <ng-template *ngIf="resolution.description" ptTemplate="help">
131 <div [innerHTML]="resolution.description"></div>
132 </ng-template>
133 </my-peertube-checkbox>
134 </div>
135 </ng-container>
136 </div>
137 </div>
138 </div>
139
140 </ng-container>
141 </my-peertube-checkbox>
142 </div>
143
144 <div class="form-group mt-4" [ngClass]="getTranscodingDisabledClass()">
145 <label i18n for="transcodingThreads">Transcoding threads</label>
146
147 <span class="small muted ms-1">
148 <ng-container *ngIf="getTotalTranscodingThreads().atMost" i18n>
149 will claim at most {{ getTotalTranscodingThreads().value }} {{ getTotalTranscodingThreads().unit }} with live transcoding
150 </ng-container>
151
152 <ng-container *ngIf="!getTotalTranscodingThreads().atMost" i18n>
153 will claim at least {{ getTotalTranscodingThreads().value }} {{ getTotalTranscodingThreads().unit }} with live transcoding
154 </ng-container>
155 </span>
156
157 <my-select-custom-value
158 id="transcodingThreads"
159 [items]="transcodingThreadOptions"
160 formControlName="threads"
161 [clearable]="false"
162 ></my-select-custom-value>
163
164 <div *ngIf="formErrors.transcoding.threads" class="form-error">{{ formErrors.transcoding.threads }}</div>
165 </div>
166
167 <div class="form-group" [ngClass]="getTranscodingDisabledClass()">
168 <label i18n for="transcodingConcurrency">Transcoding jobs concurrency</label>
169 <span class="small muted ms-1" i18n>allows to transcode multiple files in parallel. ⚠️ Requires a PeerTube restart</span>
170
171 <div class="number-with-unit">
172 <input type="number" name="transcodingConcurrency" formControlName="concurrency" />
173 <span i18n>jobs in parallel</span>
174 </div>
175
176 <div *ngIf="formErrors.transcoding.concurrency" class="form-error">{{ formErrors.transcoding.concurrency }}</div>
177 </div>
178
179 <div class="form-group" [ngClass]="getTranscodingDisabledClass()">
180 <label i18n for="transcodingProfile">Transcoding profile</label>
181 <span class="small muted ms-1" i18n>new transcoding profiles can be added by PeerTube plugins</span>
182
183 <my-select-options
184 id="transcodingProfile"
185 formControlName="profile"
186 [items]="transcodingProfiles"
187 [clearable]="false"
188 ></my-select-options>
189
190 <div *ngIf="formErrors.transcoding.profile" class="form-error">{{ formErrors.transcoding.profile }}</div>
191 </div>
192
193 </ng-container>
194
195 </div>
196 </div>
197
198 <div class="row mt-2"> <!-- video studio grid -->
199 <div class="col-12 col-lg-4 col-xl-3">
200 <div i18n class="inner-form-title">VIDEO STUDIO</div>
201 <div i18n class="inner-form-description">
202 Allows your users to edit their video (cut, add intro/outro, add a watermark etc)
203 </div>
204 </div>
205
206 <div class="col-12 col-lg-8 col-xl-9">
207
208 <ng-container formGroupName="videoStudio">
209 <div class="form-group" [ngClass]="getTranscodingDisabledClass()">
210 <my-peertube-checkbox
211 inputName="videoStudioEnabled" formControlName="enabled"
212 i18n-labelText labelText="Enable video studio"
213 >
214 <ng-container ngProjectAs="description" *ngIf="!isTranscodingEnabled()">
215 <span i18n>⚠️ You need to enable transcoding first to enable video studio</span>
216 </ng-container>
217 </my-peertube-checkbox>
218 </div>
219 </ng-container>
220 </div>
221 </div>
222</ng-container>