2012-07-23 3 views
0

백엔드 비디오 변환을 위해 FFMPEG-PHP를 설치하고 내 웹 사이트 업로드 비디오 사용자의 미리보기 이미지를 캡처하려고합니다. 그러나 나는 문제가 있고 정확하게 무엇인지 확실하지 않습니다.FFMPEG PHP가 작동하지 않는 것 같습니다.

환경 : 우분투 서버 12.04 PHP5와 아파치 (LAMP 패키지를 별도로 설치를 사용하지 않았다..)

내가, http://ffmpeg.org/trac/ffmpeg/wiki/UbuntuCompilationGuide이 튜토리얼을 따라는 FFmpeg을 설치합니다.

명령 줄에서 작업 : 명령 줄에서 변환하려고 시도하면 작동합니다.

  • 는 FFmpeg - PHP 버전 :

    avconv -i test.mp4 test.flv는 - 사용

    폴더 권한을 R에 777

    은 phpinfo()이 변경되었습니다 avconv 말한다, 작품 - ffmpeg -i test.mp4 test.flv를 작동 0.6.0-svn

  • ffmpeg-php 작성 : 2012 년 2 월 25 일 17:59:12
  • ,363,210
  • 는 FFmpeg - PHP의 GD 지원 : Lavc53.34.0 버전 libavformat
  • 는 FFmpeg : Lavf53.20.0

내가 시도 선가

  • 는 FFmpeg swscaler 버전 SwS2.1.0 버전 위해 libavcodec
  • 는 FFmpeg을 사용 가능 다음 코드는

    extension_loaded('ffmpeg') or die('Error in loading ffmpeg'); 
    

    위의 코드는 확장 프로그램이 성공적으로로드 된 경우 출력을 제공해서는 안됩니다. 그리고 내 잘못을 보여주지 않았다. 작동하지 않는 PHP에서

    코드,

    exec("ffmpeg -i test2.mp4 test2.flv", $command_output, $result); 
    if ($result !== 0) { 
    echo 'Command failed!<br>'; 
    print_r($command_output); 
    die(); 
    } 
    echo 'success!'; 
    print_r($command_output); 
    

    그것은 명령으로 빈 배열에 실패 인쇄, 배열().

    누군가 나를 도와 줄 수 있기를 바랍니다.

  • +0

    왜'ffmpeg-php'가 설치되어 있다면'exec()'을 사용하고 있습니까? 그것을 사용하는 방법에 대한 더 자세한 정보는 http://ffmpeg-php.sourceforge.net/doc/api/index.php를보십시오. 여전히'exec()'를 사용하고 싶다면 올바른 파일 위치를 사용해야합니다. 'test2.mp4'가 당신이 실행중인 PHP 스크립트와 같은 위치에 있지 않다고 추측합니다. '$ result'의 값은 무엇입니까? –

    +0

    test2.mp4는 내 스크립트와 동일한 폴더에 있습니다. '$ movie = new ffmpeg_movie (test.mp4)', '$ movie-> getDuration()'은 올바른 값을 반환합니다. 그러나 참조 된 URL을 사용하여 .mp4에서 .flv로 변환하는 방법을 잘 모르겠습니다. 또한이 튜토리얼은 _http : //youtubeclone.wordpress.com/2007/05/26/how-to-convertencode-files-to-flv-using-ffmpeg-php/_에서 시도되었습니다. 그러나 작동하지 않습니다. '$ result'는 아무 것도 반환하지 않습니다. –

    +0

    $ 결과에 대해 잘못 앞서 qn을 해석했습니다. $ 결과 값은 int (127)입니다. –

    답변

    2

    David에게 API를 지적 해 주셔서 감사합니다. FFMPEG-PHP는이 모든 작업을하고있었습니다. 이제 비디오 이미지를 만들 수 있습니다. 비슷한 문제가있는 사람은 다음과 같습니다.

    출처 : http://itwigle.com/twig/Capturing_video_thumbnails_with_PHP

    <?php 
    if (! extension_loaded (ffmpeg)) exit ('ffmpeg was not loaded '); 
    $movie_file = "test2.mp4"; 
    
    // Instantiates the class ffmpeg_movie so we can get the information you want the video 
    $movie = new ffmpeg_movie($movie_file); 
    
    //Need to create a GD image ffmpeg-php to work on it 
    $image = imagecreatetruecolor($width, $height); 
    
    //Create an instance of the frame with the class ffmpeg_frame 
    $frame = new ffmpeg_frame($Image); 
    
    //Choose the frame you want to save as jpeg 
    echo $thumbnailOf = $movie->getFrameRate() * 5; 
    
    //Receives the frame 
    $frameImg = $movie->GetFrame($thumbnailOf); 
    
    // Resizes the frame to 200, 100 
    //$frameImg-> resize(200, 100); 
    
    //Convert to a GD image 
    $image = $frameImg->toGDImage(); 
    
    //Save to disk. 
    imagejpeg($image, $movie_file.'.jpg', 100); 
    ?> 
    

    하지만 여전히 FLV로 MP4로 비디오를 변환에 문제가 있습니다. 누군가가 전환을 위해 나를 도울 수 있기를 바랍니다.

    +0

    check http://stackoverflow.com/questions/7239380/phps-exec-not-executing-command-for-ffmpeg 및 http://stackoverflow.com/questions/4828083/ffmpeg-php-error-code-127 및 –

    +0

    권한 오류가있는 것 같습니다. PHP.ini에서 PHP5-ffmpeg 플러그인을 제거했습니다. 이제 나는/usr/bin/ffmpeg를 가리키고있다. 그러나 웹 브라우저에서 액세스 할 때 페이지가로드되지 않습니다. 하지만 그것은 터미널에서 시도 할 때 작동합니다, PHP test.php. 어떤 오류도 발생시키지 않습니다. –

    +0

    여전히 좋지 않습니다. '$ cmd ='/ usr/bin/ffmpeg 2> &1'; exec (escapeshellcmd ($ cmd), $ stdout, $ stderr); var_dump ($ stderr); var_dump ($ stdout); var_dump ($ cmd); exit; 출력은 int (127) array (0) {} 문자열 (20) "/ usr/bin/ffmpeg 2> & 1"입니다. –

    관련 문제