X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;ds=sidebyside;f=server%2Fcontrollers%2Fapi%2Fvideos%2Findex.ts;h=a2a615a797b8bf656ff3fe8d98adcb6e48ffd977;hb=536598cfafab1c5e24e881db1c528489f804fb6b;hp=1a18a8ae80993da568d81f9490d6015bfe4026de;hpb=3daaa1927474869f8dbaddd6b94b4c071e314e10;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/controllers/api/videos/index.ts b/server/controllers/api/videos/index.ts index 1a18a8ae8..a2a615a79 100644 --- a/server/controllers/api/videos/index.ts +++ b/server/controllers/api/videos/index.ts @@ -1,12 +1,12 @@ import * as express from 'express' import { extname, join } from 'path' -import { VideoCreate, VideoPrivacy, VideoState, VideoUpdate } from '../../../../shared' +import { VideoCreate, VideoPrivacy, VideoResolution, VideoState, VideoUpdate } from '../../../../shared' import { getVideoFileFPS, getVideoFileResolution } from '../../../helpers/ffmpeg-utils' import { logger } from '../../../helpers/logger' import { auditLoggerFactory, getAuditIdFromRes, VideoAuditView } from '../../../helpers/audit-logger' import { getFormattedObjects, getServerActor } from '../../../helpers/utils' import { autoBlacklistVideoIfNeeded } from '../../../lib/video-blacklist' -import { MIMETYPES, VIDEO_CATEGORIES, VIDEO_LANGUAGES, VIDEO_LICENCES, VIDEO_PRIVACIES } from '../../../initializers/constants' +import { MIMETYPES, VIDEO_CATEGORIES, VIDEO_LANGUAGES, VIDEO_LICENCES, VIDEO_PRIVACIES, DEFAULT_AUDIO_RESOLUTION } from '../../../initializers/constants' import { changeVideoChannelShare, federateVideoIfNeeded, @@ -54,6 +54,7 @@ import { CONFIG } from '../../../initializers/config' import { sequelizeTypescript } from '../../../initializers/database' import { createVideoMiniatureFromExisting, generateVideoMiniature } from '../../../lib/thumbnail' import { ThumbnailType } from '../../../../shared/models/videos/thumbnail.type' +import { VideoTranscodingPayload } from '../../../lib/job-queue/handlers/video-transcoding' const auditLogger = auditLoggerFactory('videos') const videosRouter = express.Router() @@ -191,18 +192,19 @@ async function addVideo (req: express.Request, res: express.Response) { const video = new VideoModel(videoData) video.url = getVideoActivityPubUrl(video) // We use the UUID, so set the URL after building the object - // Build the file object - const { videoFileResolution } = await getVideoFileResolution(videoPhysicalFile.path) - const fps = await getVideoFileFPS(videoPhysicalFile.path) - const videoFileData = { extname: extname(videoPhysicalFile.filename), - resolution: videoFileResolution, - size: videoPhysicalFile.size, - fps + size: videoPhysicalFile.size } const videoFile = new VideoFileModel(videoFileData) + if (!videoFile.isAudio()) { + videoFile.fps = await getVideoFileFPS(videoPhysicalFile.path) + videoFile.resolution = (await getVideoFileResolution(videoPhysicalFile.path)).videoFileResolution + } else { + videoFile.resolution = DEFAULT_AUDIO_RESOLUTION + } + // Move physical file const videoDir = CONFIG.STORAGE.VIDEOS_DIR const destination = join(videoDir, video.getVideoFilename(videoFile)) @@ -279,9 +281,21 @@ async function addVideo (req: express.Request, res: express.Response) { if (video.state === VideoState.TO_TRANSCODE) { // Put uuid because we don't have id auto incremented for now - const dataInput = { - videoUUID: videoCreated.uuid, - isNewVideo: true + let dataInput: VideoTranscodingPayload + + if (videoFile.isAudio()) { + dataInput = { + type: 'merge-audio' as 'merge-audio', + resolution: DEFAULT_AUDIO_RESOLUTION, + videoUUID: videoCreated.uuid, + isNewVideo: true + } + } else { + dataInput = { + type: 'optimize' as 'optimize', + videoUUID: videoCreated.uuid, + isNewVideo: true + } } await JobQueue.Instance.createJob({ type: 'video-transcoding', payload: dataInput })