2016년 5월 19일 목요일

CentOS 6.x PHP 5.4.xx ffmpeg 설치

yum install ffmpeg ffmpeg-devel ffmpeg-libpostproc

yum install php-gd php-devel


https://sourceforge.net/projects/ffmpeg-php/files/OldFiles/ffmpeg-php-0.6.2.tbz2/download 다운로드


tar -xjf ffmpeg-php-X.x.x.tbz2
cd ffmpeg-php-X.x.x/
phpize

./configure && make 하면 오류발생


/bin/sh /usr/local/src/ffmpeg-php-0.6.0/libtool --mode=compile cc  -I. -I/usr/local/src/ffmpeg-php-0.6.0 -DPHP_ATOM_INC -I/usr/local/src/ffmpeg-php-0.6.0/include -I/usr/local/src/ffmpeg-php-0.6.0/main -I/usr/local/src/ffmpeg-php-0.6.0 -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/usr/local/include/libavcodec/ -I/usr/local/include/libavformat/ -I/usr/local/include/libavutil/ -I/usr/local/include/libswscale/ -I/usr/local/include/libavfilter/ -I/usr/local/include/libavdevice/  -DHAVE_CONFIG_H  -g -O2 -Wall -fno-strict-aliasing   -c /usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c -o ffmpeg_movie.lo
 cc -I. -I/usr/local/src/ffmpeg-php-0.6.0 -DPHP_ATOM_INC -I/usr/local/src/ffmpeg-php-0.6.0/include -I/usr/local/src/ffmpeg-php-0.6.0/main -I/usr/local/src/ffmpeg-php-0.6.0 -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/usr/local/include/libavcodec/ -I/usr/local/include/libavformat/ -I/usr/local/include/libavutil/ -I/usr/local/include/libswscale/ -I/usr/local/include/libavfilter/ -I/usr/local/include/libavdevice/ -DHAVE_CONFIG_H -g -O2 -Wall -fno-strict-aliasing -c /usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c  -fPIC -DPIC -o .libs/ffmpeg_movie.o
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c: In function ‘zim_ffmpeg_movie___construct’:
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:311: error: ‘list_entry’ undeclared (first use in this function)
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:311: error: (Each undeclared identifier is reported only once
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:311: error: for each function it appears in.)
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:311: error: ‘le’ undeclared (first use in this function)
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:346: error: expected ‘;’ before ‘new_le’
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:356: error: ‘new_le’ undeclared (first use in this function)
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c: In function ‘zim_ffmpeg_movie_getComment’:
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:531: warning: ‘comment’ is deprecated (declared at /usr/local/include/libavformat/avformat.h:760)
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:531: warning: ‘comment’ is deprecated (declared at /usr/local/include/libavformat/avformat.h:760)
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c: In function ‘zim_ffmpeg_movie_getTitle’:
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:546: warning: ‘title’ is deprecated (declared at /usr/local/include/libavformat/avformat.h:757)
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:546: warning: ‘title’ is deprecated (declared at /usr/local/include/libavformat/avformat.h:757)
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c: In function ‘zim_ffmpeg_movie_getAuthor’:
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:561: warning: ‘author’ is deprecated (declared at /usr/local/include/libavformat/avformat.h:758)
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:561: warning: ‘author’ is deprecated (declared at /usr/local/include/libavformat/avformat.h:758)
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c: In function ‘zim_ffmpeg_movie_getCopyright’:
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:575: warning: ‘copyright’ is deprecated (declared at /usr/local/include/libavformat/avformat.h:759)
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:575: warning: ‘copyright’ is deprecated (declared at /usr/local/include/libavformat/avformat.h:759)
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c: In function ‘zim_ffmpeg_movie_getAlbum’:
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:590: warning: ‘album’ is deprecated (declared at /usr/local/include/libavformat/avformat.h:761)
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:590: warning: ‘album’ is deprecated (declared at /usr/local/include/libavformat/avformat.h:761)
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c: In function ‘zim_ffmpeg_movie_getGenre’:
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:604: warning: ‘genre’ is deprecated (declared at /usr/local/include/libavformat/avformat.h:764)
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:604: warning: ‘genre’ is deprecated (declared at /usr/local/include/libavformat/avformat.h:764)
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c: In function ‘zim_ffmpeg_movie_getTrackNumber’:
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:619: warning: ‘track’ is deprecated (declared at /usr/local/include/libavformat/avformat.h:763)
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c: In function ‘zim_ffmpeg_movie_getYear’:
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:632: warning: ‘year’ is deprecated (declared at /usr/local/include/libavformat/avformat.h:762)
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c: In function ‘_php_read_av_frame’:
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:1215: warning: ‘avcodec_decode_video’ is deprecated (declared at /usr/local/include/libavcodec/avcodec.h:3656)


ffmpeg_movie.c 파일 내용 수정 :


line 312: list_entry *le; --> zend_rsrc_list_entry *le; 
line 346: list_entry new_le; --> zend_rsrc_list_entry new_le; 
line 360: hashkey_length+1, (void *)&new_le, sizeof(list_entry), --> hashkey_length+1, (void *)&new_le,sizeof(zend_rsrc_list_entry),

./configure && make
sudo make install

모듈이 설치된 위치가 결과로 나옴.
예) /usr/lib64/php/modules/

/etc/php.ini 에 추가
extension=/usr/lib64/php/modules/ffmpeg.so;

아파치 restart 후 phpinfo()에 ffmpeg 항목 나타나는지 확인!

* php에서 적용방법 : 퍼옴

<?php
$filename = $_SERVER["DOCUMENT_ROOT"]."xxx"; //파일명 (실제경로)

$movie = new ffmpeg_movie($filename, false);
if (is_object($movie) === false) { 
    die("movie Error");
}

$duration = floor($movie->getDuration()); //플레이타임 추출
if ($duration == 0) { 
    die("duration Error"); 
}

$codec['video'] = $movie->getVideoCodec();  //비디오코덱추출
$codec['audio'] = $movie->getAudioCodec();  //오디오코덱추출
$codec['channel'] = $movie->getAudioChannels(); //채널 추출

if ($codec['video'] == "") { 
    die("video Error"); 
}

$rand = mt_rand(0, 10); //이부분은 프레임중 랜덤하게 추출하는것이라 구간을 작게잡아야 빠릅니다 
$frame = $movie->getFrame($rand);

if (is_object($frame) === false) { 
    die("frame Error");
}

$codec['height'] = $frame->getHeight(); 
$codec['width'] = $frame->getWidth();
?>



댓글 없음:

댓글 쓰기