]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/helpers/ffmpeg/ffmpeg-live.ts
Merge branch 'release/4.3.0' into develop
[github/Chocobozzz/PeerTube.git] / server / helpers / ffmpeg / ffmpeg-live.ts
index fd20971ebbd7bb8d52dd6060421eedada281362a..379d7b1ad5b532b72162bd6eb4801aa2b4351cfb 100644 (file)
@@ -23,11 +23,24 @@ async function getLiveTranscodingCommand (options: {
   fps: number
   bitrate: number
   ratio: number
+  hasAudio: boolean
 
   availableEncoders: AvailableEncoders
   profile: string
 }) {
-  const { inputUrl, outPath, resolutions, fps, bitrate, availableEncoders, profile, masterPlaylistName, ratio, latencyMode } = options
+  const {
+    inputUrl,
+    outPath,
+    resolutions,
+    fps,
+    bitrate,
+    availableEncoders,
+    profile,
+    masterPlaylistName,
+    ratio,
+    latencyMode,
+    hasAudio
+  } = options
 
   const command = getFFmpeg(inputUrl, 'live')
 
@@ -47,6 +60,7 @@ async function getLiveTranscodingCommand (options: {
   addDefaultEncoderGlobalParams(command)
 
   for (let i = 0; i < resolutions.length; i++) {
+    const streamMap: string[] = []
     const resolution = resolutions[i]
     const resolutionFPS = computeFPS(fps, resolution)
 
@@ -94,9 +108,11 @@ async function getLiveTranscodingCommand (options: {
         options: `w=-2:h=${resolution}`,
         outputs: `vout${resolution}`
       })
+
+      streamMap.push(`v:${i}`)
     }
 
-    {
+    if (hasAudio) {
       const streamType: StreamType = 'audio'
       const builderResult = await getEncoderBuilderResult({ ...baseEncoderBuilderParams, streamType })
       if (!builderResult) {
@@ -114,9 +130,11 @@ async function getLiveTranscodingCommand (options: {
 
       command.outputOption(`${buildStreamSuffix('-c:a', i)} ${builderResult.encoder}`)
       applyEncoderOptions(command, builderResult.result)
+
+      streamMap.push(`a:${i}`)
     }
 
-    varStreamMap.push(`v:${i},a:${i}`)
+    varStreamMap.push(streamMap.join(','))
   }
 
   command.complexFilter(complexFilter)
@@ -177,7 +195,7 @@ function addDefaultLiveHLSParams (options: {
 
   command.outputOption('-hls_time ' + getLiveSegmentTime(latencyMode))
   command.outputOption('-hls_list_size ' + VIDEO_LIVE.SEGMENTS_LIST_SIZE)
-  command.outputOption('-hls_flags delete_segments+independent_segments')
+  command.outputOption('-hls_flags delete_segments+independent_segments+program_date_time')
   command.outputOption(`-hls_segment_filename ${join(outPath, '%v-%06d.ts')}`)
   command.outputOption('-master_pl_name ' + masterPlaylistName)
   command.outputOption(`-f hls`)