如何在 Node.js 中使用 Fluent-ffmpeg 将音频转换为 HLS?

问题描述 投票:0回答:2

我用过:

ffmpeg.setFfprobePath(ffprobeBin.path);
ffmpeg.setFfmpegPath(ffmpegPath);
ffmpeg(audioPath, {timeout: 432000})
    .audioCodec('aac')
    .audioBitrate('128k')
    .outputOptions(['-hls_time 10', '-hls_list_size 0'])
    .format('hls')
    .output(`${folderPath}/${streamName}`).on('end', () => {
  console.log(`Finished processed ${streamName} for video Id:  ${folderName}`);

  Audio.findByIdAndUpdate(nameFile.split('.')[0], {
    streamUrl: streamName
  }

但它不适用于我的音频文件(mp3)。我认为原因是这个mp3文件有图像或版权。

我尝试了其他音频编解码器(aac、libmp3lame),但仍然不起作用。

node.js audio ffmpeg mp3 fluent-ffmpeg
2个回答
0
投票

使用选项映射0-a来拾取文件中的声音;

ffmpeg(audioPath, {timeout: 432000}).addOptions([
            '-map 0:a',
            '-c:a aac',
            '-b:a 128k',
            '-f hls',
            '-hls_time 10',
            '-hls_list_size 0'
          ])

0
投票

当有多个流时,hls 编码器可能不会自动选择音频流。作为预防措施,请使用

-map
选项选择第一个音频流。

将其添加到代码中的

audioBitrate
方法之后:

.addOptions(['-map 0:a'])

注意:我们从 ffmpeg cli 中得知,没有专门的 -map 和其他流操作方法。 这就是为什么我们必须使用

outputOptions
方法。

© www.soinside.com 2019 - 2024. All rights reserved.