Сохраните статистику вывода Sox с помощью shell_exe

Я схожу с ума от этого. Я использую 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

Что я делаю не так?

С уважением

0

Решение

Похоже, sox отправлял вывод как вывод предупреждения, а не как стандартный вывод. Я только что добавил 2>&1 в конце кода и это решило.

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

Другие решения

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

использование 2>&1 хорошо, и я не знаю почему …

0