如何在NPM中正确使用编解码器类型

时间:2017-06-23 14:12:45

标签: ffmpeg fluent-ffmpeg

尝试使用' -acodec libopus'在我的npm项目中,因为我在命令行中使用,如下面的格式;

ffmpeg -acodec libopus -i 1.webm 1.wav

这完美无缺!但我想在我的NPM项目中实现这一目标。

如何设置参数? 这就是我所拥有的,但不起作用。输出文件以某种音频文件的某些帧丢失的方式被破坏。就像有声音然后就没有了。反之亦然。

var proc = new ffmpeg({
        source: file,
        nolog: false       
    });


format = "opus"; // or could be wav as well!   


    proc.addOptions([
        '-f ' + format,          
        '-acodec libopus',
        '-vn'
    ]);

目的是无缝地从视频文件中获取音频文件。

没有编解码器libopus,我在命令提示符中遇到以下错误,所以我假设我也应该在我的NPM项目中处理同样的问题。

[opus @ 00000000006d4520] LBRR frames is not implemented. Update your FFmpeg version to the newest one from Git. If the problem still occurs, it means that your file has a feature which has not been implemented.


[opus @ 00000000006d4520] Error decoding a SILK frame.

[opus @ 00000000006d4520] Error decoding an Opus frame.

我的库是最新的,我只需要正确使用编解码器libopus。 有什么建议吗?

 \node-js>ffmpeg -version
 ffmpeg version N-86175-g64ea4d1 Copyright (c) 2000-2017 the FFmpeg 
 developers
 built with gcc 6.3.0 (GCC)

Output in command line;
xtranscribe transcodeWatson: file : ./data/that/2.webm
progress 62.625273103421605%
progress 100.01224534515762%
SAVED - transcodeWatson : .mp3
out of transcode!
fileSizeInBytes  : 16284033

1 个答案:

答案 0 :(得分:2)

根据the README,您可以为流程添加输入选项:

proc.addInputOption('-acodec libopus');

在ffmpeg中放置选项的位置很重要。如果您将它放在-i之前,则它适用于该特定输入。如果将它放在输出文件名之前,它将应用于该输出。