mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2025-02-25 18:55:32 -06:00
Add video file metadata to download modal, via ffprobe (#2411)
* Add video file metadata via ffprobe * Federate video file metadata * Add tests for file metadata generation * Complete tests for videoFile metadata federation * Lint migration and video-file for metadata * Objectify metadata from getter in ffmpeg-utils * Add metadataUrl to all videoFiles * Simplify metadata API middleware * Load playlist in videoFile when requesting metadata
This commit is contained in:
@@ -28,6 +28,15 @@ export type ActivityPlaylistSegmentHashesObject = {
|
||||
href: string
|
||||
}
|
||||
|
||||
export type ActivityVideoFileMetadataObject = {
|
||||
type: 'Link'
|
||||
rel: [ 'metadata', any ]
|
||||
mediaType: 'application/json'
|
||||
height: number
|
||||
href: string
|
||||
fps: number
|
||||
}
|
||||
|
||||
export type ActivityPlaylistInfohashesObject = {
|
||||
type: 'Infohash'
|
||||
name: string
|
||||
@@ -80,6 +89,7 @@ export type ActivityTagObject =
|
||||
| ActivityMentionObject
|
||||
| ActivityBitTorrentUrlObject
|
||||
| ActivityMagnetUrlObject
|
||||
| ActivityVideoFileMetadataObject
|
||||
|
||||
export type ActivityUrlObject =
|
||||
ActivityVideoUrlObject
|
||||
@@ -87,6 +97,7 @@ export type ActivityUrlObject =
|
||||
| ActivityBitTorrentUrlObject
|
||||
| ActivityMagnetUrlObject
|
||||
| ActivityHtmlUrlObject
|
||||
| ActivityVideoFileMetadataObject
|
||||
|
||||
export interface ActivityPubAttributedTo {
|
||||
type: 'Group' | 'Person'
|
||||
|
||||
18
shared/models/videos/video-file-metadata.ts
Normal file
18
shared/models/videos/video-file-metadata.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
import { FfprobeData } from "fluent-ffmpeg"
|
||||
import { DeepOmit } from "@server/models/utils"
|
||||
|
||||
export type VideoFileMetadataModel = DeepOmit<FfprobeData, 'filename'>
|
||||
|
||||
export class VideoFileMetadata implements VideoFileMetadataModel {
|
||||
streams: { [x: string]: any, [x: number]: any }[]
|
||||
format: { [x: string]: any, [x: number]: any }
|
||||
chapters: any[]
|
||||
|
||||
constructor (hash: Partial<VideoFileMetadataModel>) {
|
||||
this.chapters = hash.chapters
|
||||
this.format = hash.format
|
||||
this.streams = hash.streams
|
||||
|
||||
delete this.format.filename
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
import { VideoConstant, VideoResolution } from '@shared/models'
|
||||
import { FfprobeData } from 'fluent-ffmpeg'
|
||||
|
||||
export interface VideoFile {
|
||||
magnetUri: string
|
||||
@@ -9,4 +10,6 @@ export interface VideoFile {
|
||||
fileUrl: string
|
||||
fileDownloadUrl: string
|
||||
fps: number
|
||||
metadata?: FfprobeData
|
||||
metadataUrl?: string
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user