我快被这玩意儿搞疯了。我使用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);
?>总是得到空响应或空数组。如果我转到命令行,它可以完美地显示:
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我做错了什么?
问候
发布于 2014-11-09 08:08:37
sox似乎将输出作为警告输出发送,而不是标准输出。我只是在代码末尾添加了2>&1,这就解决了这个问题。
<?php
exec("/usr/bin/sox uploads/jingle.wav -n stat", $outputrms 2>&1);
var_dump($outputrms);
?>发布于 2017-05-16 23:15:50
exec('sox assets/test.mp3 -n stat 2>&1', $output);
print_r($output);使用2>&1是可以的,我不知道为什么.
https://stackoverflow.com/questions/26665731
复制相似问题