diff options
author | frankdelange <yetangitu-f@unternet.org> | 2019-11-01 02:06:19 +0100 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2019-11-25 10:59:47 +0100 |
commit | 5c7d650827cc471a03e7fa18362bcbcbe5d30838 (patch) | |
tree | 41c96e3c9e2dcd4f15166e4f13b427ef116ea4f1 /shared/models | |
parent | dee6fe1e4f5c024fd387e8c2b306c174b24aa8b3 (diff) | |
download | PeerTube-5c7d650827cc471a03e7fa18362bcbcbe5d30838.tar.gz PeerTube-5c7d650827cc471a03e7fa18362bcbcbe5d30838.tar.zst PeerTube-5c7d650827cc471a03e7fa18362bcbcbe5d30838.zip |
Add audio-only option to transcoders and player
This patch adds an audio-only option to PeerTube by means of a new transcoding configuration which creates mp4 files which only contain an audio stream. This new transcoder has a resolution of '0' and is presented in the preferences and in the player resolution menu as 'Audio-only' (localised). When playing such streams the player shows the file thumbnail as background and disables controls autohide.
Audio-only files can be shared and streamed just like any other file. They can be downloaded as well, the resulting file will be an mp4 container with a single audio stream.
This patch is a proof of concept to show the feasibility of 'true' audio-only support. There are better ways of doing this which also enable multiple audio streams for a given video stream (e.g. DASH) but as this would entail a fundamental change in the way PeerTube works it is a bridge too far for a simple proof of concept.
Diffstat (limited to 'shared/models')
-rw-r--r-- | shared/models/server/custom-config.model.ts | 1 | ||||
-rw-r--r-- | shared/models/videos/video-resolution.enum.ts | 5 |
2 files changed, 6 insertions, 0 deletions
diff --git a/shared/models/server/custom-config.model.ts b/shared/models/server/custom-config.model.ts index 97972b759..032b91a29 100644 --- a/shared/models/server/custom-config.model.ts +++ b/shared/models/server/custom-config.model.ts | |||
@@ -75,6 +75,7 @@ export interface CustomConfig { | |||
75 | 75 | ||
76 | threads: number | 76 | threads: number |
77 | resolutions: { | 77 | resolutions: { |
78 | '0p': boolean | ||
78 | '240p': boolean | 79 | '240p': boolean |
79 | '360p': boolean | 80 | '360p': boolean |
80 | '480p': boolean | 81 | '480p': boolean |
diff --git a/shared/models/videos/video-resolution.enum.ts b/shared/models/videos/video-resolution.enum.ts index fa26fc3cc..dc53294f6 100644 --- a/shared/models/videos/video-resolution.enum.ts +++ b/shared/models/videos/video-resolution.enum.ts | |||
@@ -1,6 +1,7 @@ | |||
1 | import { VideoTranscodingFPS } from './video-transcoding-fps.model' | 1 | import { VideoTranscodingFPS } from './video-transcoding-fps.model' |
2 | 2 | ||
3 | export enum VideoResolution { | 3 | export enum VideoResolution { |
4 | H_NOVIDEO = 0, | ||
4 | H_240P = 240, | 5 | H_240P = 240, |
5 | H_360P = 360, | 6 | H_360P = 360, |
6 | H_480P = 480, | 7 | H_480P = 480, |
@@ -18,6 +19,10 @@ export enum VideoResolution { | |||
18 | */ | 19 | */ |
19 | function getBaseBitrate (resolution: VideoResolution) { | 20 | function getBaseBitrate (resolution: VideoResolution) { |
20 | switch (resolution) { | 21 | switch (resolution) { |
22 | case VideoResolution.H_NOVIDEO: | ||
23 | // audio-only | ||
24 | return 64 * 1000 | ||
25 | |||
21 | case VideoResolution.H_240P: | 26 | case VideoResolution.H_240P: |
22 | // quality according to Google Live Encoder: 300 - 700 Kbps | 27 | // quality according to Google Live Encoder: 300 - 700 Kbps |
23 | // Quality according to YouTube Video Info: 186 Kbps | 28 | // Quality according to YouTube Video Info: 186 Kbps |