diff options
author | Chocobozzz <me@florianbigard.com> | 2022-04-21 09:06:52 +0200 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2022-04-21 11:47:57 +0200 |
commit | 4ec52d04dcc5d664612331f8e08d7d90da990415 (patch) | |
tree | 4b193f9f8f210caaf2dbe05ef3e37fa3a6fc28f0 /shared/server-commands/videos/live.ts | |
parent | 2024a3b9338d667640aa115da6071ea83d088c50 (diff) | |
download | PeerTube-4ec52d04dcc5d664612331f8e08d7d90da990415.tar.gz PeerTube-4ec52d04dcc5d664612331f8e08d7d90da990415.tar.zst PeerTube-4ec52d04dcc5d664612331f8e08d7d90da990415.zip |
Add ability to save replay of permanent lives
Diffstat (limited to 'shared/server-commands/videos/live.ts')
-rw-r--r-- | shared/server-commands/videos/live.ts | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/shared/server-commands/videos/live.ts b/shared/server-commands/videos/live.ts index 7a7faa911..6f180b05f 100644 --- a/shared/server-commands/videos/live.ts +++ b/shared/server-commands/videos/live.ts | |||
@@ -1,6 +1,7 @@ | |||
1 | import ffmpeg, { FfmpegCommand } from 'fluent-ffmpeg' | 1 | import ffmpeg, { FfmpegCommand } from 'fluent-ffmpeg' |
2 | import { buildAbsoluteFixturePath, wait } from '@shared/core-utils' | 2 | import { buildAbsoluteFixturePath, wait } from '@shared/core-utils' |
3 | import { PeerTubeServer } from '../server/server' | 3 | import { PeerTubeServer } from '../server/server' |
4 | import { VideoDetails, VideoInclude } from '@shared/models' | ||
4 | 5 | ||
5 | function sendRTMPStream (options: { | 6 | function sendRTMPStream (options: { |
6 | rtmpBaseUrl: string | 7 | rtmpBaseUrl: string |
@@ -84,17 +85,33 @@ async function waitUntilLivePublishedOnAllServers (servers: PeerTubeServer[], vi | |||
84 | } | 85 | } |
85 | } | 86 | } |
86 | 87 | ||
87 | async function waitUntilLiveSavedOnAllServers (servers: PeerTubeServer[], videoId: string) { | 88 | async function waitUntilLiveWaitingOnAllServers (servers: PeerTubeServer[], videoId: string) { |
88 | for (const server of servers) { | 89 | for (const server of servers) { |
89 | await server.live.waitUntilSaved({ videoId }) | 90 | await server.live.waitUntilWaiting({ videoId }) |
90 | } | 91 | } |
91 | } | 92 | } |
92 | 93 | ||
94 | async function waitUntilLiveReplacedByReplayOnAllServers (servers: PeerTubeServer[], videoId: string) { | ||
95 | for (const server of servers) { | ||
96 | await server.live.waitUntilReplacedByReplay({ videoId }) | ||
97 | } | ||
98 | } | ||
99 | |||
100 | async function findExternalSavedVideo (server: PeerTubeServer, liveDetails: VideoDetails) { | ||
101 | const { data } = await server.videos.list({ token: server.accessToken, sort: '-publishedAt', include: VideoInclude.BLACKLISTED }) | ||
102 | |||
103 | return data.find(v => v.name === liveDetails.name + ' - ' + new Date(liveDetails.publishedAt).toLocaleString()) | ||
104 | } | ||
105 | |||
93 | export { | 106 | export { |
94 | sendRTMPStream, | 107 | sendRTMPStream, |
95 | waitFfmpegUntilError, | 108 | waitFfmpegUntilError, |
96 | testFfmpegStreamError, | 109 | testFfmpegStreamError, |
97 | stopFfmpeg, | 110 | stopFfmpeg, |
111 | |||
98 | waitUntilLivePublishedOnAllServers, | 112 | waitUntilLivePublishedOnAllServers, |
99 | waitUntilLiveSavedOnAllServers | 113 | waitUntilLiveReplacedByReplayOnAllServers, |
114 | waitUntilLiveWaitingOnAllServers, | ||
115 | |||
116 | findExternalSavedVideo | ||
100 | } | 117 | } |