2014-11-10 5 views
1

Fred의 ImageMagick 스크립트, 특히 fx transitions을 사용하여 이미지 전환 시퀀스를 만들어야합니다.ImageMagick 유닉스 셸 스크립트가 php shell_exec()와 함께 실행되지 않습니다.

내 PHP 코드에서 표준 크기로 가져온 모든 이미지의 크기를 조정 한 다음 pic000001.jpg, pic000002.jpg, pic000003.jpg 등과 같은 이름으로 모든 사진의 이름을 바꿉니다 ($ 카운트) 다음, 내가 할 :

$frameIndex=0; 
$frames=18; 

//for all the pic000001.jpg, pic000002.jpg, pic000003.jpg.... do a transition 
//between them 
for($seq=1;$seq<$count;$seq++){ 

     //here I take a picture and the next(IE pic000001 and pic000002) 
     echo shell_exec("fxtransitions -e swirl -f $frames -d 20 -p 50 $path/pic".str_pad($seq, 6, '0', STR_PAD_LEFT).".jpg $path/pic".str_pad(($seq+1), 6, '0', STR_PAD_LEFT).".jpg $path/fx%06d.jpg"); 

     //here I rename the temporany frames called 
     //fx000000.jpg to fx000035.jpg for each transition 
     //to a common index 
     for($c=0;$c<($frames*2);$c++){ 
      rename("fx".str_pad($c, 6, '0', STR_PAD_LEFT).".jpg" ,str_pad($frameIndex, 6, '0', STR_PAD_LEFT).".jpg"); 
      $frameIndex++; 
      } 
    } 

그런 다음, 나는 모든 프레임을 결합하고 비디오를 만들기 위해 FFMpeg를 사용합니다. 문제는 fxtransition 상태를 오류입니다 :

다음과 같은 메시지 다음에, (확인을위한 스크립트에 의해 생성 된 메시지입니다)
--- FILE DOES NOT EXIST OR IS NOT AN ORDINARY FILE, NOT READABLE OR HAS ZERO SIZE --- 

: 사진이 생성되지 않았기 때문에

Warning: rename(fx000000.jpg,000000.jpg): No such file or directory in /var/www/html/TEST/APP/generateVideo.php on line 168 

가 (프레임에 번호를 매기는 사람은 정확하다는 것을 알기 때문에 초점을 맞추지 마십시오).

서버에서 터미널을 열고 ssh 연결로 명령을 실행하면 sudo를 사용하지 않는 한 동일한 오류가 발생합니다. php shell_exec에서 sudo를 사용하면 exec가 실행되지 않습니다. shell_exec ('whoami')는 apache를 반환하고 apache는 해당 함수에 포함 된 모든 폴더 및 파일의 소유자입니다.

일부 도움주세요. 비디오를 생성하기위한 전환 프레임을 생성하기위한 fred의 imagemagick의 스크립트 대신 사용할 수있는 도구가 있다면 감사하겠습니다.

답변

4

Fred의 ImageMagick 스크립트 중 하나를 사용할 때이 문제가 발생했습니다. 솔루션은 여러분이 좋아하는 편집기 (vim, nano 등)를 사용하여 스크립트 파일 (scriptname.sh)을 업데이트하고 올바른 임시 디렉토리를 설정하는 것입니다. 아래를 참조하십시오 : 내 경우

# set directory for temporary files 
dir="." # suggestions are dir="." or dir="/tmp" 
# 

을 임시 directoy는 "/ tmp를"

# set directory for temporary files 
dir="/tmp" # suggestions are dir="." or dir="/tmp" 
# 
+0

예. 쓰기 허가없이 tmp 디렉토리를 사용하고 있었는데, 나는 그들을 변경하고 해결했다. – Picci

-1

프레드의 ImageMagick이 스크립트에서 textcleaner를 사용할 때이 문제에 직면하고 있었다. 솔루션 "/의/var/www/html/textcleaner/이미지"# 제안은 DIR = "가있는 임시 파일

DIR = 내 경우

세트 디렉토리를 올바른 경로 tmp 디렉토리 경로

를 사용하는 것입니다 . " 또는 DIR = "/ tmp를"이 쓸 수 있어야

#

또한 textcleaner.sh 또한 프로젝트로 이동합니다.

+0

내 홈페이지 http://www.fmwconcepts.com/imagemagick/index.html에서 항상 내 포인터를 사용하십시오. – fmw42