12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import { isStreamingPlaylist, MStreamingPlaylistVideo, MVideo, MVideoFile } from '@server/typings/models'
- import { extractVideo } from './videos'
- import { join } from 'path'
- import { CONFIG } from '@server/initializers/config'
- import { HLS_STREAMING_PLAYLIST_DIRECTORY } from '@server/initializers/constants'
- // ################## Video file name ##################
- function getVideoFilename (videoOrPlaylist: MVideo | MStreamingPlaylistVideo, videoFile: MVideoFile) {
- const video = extractVideo(videoOrPlaylist)
- if (isStreamingPlaylist(videoOrPlaylist)) {
- return generateVideoStreamingPlaylistName(video.uuid, videoFile.resolution)
- }
- return generateWebTorrentVideoName(video.uuid, videoFile.resolution, videoFile.extname)
- }
- function generateVideoStreamingPlaylistName (uuid: string, resolution: number) {
- return `${uuid}-${resolution}-fragmented.mp4`
- }
- function generateWebTorrentVideoName (uuid: string, resolution: number, extname: string) {
- return uuid + '-' + resolution + extname
- }
- function getVideoFilePath (videoOrPlaylist: MVideo | MStreamingPlaylistVideo, videoFile: MVideoFile, isRedundancy = false) {
- if (isStreamingPlaylist(videoOrPlaylist)) {
- const video = extractVideo(videoOrPlaylist)
- return join(HLS_STREAMING_PLAYLIST_DIRECTORY, video.uuid, getVideoFilename(videoOrPlaylist, videoFile))
- }
- const baseDir = isRedundancy ? CONFIG.STORAGE.REDUNDANCY_DIR : CONFIG.STORAGE.VIDEOS_DIR
- return join(baseDir, getVideoFilename(videoOrPlaylist, videoFile))
- }
- // ################## Torrents ##################
- function getTorrentFileName (videoOrPlaylist: MVideo | MStreamingPlaylistVideo, videoFile: MVideoFile) {
- const video = extractVideo(videoOrPlaylist)
- const extension = '.torrent'
- if (isStreamingPlaylist(videoOrPlaylist)) {
- return `${video.uuid}-${videoFile.resolution}-${videoOrPlaylist.getStringType()}${extension}`
- }
- return video.uuid + '-' + videoFile.resolution + extension
- }
- function getTorrentFilePath (videoOrPlaylist: MVideo | MStreamingPlaylistVideo, videoFile: MVideoFile) {
- return join(CONFIG.STORAGE.TORRENTS_DIR, getTorrentFileName(videoOrPlaylist, videoFile))
- }
- // ---------------------------------------------------------------------------
- export {
- generateVideoStreamingPlaylistName,
- generateWebTorrentVideoName,
- getVideoFilename,
- getVideoFilePath,
- getTorrentFileName,
- getTorrentFilePath
- }
|