我为此疯狂。我使用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
我做错了什么?
此致
答案 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 是好的,我不知道为什么......