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의 스크립트 대신 사용할 수있는 도구가 있다면 감사하겠습니다.
예. 쓰기 허가없이 tmp 디렉토리를 사용하고 있었는데, 나는 그들을 변경하고 해결했다. – Picci