如何在nodejs中使用fluent-ffmpeg将audio转换为hls?

pkwftd7m  于 5个月前  发布在  Node.js
关注(0)|答案(2)|浏览(56)

我使用:

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文件有图像或版权。
我尝试了一些audioCodec(aac,libmp3lame).但它仍然不工作

aij0ehis

aij0ehis1#

使用选项Map0-a拾取文件中的声音;

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

字符串

7kqas0il

7kqas0il2#

当有多个流时,hls编码器可能不会自动选择音频流。作为预防措施,请使用-map选项选择第一个音频流。
audioBitrate方法之后添加以下内容:

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

字符串

  • 注意事项 *:我们从ffmpeg中了解到,没有专门用于-map和其他流操作的方法,这就是为什么我们必须使用outputOptions方法。

相关问题