2013-11-08 7 views
1

Я хорошо разбираюсь в php, но очень новичок в ffmpeg и exec stuffs.Now. Я успешно установил ffmpeg через ssh.I сослался на некоторый stackoverflow here и нашел ниже код для создания видео с использованием нескольких изображений.PHP - преобразование изображений в видео с помощью ffmpeg

<?php 

echo exec('ffmpeg -f image2 -i image%d.jpg video.mpg'); 

?> 

У меня есть image1.jpg и Image2.jpg в то же folder.I запустить этот PHP код, но ничего не произошло ... где же video.mpg сохранялось? и как проверить, успешно ли выполнялась функция exec или как ее отладить? Любая помощь приветствуется.

+0

Вы можете начать с руководства: http://php.net/manual/en/function.exec.php –

+1

да, я прочитал это, и я запустил команду ffmpeg -f image2 -i image% d.jpg video.mpg ... но как узнать, успешна ли его или нет? – Vishnu

ответ

3

Если он успешно сработал, video.mpg сохранен в текущем рабочем каталоге. При необходимости вы можете изменить имена файлов на абсолютные пути.

Чтобы проверить, если exec() функция побежала успешно вы можете передать третий аргумент, чтобы получить статус выхода:

exec('ffmpeg -f image2 -i image%d.jpg video.mpg', $output, $exit_status); 

В случае успеха, $exit_status воли есть 0 значения, так:

if ($exit_status === 0) { 
    // ran fine 
} else { 
    // failed... 
} 

Если это Возможно, вы захотите получить ошибки на $output. Вы можете перейти к STDERRSTDOUT игнорируя первоначальный STDOUT таким образом:

exec('ffmpeg -f image2 -i image%d.jpg video.mpg 2>&1 >/dev/null', $output, $exit_status); 

Тогда вы могли бы сбросить $output, чтобы увидеть, что вы получили на STDERR:

if ($exit_status !== 0) { 
    print implode("\n", $output); 
} 

Если файл video.mpg уже существует команда застрянет, вы можете передать флаг -y на номер ffmpeg, чтобы перезаписать все существующие файлы:

exec('ffmpeg -y -f image2 -i image%d.jpg video.mpg 2>&1 >/dev/null', $output, $exit_status); 
+0

привет спасибо за ответ ... ее провал .. как узнать причину? – Vishnu

+0

Я улучшил свой ответ с помощью некоторых примеров ... Попробуйте 'system()' версию, а затем 'var_dump ($ exit_status, $ output);', чтобы узнать, что произошло. :) –

+1

hey awesome :) +1, я исправил ошибку, отлаживая :) спасибо тонны – Vishnu

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