node.js:将mp4转换为mp3时,fluent-ffmpeg抛出错误

时间:2013-08-11 02:10:51

标签: node.js ffmpeg mp3 mp4 fluent

我正在尝试使用node的fluent-ffmpeg模块将mp4视频转换为mp3。这是我的代码:

ffmpeg = require 'fluent-ffmpeg'

mp4 = '/Users/jashua/Desktop/video.mp4'
mp3 = '/Users/jashua/Desktop/audio.mp3'

proc = new ffmpeg({source:mp4})
    .toFormat('mp3')
    .setFfMpegPath('/Applications/ffmpeg')
    .saveToFile(mp3, (stdout, stderr)->
            return console.log stderr if err?
            return console.log 'done'
        )

运行它时,我收到以下错误:

TypeError: Cannot call method 'saveToFile' of undefined
at Object.<anonymous> (/Users/jashua/Desktop/ytdl.coffee:10:12, <js>:18:60)
  at Object.<anonymous> (/Users/jashua/Desktop/ytdl.coffee:1:1, <js>:25:4)
  at Module._compile (module.js:456:26)

有什么想法吗?

解决方案:

proc = new ffmpeg({source:mp4})
    proc.setFfMpegPath('/Applications/ffmpeg')
    proc.saveToFile(mp3, (stdout, stderr)->
                return console.log stderr if err?
                return console.log 'done'
            )
    enter code here

2 个答案:

答案 0 :(得分:3)

对于遇到此问题且遇到同样问题的其他人,我.setFfmpegPath()需要包含二进制文件的完整路径,而不仅仅是二进制文件所在的目录。

答案 1 :(得分:2)

如果找不到程序,则spawn系统调用以错误ENOENT结束。在这种情况下,找不到ffmpeg,因此您必须告诉它它在哪里:

proc = new ffmpeg({source:mp4})
    .setFfmpegPath("wherever ffmpeg is installed ") <-- this is the new line
    .toFormat('mp3')
    .saveToFile(mp3, (stdout, stderr)->
            return console.log stderr if err?
            return console.log 'done'
        )

有更多信息in a related issue