2013-06-18 2 views
1

У меня есть простой сайт, на котором люди загружают видео, поэтому я хочу создать простую миниатюру из загруженного видео. Я пробовал каждый трюк и способ сделать это с нескольких веб-сайтов, но я не могу сделать команду без проблем.ffmpeg Получение изображения или уменьшенного изображения с видео error

$video = $_FILES['vpopupdropin']["tmp_name"]; 
    $ffmpeg = "C:\\Ffmpeg\\ffmpeg-20130605-git-3289670-win64-static\\bin"; 
    $image = "manu.jpg"; 
    $second = 12; 
    $size = "150x90"; 
$command = "$ffmpeg -i $video -an -ss $second -s $size -vcodec mjpeg  $image"; 
echo $command; 
    shell_exec($command); 

    if(shell_exec($command)){ 
     echo 'okay'; 
     echo '<img src="'.$image.'"/ >'; 
     } 

    else{ 
     echo ' Problem'; 
     } 

я вторил команду из PHP и это то, что я получил: C: \ Ffmpeg \ FFmpeg-20130605-ГИТ-3289670-win64-статические \ бен -i C: \ XAMPP \ TMP \ php27F1 .tmp -an -ss 12 -s 150x90 -vcodec MJPEG manu.jpg Проблема

так я принял командование выше, и вошел в нее в Cmd и получил эту ошибку

[image2 @ 00000000000000003d87580] не удалось открыть файл: manu.jpg av_interleaved_write_frame(): Ошибка ввода/вывода. загруженный файл хорошо переносится туда, где iam сохраняет его и хорошо играет на сайте, что означает, что файл не поврежден. но команда thumbnail, похоже, терпит неудачу, я даже проверил другие вопросы на этом сайте, но я, похоже, не получил правильное решение. пути в Команде верны, и я подтвердил, что по крайней мере

+0

@ Moskito-х ответ действительно помог ... я использую свое решение в течение месяца сейчас .. спасибо так много ... – Jay

+0

вы можете ;-) –

ответ

2

Вы не дали ffmpeg имя :-) Итак, вы пытались выполнить папку \\bin!

$ffmpeg = "C:\\Ffmpeg\\ffmpeg-20130605-git-3289670-win64-static\\bin"; 

вы забыли ffmpeg.exe

$ffmpeg = "C:\\Ffmpeg\\ffmpeg-20130605-git-3289670-win64-static\\bin\\ffmpeg"; 

Я делаю это для .avi со следующей командой

ffmpeg -i Echo2012.avi -r 1 -s 1024x576 -f image2 -vframes 1 foo-001.jpg 

Не выполнять вашу команду в два раза!

$command = "$ffmpeg -i $video -an -ss $second -s $size -vcodec mjpeg  $image"; 
echo $command; 
shell_exec($command); 

    if(shell_exec($command)){ 

EDIT:

ваша командная строка:

ffmpeg -i upload.tmp -an -ss 12 -s 150x90 -vcodec mjpeg  manu.jpg 
  • -vcodec кодек (выход): Установите выходной видео кодек. Это переключатель для выходного видео. Вы хотите, чтобы вывести изображение.
  • -an: Вы можете отключить аудиопоток. Для изображения вам не нужен звук.
  • -ss: position (input/output) При использовании в качестве опции ввода (до -i), этот входной файл ищет в позиции.

моя командная строка:

ffmpeg -i Echo2012.avi -r 1 -s 1024x576 -f image2 -vframes 1 foo-001.jpg 
  • -r: кадр (вход/выход, за потоком). Установите частоту кадров (значение, дробь или аббревиатуру).
    В качестве опции ввода игнорируйте любые отметки времени, хранящиеся в файле, и вместо этого создавайте метки времени, предполагающие постоянную частоту кадров fps.
  • -f image2: Форсировать формат выходного файла image2. Формат обычно определяется автоматически из расширения файла для выходных файлов.
  • -vframes number (output): установить количество видеокадров для записи.
+0

Honest ошибки есть, выходя из ffmpeg, и все еще, когда я пытаюсь выполнить правильную команду, я получаю ту же ошибку! – Jay

+0

@eMatsiyana: Пока вы не можете добиться успеха с помощью обычного 'cmd' для создания файла .jpg, бесполезно попробовать это с помощью php-скрипта. Используйте мою команду и замените имена файлов своими. –

+0

.. Спасибо! я попробовал вашу команду, и это сработало, я понятия не имею, почему моя работа не работает, если вы можете, пожалуйста, можете ли вы указать на ошибку ... – Jay

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