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 /server/controllers/api | |
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 'server/controllers/api')
-rw-r--r-- | server/controllers/api/config.ts | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/server/controllers/api/config.ts b/server/controllers/api/config.ts index 70e8aa970..8a00f9835 100644 --- a/server/controllers/api/config.ts +++ b/server/controllers/api/config.ts | |||
@@ -300,6 +300,7 @@ function customConfig (): CustomConfig { | |||
300 | allowAudioFiles: CONFIG.TRANSCODING.ALLOW_AUDIO_FILES, | 300 | allowAudioFiles: CONFIG.TRANSCODING.ALLOW_AUDIO_FILES, |
301 | threads: CONFIG.TRANSCODING.THREADS, | 301 | threads: CONFIG.TRANSCODING.THREADS, |
302 | resolutions: { | 302 | resolutions: { |
303 | '0p': CONFIG.TRANSCODING.RESOLUTIONS[ '0p' ], | ||
303 | '240p': CONFIG.TRANSCODING.RESOLUTIONS[ '240p' ], | 304 | '240p': CONFIG.TRANSCODING.RESOLUTIONS[ '240p' ], |
304 | '360p': CONFIG.TRANSCODING.RESOLUTIONS[ '360p' ], | 305 | '360p': CONFIG.TRANSCODING.RESOLUTIONS[ '360p' ], |
305 | '480p': CONFIG.TRANSCODING.RESOLUTIONS[ '480p' ], | 306 | '480p': CONFIG.TRANSCODING.RESOLUTIONS[ '480p' ], |
@@ -356,6 +357,7 @@ function convertCustomConfigBody (body: CustomConfig) { | |||
356 | function keyConverter (k: string) { | 357 | function keyConverter (k: string) { |
357 | // Transcoding resolutions exception | 358 | // Transcoding resolutions exception |
358 | if (/^\d{3,4}p$/.exec(k)) return k | 359 | if (/^\d{3,4}p$/.exec(k)) return k |
360 | if (/^0p$/.exec(k)) return k | ||
359 | 361 | ||
360 | return snakeCase(k) | 362 | return snakeCase(k) |
361 | } | 363 | } |