2014-11-21 115 views
2

我试图转换并移动2个使用ffmpeg在通话中录制的音频文件。使用的代码是:从Perl AGI调用FFMPEG未能执行系统命令

#Convert and move the audio 
$AGI->exec("system","ffmpeg|/olddir/$FILENAME.flac|/newdir/$FILENAME.wav"); 
$AGI->exec("system","ffmpeg|/olddir/$FILENAME.flac|/newdir/$FILENAME.wav"); 

当AGI运行,这是对CLI显示的内容:

-- AGI Script Executing Application: (system) Options: (ffmpeg|/olddir/stt_P4J3v6.flac|/newdir/stt_P4J3v6.wav) 
WARNING[1796]: app_system.c:138 system_exec_helper: Unable to execute 'ffmpeg|/olddir/stt_P4J3v6.flac|/newdir/stt_P4J3v6.wav' 

我不知道为什么它不会执行,相同的命令工作正常上控制台。

编辑:重新测试与管道中的命令,它返回奇怪的错误。然而,欲以

$AGI->exec("system","ffmpeg /olddir/$FILENAME.flac /newdir/$FILENAME.wav"); 

只返回

-- AGI Script Executing Application: (system) Options: (ffmpeg) 

,所以它没有采取的剩余参数。

+0

我从来没有使用ffmpeg,但我不希望它使用该语法在控制台上工作。手册页中没有任何内容表明您可以通过管道符号分隔参数。根据手册页,这是我期望执行它的方式。 '$ AGI-> exec(“system”,“ffmpeg -i /olddir/$FILENAME.flac /newdir/$FILENAME.wav”);' – 2014-11-21 17:11:12

+0

我试过了,没有使用像你说的那样的管道,也没有在“ffmpeg”之后接收任何参数。我用管道运行它,并在控制台上正常工作。 – 2014-11-21 17:15:12

+0

我无法再访问我们的星号框,因此我无法进行任何真正的测试。对不起,我不能进一步帮助。 – 2014-11-21 17:18:12

回答

0

我不需要使用“Exec”命令。我不认为“系统”在AGI中运行。我错了。

+0

你应该将这个答案标记为已接受,所以问题是“关闭”。 (你可以为你自己的答案做到这一点!) – miken32 2014-11-21 23:09:41