aboutsummaryrefslogtreecommitdiffhomepage
path: root/shared
diff options
context:
space:
mode:
authorfrankdelange <yetangitu-f@unternet.org>2019-11-01 02:06:19 +0100
committerChocobozzz <me@florianbigard.com>2019-11-25 10:59:47 +0100
commit5c7d650827cc471a03e7fa18362bcbcbe5d30838 (patch)
tree41c96e3c9e2dcd4f15166e4f13b427ef116ea4f1 /shared
parentdee6fe1e4f5c024fd387e8c2b306c174b24aa8b3 (diff)
downloadPeerTube-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')
-rw-r--r--shared/extra-utils/server/config.ts1
-rw-r--r--shared/models/server/custom-config.model.ts1
-rw-r--r--shared/models/videos/video-resolution.enum.ts5
3 files changed, 7 insertions, 0 deletions
diff --git a/shared/extra-utils/server/config.ts b/shared/extra-utils/server/config.ts
index ada173313..35b08477f 100644
--- a/shared/extra-utils/server/config.ts
+++ b/shared/extra-utils/server/config.ts
@@ -111,6 +111,7 @@ function updateCustomSubConfig (url: string, token: string, newConfig: DeepParti
111 allowAudioFiles: true, 111 allowAudioFiles: true,
112 threads: 1, 112 threads: 1,
113 resolutions: { 113 resolutions: {
114 '0p': false,
114 '240p': false, 115 '240p': false,
115 '360p': true, 116 '360p': true,
116 '480p': true, 117 '480p': true,
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 @@
1import { VideoTranscodingFPS } from './video-transcoding-fps.model' 1import { VideoTranscodingFPS } from './video-transcoding-fps.model'
2 2
3export enum VideoResolution { 3export 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 */
19function getBaseBitrate (resolution: VideoResolution) { 20function 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