]>
Commit | Line | Data |
---|---|---|
b2111066 C |
1 | import { FfmpegCommand } from 'fluent-ffmpeg' |
2 | import { wait } from '@shared/core-utils' | |
3 | import { VideoCreateResult, VideoPrivacy } from '@shared/models' | |
4 | import { | |
5 | createMultipleServers, | |
6 | doubleFollow, | |
7 | PeerTubeServer, | |
8 | setAccessTokensToServers, | |
9 | setDefaultVideoChannel, | |
10 | waitJobs, | |
11 | waitUntilLivePublishedOnAllServers | |
12 | } from '@shared/server-commands' | |
13 | ||
14 | async function processViewersStats (servers: PeerTubeServer[]) { | |
15 | await wait(6000) | |
16 | ||
17 | for (const server of servers) { | |
18 | await server.debug.sendCommand({ body: { command: 'process-video-views-buffer' } }) | |
19 | await server.debug.sendCommand({ body: { command: 'process-video-viewers' } }) | |
20 | } | |
21 | ||
22 | await waitJobs(servers) | |
23 | } | |
24 | ||
25 | async function processViewsBuffer (servers: PeerTubeServer[]) { | |
26 | for (const server of servers) { | |
27 | await server.debug.sendCommand({ body: { command: 'process-video-views-buffer' } }) | |
28 | } | |
29 | ||
30 | await waitJobs(servers) | |
31 | } | |
32 | ||
33 | async function prepareViewsServers () { | |
34 | const servers = await createMultipleServers(2) | |
35 | await setAccessTokensToServers(servers) | |
36 | await setDefaultVideoChannel(servers) | |
37 | ||
38 | await servers[0].config.updateCustomSubConfig({ | |
39 | newConfig: { | |
40 | live: { | |
41 | enabled: true, | |
42 | allowReplay: true, | |
43 | transcoding: { | |
44 | enabled: false | |
45 | } | |
46 | } | |
47 | } | |
48 | }) | |
49 | ||
50 | await doubleFollow(servers[0], servers[1]) | |
51 | ||
52 | return servers | |
53 | } | |
54 | ||
55 | async function prepareViewsVideos (options: { | |
56 | servers: PeerTubeServer[] | |
57 | live: boolean | |
58 | vod: boolean | |
59 | }) { | |
60 | const { servers } = options | |
61 | ||
62 | const liveAttributes = { | |
63 | name: 'live video', | |
64 | channelId: servers[0].store.channel.id, | |
65 | privacy: VideoPrivacy.PUBLIC | |
66 | } | |
67 | ||
68 | let ffmpegCommand: FfmpegCommand | |
69 | let live: VideoCreateResult | |
70 | let vod: VideoCreateResult | |
71 | ||
72 | if (options.live) { | |
73 | live = await servers[0].live.create({ fields: liveAttributes }) | |
74 | ||
75 | ffmpegCommand = await servers[0].live.sendRTMPStreamInVideo({ videoId: live.uuid }) | |
76 | await waitUntilLivePublishedOnAllServers(servers, live.uuid) | |
77 | } | |
78 | ||
79 | if (options.vod) { | |
80 | vod = await servers[0].videos.quickUpload({ name: 'video' }) | |
81 | } | |
82 | ||
83 | await waitJobs(servers) | |
84 | ||
85 | return { liveVideoId: live?.uuid, vodVideoId: vod?.uuid, ffmpegCommand } | |
86 | } | |
87 | ||
88 | export { | |
89 | processViewersStats, | |
90 | prepareViewsServers, | |
91 | processViewsBuffer, | |
92 | prepareViewsVideos | |
93 | } |