2013-12-10 4 views
0

Любой орган объясняет, почему exec(), shell_exec(), system() не могут возвращать возвращаемое значение при выполнении команд ffmpeg.Преобразование аудио с использованием ffmpeg on exec() php function

ie: exec ("Who am i", $ output = array()); // здесь выполнение выполнено успешно, а $ output задано значение массива $ output = shell_exec ("Who am i"); // здесь выполнение выполнено успешно, а $ output задано значение массива («Кто есть я», $ output = array()); // здесь выполнение успеха и $ выходе устанавливается значение массива

но

exec('ffmpeg -i "$sourcepath/Test.mp3" -vn -acodec libvorbis -ab 128k -y $desnpath/TestTest.ogg"', $output = array()); 
//here execution is success but $output is not set an array value 
$output= shell_exec('ffmpeg -i "$sourcepath/Test.mp3" -vn -acodec libvorbis -ab 128k -y $desnpath/TestTest.ogg"'); 
//here execution is success but $output is not set an array value 
system('ffmpeg -i "$sourcepath/Test.mp3" -vn -acodec libvorbis -ab 128k -y $desnpath/TestTest.ogg"', $output = array()); 
//here execution is success but $output is not set an array value 

я не знаю, почему ..!?

пожалуйста, любое тело мне поможет.

ответ

1

Это потому, что ffmpeg ничего не выводит в стандартный вывод. Его вывод печатается на stderr. Если вы находитесь в системе без окон, вы можете сделать exec('ffmpeg -i "$sourcepath/Test.mp3" -vn -acodec libvorbis -ab 128k -y $desnpath/TestTest.ogg 2>&1"', $output = array()); или вы можете использовать proc_open()

Смежные вопросы