2013-11-10 3 views
2

Я установил ffmpeg и ffmpeg-php на выделенный сервер и с небольшим сценарием я пытаюсь извлечь изображение с определенной секунды.Найти абсолютный путь к ffmpeg

<?php 

$extension = "ffmpeg"; 
$extension_soname = $extension . "." . PHP_SHLIB_SUFFIX; 
$extension_fullname = PHP_EXTENSION_DIR . "/" . $extension_soname; 

$timeOffset = "00:00:30"; 
$videoPath = "sample.mp4"; 
$extensi = ".jpg"; 
$folder = "images/"; 
$finalfilename = $folder . $randomfilename . $extensi; 

echo $extension_fullname; //I AM GETING THIS /usr/lib64/php/modules/ffmpeg.so 

if (exec("ffmpeg -ss $timeOffset -i $videoPath -frames:v 1 $finalfilename")){ 
echo "Done"; 
}else{ 
echo "Error"; 
} 
?> 

, как вы можете увидеть в моем командном THER выполнение FFmpeg, но как я могу найти абсолютный путь к FFmpeg? Взгляните на мой скриншот, возможно, это поможет вам рассказать мне.

Мой последний вопрос: что такое ffmpeg-php? Мне это нужно? Я уже устанавливаю его.

Спасибо

enter image description here

ответ

3

Если вы используете ffmpeg исполняемый файл вам не нужно будет ffmpeg-php. Возможно, вы захотите использовать только исполняемый файл ffmpeg, так как вместе с исполняемым файлом ffprobe вы можете сделать что угодно.

Я не получил значение ваших переменных $extension*. Чтобы узнать абсолютный путь, где установлен ваш ffmpeg, вы можете использовать программу which: which ffmpeg.

exec() Вашего звонок проверка не так, я хотел бы предложить вам использовать его таким образом:

exec("ffmpeg -v error -y -ss $timeOffset -i $videoPath -vframes 1 $finalfilename 2>&1 >/dev/null", $stderr, $exit_status); 

if ($exit_status === 0) { 
    print 'Done! :)'; 
} else { 
    print 'Error... :/'; 
    // implode("\n", $stderr) will help you figure out what happened... 
} 

я добавил -v error, чтобы сообщения ffmpeg выводится только ошибка и -y избежать $finalfilename файла существующих проблем , Я также подавил все STDOUT и переместил только STDERR на $stderr переменную. Если по какой-то причине ваш вызов exec() завершился неудачей ($exit_status будет не 0), вы получите то, что произошло на этом массиве $stderr.

Если у меня что-то не хватает, пожалуйста, дайте мне знать!

+0

я вставит в Seperate редактирует то, что я получил мой друг: /usr/lib64/php/modules/ffmpeg.soFFmpeg версии 0.6, Copyright (C) 2000-2010 разработчиков FFmpeg, построенных на 7 ноября 2013 года 15: 35:47 с gcc 4.4.7 20120313 (Red Hat 4.4.7-3) конфигурация: libavutil 50.15. 1/50.15. 1 libavcodec 52.72. 2/52,72. 2 libavformat 52.64. 2/52.64. 2 libavdevice 52. 2. 0/52. 2. 0 libswscale 0.11. 0/0,11. 0 sample.mp4: не удалось найти позицию 208.044 Вход # 0, mov, mp4, m4a, 3gp, 3g2, mj2, из 'sample.mp4': Метаданные: major_brand: dash minor_version: 0 compatible_brands: iso6avc1mp41 Продолжительность: 00:03 : 18.03 –

+0

И: начало: 178.044367, bitrate: 26 kb/s Stream # 0.0 (und): Видео: h264, yuv420p, 640x360, 29.97 tbr, 90k tbn, 59.94 tbc Unrecognized option 'frames: v' –

+1

Итак, вы используя непризнанную опцию '-frames: v' ... Я думаю, вы хотите использовать опцию -vframes'. Обновлен мой ответ, чтобы использовать его. :) –