]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/lib/live/shared/muxing-session.ts
Limit live bitrate
[github/Chocobozzz/PeerTube.git] / server / lib / live / shared / muxing-session.ts
index eb2007b298db17d14a88e998a766947d978510f0..62708b14b504dde626cc0c2d7130358265a234db 100644 (file)
@@ -54,6 +54,7 @@ class MuxingSession extends EventEmitter {
   private readonly streamingPlaylist: MStreamingPlaylistVideo
   private readonly rtmpUrl: string
   private readonly fps: number
+  private readonly bitrate: number
   private readonly allResolutions: number[]
 
   private readonly videoId: number
@@ -83,6 +84,7 @@ class MuxingSession extends EventEmitter {
     streamingPlaylist: MStreamingPlaylistVideo
     rtmpUrl: string
     fps: number
+    bitrate: number
     allResolutions: number[]
   }) {
     super()
@@ -94,6 +96,7 @@ class MuxingSession extends EventEmitter {
     this.streamingPlaylist = options.streamingPlaylist
     this.rtmpUrl = options.rtmpUrl
     this.fps = options.fps
+    this.bitrate = options.bitrate
     this.allResolutions = options.allResolutions
 
     this.videoId = this.videoLive.Video.id
@@ -102,8 +105,6 @@ class MuxingSession extends EventEmitter {
     this.saveReplay = this.videoLive.saveReplay
 
     this.lTags = loggerTagsFactory('live', this.sessionId, this.videoUUID)
-
-    this.toto = Buffer.alloc(1_000_000_000)
   }
 
   async runMuxing () {
@@ -114,13 +115,18 @@ class MuxingSession extends EventEmitter {
     this.ffmpegCommand = CONFIG.LIVE.TRANSCODING.ENABLED
       ? await getLiveTranscodingCommand({
         rtmpUrl: this.rtmpUrl,
+
         outPath,
+        masterPlaylistName: this.streamingPlaylist.playlistFilename,
+
         resolutions: this.allResolutions,
         fps: this.fps,
+        bitrate: this.bitrate,
+
         availableEncoders: VideoTranscodingProfilesManager.Instance.getAvailableEncoders(),
         profile: CONFIG.LIVE.TRANSCODING.PROFILE
       })
-      : getLiveMuxingCommand(this.rtmpUrl, outPath)
+      : getLiveMuxingCommand(this.rtmpUrl, outPath, this.streamingPlaylist.playlistFilename)
 
     logger.info('Running live muxing/transcoding for %s.', this.videoUUID, this.lTags)
 
@@ -184,7 +190,7 @@ class MuxingSession extends EventEmitter {
   }
 
   private watchMasterFile (outPath: string) {
-    this.masterWatcher = chokidar.watch(outPath + '/master.m3u8')
+    this.masterWatcher = chokidar.watch(outPath + '/' + this.streamingPlaylist.playlistFilename)
 
     this.masterWatcher.on('add', async () => {
       this.emit('master-playlist-created', { videoId: this.videoId })