From 40298b02546e8225dd21bf6048fe7f224aefc32a Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 2 Oct 2017 12:20:26 +0200 Subject: Implement video transcoding on server side --- server/models/video/video-interface.ts | 63 +++++++--------------------------- 1 file changed, 13 insertions(+), 50 deletions(-) (limited to 'server/models/video/video-interface.ts') diff --git a/server/models/video/video-interface.ts b/server/models/video/video-interface.ts index fb31c6a8f..340426f45 100644 --- a/server/models/video/video-interface.ts +++ b/server/models/video/video-interface.ts @@ -7,60 +7,17 @@ import { VideoFileAttributes, VideoFileInstance } from './video-file-interface' // Don't use barrel, import just what we need import { Video as FormattedVideo } from '../../../shared/models/videos/video.model' +import { RemoteVideoUpdateData } from '../../../shared/models/pods/remote-video/remote-video-update-request.model' +import { RemoteVideoCreateData } from '../../../shared/models/pods/remote-video/remote-video-create-request.model' import { ResultList } from '../../../shared/models/result-list.model' -export type FormattedRemoteVideoFile = { - infoHash: string - resolution: number - extname: string - size: number -} - -export type FormattedAddRemoteVideo = { - uuid: string - name: string - category: number - licence: number - language: number - nsfw: boolean - description: string - author: string - duration: number - thumbnailData: string - tags: string[] - createdAt: Date - updatedAt: Date - views: number - likes: number - dislikes: number - files: FormattedRemoteVideoFile[] -} - -export type FormattedUpdateRemoteVideo = { - uuid: string - name: string - category: number - licence: number - language: number - nsfw: boolean - description: string - author: string - duration: number - tags: string[] - createdAt: Date - updatedAt: Date - views: number - likes: number - dislikes: number - files: FormattedRemoteVideoFile[] -} - export namespace VideoMethods { export type GetThumbnailName = (this: VideoInstance) => string export type GetPreviewName = (this: VideoInstance) => string export type IsOwned = (this: VideoInstance) => boolean export type ToFormattedJSON = (this: VideoInstance) => FormattedVideo + export type GetOriginalFile = (this: VideoInstance) => VideoFileInstance export type GenerateMagnetUri = (this: VideoInstance, videoFile: VideoFileInstance) => string export type GetTorrentFileName = (this: VideoInstance, videoFile: VideoFileInstance) => string export type GetVideoFilename = (this: VideoInstance, videoFile: VideoFileInstance) => string @@ -69,10 +26,12 @@ export namespace VideoMethods { export type GetVideoFilePath = (this: VideoInstance, videoFile: VideoFileInstance) => string export type CreateTorrentAndSetInfoHash = (this: VideoInstance, videoFile: VideoFileInstance) => Promise - export type ToAddRemoteJSON = (this: VideoInstance) => Promise - export type ToUpdateRemoteJSON = (this: VideoInstance) => FormattedUpdateRemoteVideo + export type ToAddRemoteJSON = (this: VideoInstance) => Promise + export type ToUpdateRemoteJSON = (this: VideoInstance) => RemoteVideoUpdateData - export type TranscodeVideofile = (this: VideoInstance, inputVideoFile: VideoFileInstance) => Promise + export type OptimizeOriginalVideofile = (this: VideoInstance) => Promise + export type TranscodeOriginalVideofile = (this: VideoInstance, resolution: number) => Promise + export type GetOriginalFileHeight = (this: VideoInstance) => Promise // Return thumbnail name export type GenerateThumbnailFromData = (video: VideoInstance, thumbnailData: string) => Promise @@ -147,6 +106,7 @@ export interface VideoInstance extends VideoClass, VideoAttributes, Sequelize.In createPreview: VideoMethods.CreatePreview createThumbnail: VideoMethods.CreateThumbnail createTorrentAndSetInfoHash: VideoMethods.CreateTorrentAndSetInfoHash + getOriginalFile: VideoMethods.GetOriginalFile generateMagnetUri: VideoMethods.GenerateMagnetUri getPreviewName: VideoMethods.GetPreviewName getThumbnailName: VideoMethods.GetThumbnailName @@ -161,9 +121,12 @@ export interface VideoInstance extends VideoClass, VideoAttributes, Sequelize.In toAddRemoteJSON: VideoMethods.ToAddRemoteJSON toFormattedJSON: VideoMethods.ToFormattedJSON toUpdateRemoteJSON: VideoMethods.ToUpdateRemoteJSON - transcodeVideofile: VideoMethods.TranscodeVideofile + optimizeOriginalVideofile: VideoMethods.OptimizeOriginalVideofile + transcodeOriginalVideofile: VideoMethods.TranscodeOriginalVideofile + getOriginalFileHeight: VideoMethods.GetOriginalFileHeight setTags: Sequelize.HasManySetAssociationsMixin + addVideoFile: Sequelize.HasManyAddAssociationMixin setVideoFiles: Sequelize.HasManySetAssociationsMixin } -- cgit v1.2.3