X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fhelpers%2Fvideo.ts;h=6f76cbdfc755a23f14f882600b86a7366e93747d;hb=fc8aabd0bf38441c0591f21b9b435b52e99ffc23;hp=4fe2a60f0d57ca925bbee339c373cc063919f0a4;hpb=a3b7421abb4192e215aa280418b62e96958c5e42;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/helpers/video.ts b/server/helpers/video.ts index 4fe2a60f0..6f76cbdfc 100644 --- a/server/helpers/video.ts +++ b/server/helpers/video.ts @@ -1,14 +1,21 @@ import { VideoModel } from '../models/video/video' import * as Bluebird from 'bluebird' import { + isStreamingPlaylist, + MStreamingPlaylistVideo, + MVideo, MVideoAccountLightBlacklistAllFiles, + MVideoFile, MVideoFullLight, MVideoIdThumbnail, + MVideoImmutable, MVideoThumbnail, - MVideoWithRights, - MVideoImmutable + MVideoWithRights } from '@server/typings/models' import { Response } from 'express' +import { DEFAULT_AUDIO_RESOLUTION } from '@server/initializers/constants' +import { JobQueue } from '@server/lib/job-queue' +import { VideoTranscodingPayload } from '@shared/models' type VideoFetchType = 'all' | 'only-video' | 'only-video-with-rights' | 'id' | 'none' | 'only-immutable-attributes' @@ -62,10 +69,39 @@ function getVideoWithAttributes (res: Response) { return res.locals.videoAll || res.locals.onlyVideo || res.locals.onlyVideoWithRights } +function addOptimizeOrMergeAudioJob (video: MVideo, videoFile: MVideoFile) { + let dataInput: VideoTranscodingPayload + + if (videoFile.isAudio()) { + dataInput = { + type: 'merge-audio' as 'merge-audio', + resolution: DEFAULT_AUDIO_RESOLUTION, + videoUUID: video.uuid, + isNewVideo: true + } + } else { + dataInput = { + type: 'optimize' as 'optimize', + videoUUID: video.uuid, + isNewVideo: true + } + } + + return JobQueue.Instance.createJobWithPromise({ type: 'video-transcoding', payload: dataInput }) +} + +function extractVideo (videoOrPlaylist: MVideo | MStreamingPlaylistVideo) { + return isStreamingPlaylist(videoOrPlaylist) + ? videoOrPlaylist.Video + : videoOrPlaylist +} + export { VideoFetchType, VideoFetchByUrlType, fetchVideo, getVideoWithAttributes, - fetchVideoByUrl + fetchVideoByUrl, + addOptimizeOrMergeAudioJob, + extractVideo }