使用shell_exec保存Sox输出统计信息

时间:2014-10-31 00:33:47

标签: php command-line statistics shell-exec sox

我为此疯狂。我使用sox来转换文件,修剪它们,应用一些效果等等。

我使用php脚本来调用程序,除非我尝试检索输出信息,例如获取文件的统计信息并将其保存在变量中,否则它可以正常工作:

<?php
exec("/usr/bin/sox uploads/jingle.wav -n stat", $outputrms);
                var_dump($outputrms);
?>

//also tried

<?php
$outputrms = shell_exec("/usr/bin/sox uploads/jingle.wav -n stats");
                var_dump($outputrms);
?>

始终获取NULL响应或空数组。如果我转到命令行,它就可以完美地显示:

             Overall     Left      Right
DC offset   0.003469  0.003469  0.003469
Min level  -0.971375 -0.971375 -0.971313
Max level   0.999969  0.999969  0.999969
Pk lev dB      -0.00     -0.00     -0.00
RMS lev dB    -14.37    -14.37    -14.37
RMS Pk dB      -5.94     -5.94     -5.94
RMS Tr dB     -66.86    -66.86    -66.86
Crest factor       -      5.23      5.23
Flat factor     0.00      0.00      0.00
Pk count           7         7         7
Bit-depth      16/16     16/16     16/16
Num samples     136k
Length s       3.082
Scale max   1.000000
Window s       0.050

我做错了什么?

此致

2 个答案:

答案 0 :(得分:1)

似乎sox将输出作为警告输出发送而不是标准输出。我刚刚在代码末尾添加了2&gt;&amp; 1并解决了它。

<?php
exec("/usr/bin/sox uploads/jingle.wav -n stat", $outputrms 2>&1);
                var_dump($outputrms);
?>

答案 1 :(得分:0)

exec('sox assets/test.mp3 -n stat 2>&1', $output);
print_r($output);

使用 2&gt;&amp; 1 是好的,我不知道为什么......