Author Topic: install ffmpeg php-ffmpeg module on directadmin centos  (Read 5245 times)

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2141
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
install ffmpeg php-ffmpeg module on directadmin centos
« on: กันยายน 05, 2015, 06:26:12 PM »
ปกติในบริการ เว็บโฮสติ้งของทาง 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

เท่านี้ก็เรียบร้อยแล้วครับผม  ;)