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')
addDefaultEncoderGlobalParams(command)
for (let i = 0; i < resolutions.length; i++) {
+ const streamMap: string[] = []
const resolution = resolutions[i]
const resolutionFPS = computeFPS(fps, resolution)
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) {
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)