ปกติในบริการ เว็บโฮสติ้งของทาง packetlove.com จะอนุญาตให้ใช้งาน ffmpeg script ได้อยู่แล้วนะครับ
และสามารถรองรับการทำงานของเว็บที่ใช้งาน flash video เช่น youtube ได้ เพียงแค่ทางลูกค้าเขียนโคดให้เลือกใช้งาน php-ffmpeg module ไว้ด้วยก็จะใช้งานได้แล้วครับ
วันนี้ เลยอยากมาแนะนำ วิธีการติดตั้ง module ffmpeg ในส่วนของ server ดูกันนะครับผม
วิธีนั้นไม่ยากเลย ลองดูตามนี้ นะครับผม
OS : base on Centos + Directadmin
PHP : 5.3 , 5.5
เริ่มต้น ทำการ install app ที่จำเป็นก่อนผ่าน yum ก่อนนะครับ
#yum update
#yum -y install ffmpeg ffmpeg-devel libogg libvorbis lame flvtool2 mencoder
ถ้าเจอ package ไม่ครบสามารถโหลดจาก repo นี้ได้ครับผม "dag.repo" ทำการเพิ่ม source ของ repo ก่อน
#vi /etc/yum.repos.d/dag.repo
[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
gpgkey=http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt
enabled=1
protect=0
ต่อไปทำการ download gpg key ครับ
#wget
http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt -P /tmp
#rpm --import /tmp/RPM-GPG-KEY.dag.txt
แล้วทำการ โหลด package ให้ครบอีกครั้ง
#yum -y install ffmpeg ffmpeg-devel libogg libvorbis lame flvtool2 mencoder
หลังจากลงได้ครบเรียบร้อยแล้ว
ต่อไปทำการลง php-ffmpeg ครับ ให้เลือกตาม php version
#php -v
Download ตัว source ได้จาก
#wget
https://centos.googlecode.com/files/ffmpeg-php-0.6.0.tbz2#tar -xjf ffmpeg-php-0.6.0.tbz2
#cd ffmpeg-php-0.6.0
ทำการรัน ‘phpize’ เพื่อให้สร้างตัว build script ที่จำเป็นในการลงครับ
#phpize
If you get an error message “phpize: command not found”, It means that phpize is not in the system PATH. In our case, using PHP FPM version 5.6 the full path to the phpize is ‘/usr/local/php56/bin/phpize’, so we need to run:
#/usr/local/bin/phpize
ถ้ารันแล้วไม่มี error ขึ้นก็แสดงว่าผ่านครับ ต่อไปทำการ configure
#./configure --with-php-config=/usr/local/bin/php-config
ถ้าไม่เจอ php-config ลองทำการค้นหา โดย whereis php-config นะครับ
หลังจากที่ configure ไม่มี error ต่อไปก็ make ครับ
#make
ถ้าเจอ error make: *** [ffmpeg_movie.lo] Error 1 open the ffmpeg_movie.c file and make the following changes:
#vi ffmpeg_movie.c
Change list_entry *le; to zend_rsrc_list_entry *le;
Change list_entry new_le; to zend_rsrc_list_entry new_le;
Change hashkey_length+1, (void *)&new_le, sizeof(list_entry), to hashkey_length+1, (void *)&new_le,sizeof(zend_rsrc_list_entry),
แล้วลอง compile ใหม่นะครับ
แต่ถ้าเป็น error
/download/ffmpeg-php-0.6.0/ffmpeg_frame.c: In function ‘zif_ffmpeg_frame_toGDImage’:
/download/ffmpeg-php-0.6.0/ffmpeg_frame.c:336: error: ‘PIX_FMT_RGBA32’ undeclared (first use in this function)
/download/ffmpeg-php-0.6.0/ffmpeg_frame.c:336: error: (Each undeclared identifier is reported only once
/download/ffmpeg-php-0.6.0/ffmpeg_frame.c:336: error: for each function it appears in.)
/download/ffmpeg-php-0.6.0/ffmpeg_frame.c: In function ‘zif_ffmpeg_frame_ffmpeg_frame’:
/download/ffmpeg-php-0.6.0/ffmpeg_frame.c:421: error: ‘PIX_FMT_RGBA32’ undeclared (first use in this function)
make: *** [ffmpeg_frame.lo] Error 1
วิธีแก้ไขคือ ทำการแก้ไขที่ไฟล์ ffmpeg_frame.c ทำการ backup ไว้ก่อนแล้วก็แก้ไขนะครับ
1. เปลี่ยนค่าประมาณ 3 จุดจาก PIX_FMT_RGBA32 เป็น PIX_FMT_RGB32
แล้วทำการ re-make ใหม่อีกรอบครับ
#make
ถ้าผ่านโดยไม่เจอ error ก็โอเคครับผม
ต่อไปทำการ run make install
#make install
ถ้าเรียบร้อยก็ไปแก้ไข ไฟล์ php.ini ให้ใช้งาน ffmpeg module ได้ต่อไปครับ
#cd /usr/local/lib/ ; cp php.ini php.ini.ori
#vi php.ini
ทำการเพิ่ม extension_dir ลงไปใน directory นี้ครับ
extension_dir ="/usr/local/lib/php/extensions/no-debug-non-zts-20090626/"
แล้วเพิ่มตัว module ffmpeg ต่อท้ายครับ
extension="ffmpeg.so"
หลังจากนั้นทำการ restart httpd ให้มองเห็น module ffmpeg ครับ ถ้าเป็น php56
#service php-fpm56 restart
แต่ถ้าใช้งานเป็น php53 ,php55
#service httpd restart
หลังจาก re-start web server เชคว่า เซิฟเวอร์เราได้ทำการ support php-ffmpeg แล้วหรือยังโดย
#php -m | grep ffmpeg
เท่านี้ก็เรียบร้อยแล้วครับผม