exec ffmpeg не работает, возможные причины или решения? - PullRequest
0 голосов
/ 18 мая 2011

У меня не работает этот код:

$newName = $_SERVER['REMOTE_ADDR'].'_'.time();
$fileName=$newName.$extension;
$flvName=$newName.'.flv';
$ffmpegPath = "/usr/bin/ffmpeg";
$destination_file = $this->folder.basename($fileName);
$destination_movie = $this->folder.'original/'.basename($fileName);
$destination_flv = $this->folder.'flv/'.basename($flvName);
$destination_image = $doc_upload.'thumb/'.$newName.'.jpg';
$ffmpegDo = $ffmpegPath." -i ".$destination_movie." -ar 22050 -ab 128 -b 3600 -f flv -s 320x240 ".$destination_flv;
if (!exec($ffmpegDo)) { $error[] = ERROR_EXEC_FFMPEGDO.':'.$ffmpegDo; }

Есть идеи, почему это может потерпеть неудачу? Спасибо, ребята.

Редактировать: файл ошибок не генерируется.

$ ffmpegDo выглядит так:

/usr/local/bin/ffmpeg -i /home/myaccount/public_html/upload/videos/original/86.69.191.177_1305714026.mpeg -ar 22050 -ab 128 -b 3600 -f flv -s 320x240 /home/myaccount/public_html/upload/videos/flv/86.69.191.177_1305714026.flv

Используя метод, описанный в ответе ниже, я получил эту ошибку:

[0] => sh: / usr / local / bin / ffmpeg: такого файла или каталога нет

Это странно, потому что мои серверные ребята указали мне, что это было мое местоположение ffmpeg. И что теперь?

Ответы [ 2 ]

2 голосов
/ 18 мая 2011

См. Также использование shell_exec для вызова Perl-скрипта из php .В вашем случае вы можете получить конкретные сообщения об ошибках, а также общий $result уровень ошибки, используя:

exec("$ffmpegDo 2>&1", $output, $result);
if ($result != 0) {
    $error[] = ERROR_EXEC_FFMPEGDO.':'.$ffmpegDo; 
}

Третий параметр exec указывает переменную результата.Для большинства команд Unix он будет содержать 0 для успеха и любое другое целое число, если произошла ошибка.

0 голосов
/ 18 мая 2011

Глядя на вашу ошибку:

[0] => sh: /usr/local/bin/ffmpeg: No such file or directory

Довольно ясно, что не так (двоичный файл ffmpeg просто отсутствует).Вы можете попробовать пропустить начальный путь и просто сделать:

ffmpeg -i /home/myaccount/public_html/upload/videos/original/86.69.191.177_1305714026.mpeg -ar 22050 -ab 128 -b 3600 -f flv -s 320x240 /home/myaccount/public_html/upload/videos/flv/86.69.191.177_1305714026.flv

Таким образом, он будет искать ffmpeg во всех путях, определенных в переменной PATH ОС.(обычно такие места, как / bin / sbin / usr / bin / usr / sbin и т. д.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...