]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/tools/test-live.ts
Use an object to represent a server
[github/Chocobozzz/PeerTube.git] / server / tools / test-live.ts
CommitLineData
12152aa0 1import { program } from 'commander'
078f17e6 2import { LiveVideoCreate, VideoPrivacy } from '@shared/models'
5a547f69 3import {
254d3579 4 createSingleServer,
5a547f69
C
5 killallServers,
6 sendRTMPStream,
254d3579 7 PeerTubeServer,
5a547f69 8 setAccessTokensToServers,
078f17e6 9 setDefaultVideoChannel
5a547f69 10} from '../../shared/extra-utils'
078f17e6
C
11import { registerTSPaths } from '../helpers/register-ts-paths'
12
13registerTSPaths()
5a547f69
C
14
15type CommandType = 'live-mux' | 'live-transcoding'
16
17registerTSPaths()
18
19const command = program
078f17e6 20 .name('test-live')
5a547f69
C
21 .option('-t, --type <type>', 'live-muxing|live-transcoding')
22 .parse(process.argv)
23
24run()
25 .catch(err => {
26 console.error(err)
27 process.exit(-1)
28 })
29
30async function run () {
31 const commandType: CommandType = command['type']
32 if (!commandType) {
33 console.error('Miss command type')
34 process.exit(-1)
35 }
36
37 console.log('Starting server.')
38
254d3579 39 const server = await createSingleServer(1, {}, [], { hideLogs: false, execArgv: [ '--inspect' ] })
5a547f69 40
5e2fea3a 41 const cleanup = async () => {
5a547f69 42 console.log('Killing server')
9293139f 43 await killallServers([ server ])
5a547f69
C
44 }
45
46 process.on('exit', cleanup)
47 process.on('SIGINT', cleanup)
48
49 await setAccessTokensToServers([ server ])
50 await setDefaultVideoChannel([ server ])
51
52 await buildConfig(server, commandType)
53
54 const attributes: LiveVideoCreate = {
55 name: 'live',
56 saveReplay: true,
89d241a7 57 channelId: server.store.channel.id,
5a547f69
C
58 privacy: VideoPrivacy.PUBLIC
59 }
60
61 console.log('Creating live.')
62
89d241a7 63 const { uuid: liveVideoUUID } = await server.live.create({ fields: attributes })
5a547f69 64
89d241a7 65 const live = await server.live.get({ videoId: liveVideoUUID })
5a547f69
C
66
67 console.log('Sending RTMP stream.')
68
69 const ffmpegCommand = sendRTMPStream(live.rtmpUrl, live.streamKey)
70
71 ffmpegCommand.on('error', err => {
72 console.error(err)
73 process.exit(-1)
74 })
75
76 ffmpegCommand.on('end', () => {
77 console.log('ffmpeg ended')
78 process.exit(0)
79 })
80}
81
82// ----------------------------------------------------------------------------
83
254d3579 84async function buildConfig (server: PeerTubeServer, commandType: CommandType) {
89d241a7 85 await server.config.updateCustomSubConfig({
078f17e6
C
86 newConfig: {
87 instance: {
88 customizations: {
89 javascript: '',
90 css: ''
91 }
92 },
93 live: {
94 enabled: true,
95 allowReplay: true,
96 transcoding: {
97 enabled: commandType === 'live-transcoding'
98 }
5a547f69
C
99 }
100 }
101 })
102}