FFMPEG PHP Komut Satırı çalışan değil

6 Cevap php

Ben video küçük yapmak için pencereler için ffmpeg yapı kullanıyorum. Komut ancak PHP exec yöntemi komut satırında iyi çalışır. PHP 5.2.11 kullanıyorum

Burada komut.

"E:/Documents and Settings/x/WINDOWS/ffmpeg" -itsoffset -4 -v "E:/Program Files/Apache Software Foundation/Apache2.2/htdocs/bs/files/videogal/c08c3d20eeb9083ed033577bd154cba6.flv" -vcodec mjpeg -vframes 1 -an -f rawvideo -s 320x240 "E:/Program Files/Apache Software Foundation/Apache2.2/htdocs/bs/files/gallery/8ff43b72b932d2a34e7a6733672ad4d6.jpg" 2>&1

Biri yardımcı olabilir. Ben onlar iyi görünüyor izinlerini kontrol etti. GD yüklü.

Hata msg 'E:/Documents' is not recognized as an internal or external command, operable program or batch file

Ileri kullanıyorum çift tırnak kaçan durumlar dışında benim yollarda bölü

PHP işlevi

function ExtractThumb($in, $out)
{$path=dbconf::FFMPEG_PATH;
    $thumb_stdout;
    $errors;
    $retval = 0;
 echo $in;
    // Delete the file if it already exists
    if (file_exists($out)) { unlink($out); }

    // Use ffmpeg to generate a thumbnail from the movie
    $cmd = "$path -itsoffset -4 -i $in -vcodec mjpeg -vframes 1 -an -f rawvideo -s 320x240 $out 2>&1";
   echo $cmd;

   exec($cmd, $thumb_stdout, $retval);

    // Queue up the error for processing
    if ($retval != 0) { $errors[] = "FFMPEG thumbnail generation failed"; }

    if (!empty($thumb_stdout))
    {
        foreach ($thumb_stdout as $line)
        {
            echo $line . "\n";
        }
    }

    if (!empty($errors))
    {
        foreach ($errors as $error)
        {
            echo $error . "\n";
        }
    }
}

Ben mutlak yolunu ve $ dışarı $ olmadan çalıştırırsanız, bu ne olsun yeterince komik

Copyright (c) 2000-2009 Fabrice Bellard, et al. configuration: --extra-cflags=-fno-common --enable-memalign-hack --enable-pthreads --enable-libmp3lame --enable-libxvid --enable-libvorbis --enable-libtheora --enable-libspeex --enable-libfaac --enable-libgsm --enable-libx264 --enable-libschroedinger --enable-avisynth --enable-swscale --enable-gpl libavutil 49.12. 0 / 49.12. 0 libavcodec 52.10. 0 / 52.10. 0 libavformat 52.23. 1 / 52.23. 1 libavdevice 52. 1. 0 / 52. 1. 0 libswscale 0. 6. 1 / 0. 6. 1 built on Jan 13 2009 02:57:09, gcc: 4.2.4 822ae86a93810dade2843e822390d723.flv: no such file or directory

6 Cevap

Eğer düzgün komut kaçmak gerekir:

exec(escapeshellcmd($cmd), $thumb_stdout, $retval);

Also do you have PHP safe mode on? You should check that $in is a real file before trying to encode too.

Eğer düzgün vb tersbölüler, tırnak kaçan? Herhangi bir hata mesajı var mı?

Hata iletisi bir komut olarak tanımıyor diyor. Onun en muhtemelen alıntı. Senin boşluklarla alıntı edin. Çizgi kullanırken gerekli boşlukları kaçış "\". Ve nerede çağıran kod parçacığını exec()?

exec("\"E:\\Documents and Settings\\x\\WINDOWS\\ffmpeg\" -i <inputfile> <options> <outfile>");

Burada geçmişte (bir lamba yığını kulüpler verilen) kullandım benimkilerden biri:

$cmd = "/usr/bin/ffmpeg -i ".$in." -y -an -sameq -vframes 1 -s 100x56 -ss 3 -t 0.001 ".$out;

Ayrıca düşünebilirsiniz: http://ffmpeg-php.sourceforge.net/

Belki bu deneyin:

$cmd = "\"$path\" -itsoffset -4 -i \"$in\" -vcodec mjpeg -vframes 1 -an -f rawvideo -s 320x240 \"$out\" 2>&1";

Bunu bu şekilde kullanabilirsiniz ::

exec("C:/wamp/bin/ffmpeg -i ./output4.mp4 -sameq -acodec libmp3lame -ar 22050 -ab 32 -f flv -s 320x240 ./output8.flv -vcodec mjpeg -vframes 4 -an -f rawvideo -s 320x240 ./pic008.jpg 2>&1");

Doğrudan WAMP SERVER bağlanır.

Uyarı:

./output4.mp4

Ben geçerli dizinin uğraşıyorum PHP söyler.

- Tüm iyi