2

我正在尝试使用节点的 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
4

2 回答 2

3

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

于 2014-03-04T11:56:38.637 回答
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'
        )

更多信息可在相关问题中找到

于 2013-08-11T02:39:32.910 回答