mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2025-10-04 18:29:27 +02:00
Separate HLS audio and video streams
Allows: * The HLS player to propose an "Audio only" resolution * The live to output an "Audio only" resolution * The live to ingest and output an "Audio only" stream This feature is under a config for VOD videos and is enabled by default for lives In the future we can imagine: * To propose multiple audio streams for a specific video * To ingest an audio only VOD and just output an audio only "video" (the player would play the audio file and PeerTube would not generate additional resolutions) This commit introduce a new way to download videos: * Add "/download/videos/generate/:videoId" endpoint where PeerTube can mux an audio only and a video only file to a mp4 container * The download client modal introduces a new default panel where the user can choose resolutions it wants to download
This commit is contained in:
parent
e77ba2dfbc
commit
816f346a60
186 changed files with 5748 additions and 2807 deletions
|
@ -5,7 +5,7 @@ import { logger, loggerTagsFactory } from '@server/helpers/logger.js'
|
|||
import { createTorrentAndSetInfoHashFromPath } from '@server/helpers/webtorrent.js'
|
||||
import { CONFIG } from '@server/initializers/config.js'
|
||||
import { VideoCaptionModel } from '@server/models/video/video-caption.js'
|
||||
import { MUser, MVideo, MVideoFile, MVideoFullLight, MVideoWithAllFiles } from '@server/types/models/index.js'
|
||||
import { MUser, MVideoFile, MVideoFullLight, MVideoWithAllFiles, MVideoWithFile } from '@server/types/models/index.js'
|
||||
import { move, remove } from 'fs-extra/esm'
|
||||
import { join } from 'path'
|
||||
import { JobQueue } from './job-queue/index.js'
|
||||
|
@ -31,7 +31,7 @@ export function getStudioTaskFilePath (filename: string) {
|
|||
}
|
||||
|
||||
export async function safeCleanupStudioTMPFiles (tasks: VideoStudioTaskPayload[]) {
|
||||
logger.info('Removing studio task files', { tasks, ...lTags() })
|
||||
logger.info('Removing TMP studio task files', { tasks, ...lTags() })
|
||||
|
||||
for (const task of tasks) {
|
||||
try {
|
||||
|
@ -64,13 +64,13 @@ export async function approximateIntroOutroAdditionalSize (
|
|||
additionalDuration += await getVideoStreamDuration(filePath)
|
||||
}
|
||||
|
||||
return (video.getMaxQualityFile().size / video.duration) * additionalDuration
|
||||
return (video.getMaxQualityBytes() / video.duration) * additionalDuration
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
export async function createVideoStudioJob (options: {
|
||||
video: MVideo
|
||||
video: MVideoWithFile
|
||||
user: MUser
|
||||
payload: VideoStudioEditionPayload
|
||||
}) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue