2013-09-04 2 views
3

Я использовал php exec для выполнения команды FFmpeg, но ее не укусить, когда я открываю ее в браузере. Но когда я запускаю этот скрипт php-файла в терминале, он отлично работает. И мой безопасный режим php отключен. пожалуйста, помогите мне решить проблему. мой php-код:PHP exec не выполняет команду FFmpeg

<?php 
    $output=exec("ffmpeg -f image2 -i /home/phedra/imgs/image/img%03d.png -r 12 -s 610x489 /home/phedra/imgs/video/out.avi", $out); 
echo $out; 
echo $output; 
    ?> 
+0

Моя первая догадка есть разрешение вопроса. Можете ли вы поместить свой код здесь и вывод выполнения команды через exec – rakeshjain

+0

Да, проблемы с командами exec почти всегда являются проблемами с разрешением. – ciruvan

+0

@rakeshjain Я включил свой PHP-код, и я попытался получить вывод, но он не дает никакого результата. проверьте мой код, я его отредактировал. –

ответ

2

попробуйте указать полный путь, где находится приложение ffmpeg.

например.

/usr/bin/ffmpeg 

Так что ваша функция может выглядеть следующим образом:

$output=exec("/usr/bin/ffmpeg -f image2 -i /home/phedra/imgs/image/img%03d.png -r 12 -s 610x489 /home/phedra/imgs/video/out.avi", $out); 

Вы должны проверить, что расположение "FFmpeg".

+0

добавил путь, но все еще не работает ... –

+0

@Alifaizan Вы положили правильный путь, так как тот, который я вам дал, является просто примером. – Arfeen

+0

yess Я дал правильный путь не тот, который вы упомянули. –

0

Обратите внимание, что если вы находитесь на окнах, вы должны использовать COMMAS. I.E:

$output=exec('"/usr/bin/ffmpeg" -f image2 -i /home/phedra/imgs/image/img%03d.png -r 12 -s 610x489 /home/phedra/imgs/video/out.avi', $out); 
1

У меня была эта проблема, и оказалось, что это было разрешение Apache в общедоступном каталоге.

Примечание: Я бегу Ubuntu 14 на AWS

После установки FFmpeg я должен был изменить /var/www/* право собственности на www-data.

sudo chown -R www-data:root /var/www 

(www-data является важной частью здесь)

Тогда я следующий код работает, и он работает, когда я к нему доступ через URL (Apache)

// test.php 

$run = system("/opt/ffmpeg/bin/ffmpeg -i /var/www/html/input.mp4 -vf scale=640:480 /var/www/html/output.mp4 &"); 

if($run) { 
    echo "success"; 
} else { 
    echo "failed"; 
} 

/opt/ffmpeg/bin/ffmpeg является где работает мой FFmpeg. Может быть, /usr/bin/ffmpeg или что-то еще. Вы можете найти его, набрав locate ffmpeg в командной строке и просмотрев список, который он вам дает.

Входной файл был общедоступным .mp4-файлом, а файл output.mp4 находился в том же месте.

Выполнить это в командной строке: php test.php - работает Запустить из браузера: yourwebsite.com/test.php - работает

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