วันนี้เราจะมาแนะนำการติดตั้ง FFmpeg เพื่อใช้สำหรับการแปลงไฟล์วิดีโอจากฟอร์แมตหนึ่งไปเป็นอีกฟอร์แมตหนึ่ง เช่นแปลงจาก .mov เป็น .flv เพื่อใช้สำหรับงานวิดีโอบนเว็บไซต์ โดยเจ้า FFmpeg เนี้ยรองรับฟอร์แมตของวิดีโอเยอะมากๆ คิดว่าน่าจะพอกับความต้องการของแต่ละคนเลยทีเดียว และเรายังมี ffmpeg-php ที่จะเป็น extension สำหรับเรียกใช้ FFmpeg จาก php ได้อีกด้วย (แต่ตอนนี้ความสามารถยังไม่เยอะมากนัก) หรือถ้าใครติดตั้ง FFmpeg แล้ว ต้องการจะทำเว็บรับฝากวิดีโอคล้ายๆ youtube โดยให้ผู้ใช้อัพโหลดไฟล์ฟอร์แมตอะไรขึ้นมาก็ได้ จากน้ันระบบจะแปลงไปเป็น .flv เพื่อใช้เล่นบนเว็บหรือจะแปลงเป็นฟอร์แมตอื่นก็ทำได้
อย่างแรกทำการเพิ่ม Repository ใหม่เข้าไปในระบบให้เรียบร้อย
1 | # nano /etc/yum.repos.d/dag.repo |
เพิ่มคำสั่งต่อไปนี้ในไฟล์ /etc/yum.repos.d/dag.repo
1 2 3 4 5 | [dag] name=DAG RPM Repository baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag gpgcheck=1 enabled=1 |
ทำการ import GPG Key เข้าระบบ
1 | # rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt |
สั่ง yum update สักรอบหนึ่ง
1 | # yum update |
ทำการติดตั้ง ffmpeg และไลบรารีทีเกียวข้องด้วยคำสั่ง yum
1 | # yum install ffmpeg ffmpeg-devel ffmpeg-libpostproc |
ขั้นตอนถัดไปให้ทำการติดตั้ง ffmpeg-php แต่ว่า ffmpeg-php ต้องการโปรแกรมและไลบรารีต่างๆดังนี้คือ php php-gd php-devel ความจำผมสั่นไม่แน่ใจว่าได้ติดตั้งไปหรือยัง งั้นเราก็สั่งติดตั้งซ้ำลงไปอีกรอบเลยหละกัน
1 | # yum install php php-gd php-devel |
ทำการดาวน์โหลดและติดตั้ง ffmpeg-php จาก http://sourceforge.net/projects/ffmpeg-php/files/ffmpeg-php/ โดยเลือกเอาเวอร์ชั่นล่าสุด
1 2 3 4 5 6 7 8 | # cd /tmp # wget http://sourceforge.net/projects/ffmpeg-php/files/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2/download # tar -xjf ffmpeg-php-0.6.0.tbz2 # cd ffmpeg-php-0.6.0 # phpize # ./configure # make # make install |
ในขั้นตอนการคอมไพล์ ถ้าหากว่าเกิดมี Error เกียวกับ PIX_FMT_RGBA32 ขึ้นมาเหมือนในรูป ให้เข้าไปทำการแก้ไข ไฟล์ /tmp/ffmpeg-php-0.6.0/ffmpeg_frame.c โดยแก้ไขจากคำว่า PIX_FMT_RGBA32 ให้เป็น PIX_FMT_RGB32 ซึ่งในโค้ดเป็นภาษาซี และตัวแปร PIX_FMT_RGBA32 ก็มีอยู่หลายทีมาก โดยในทีนี้เราจะใช้ nano ในการแก้ไข โดยให้กด CTRL + \ เพื่อทำการค้นหาและแทนที่คำที่เราต้องการ และเมื่อแก้ไขโค้ดเสร็จแล้ว ให้ทำการสั่งคอมไพล์ใหม่อีกรอบ
ทำการเปิดไฟล์ /tmp/ffmpeg-php-0.6.0/ffmpeg_frame.c ขึ้นมาเพื่อทำการแก้ไข
1 | # nano /tmp/ffmpeg-php-0.6.0/ffmpeg_frame.c |
เมื่อทำการคอมไพล์ ffmpeg-php เรียบร้อยแล้ว ให้ทำการเพิ่ม ffmpeg ลงไปใน php extension ด้วยคำสั่ง echo extension=ffmpeg.so > /etc/php.d/ffmpeg.ini
1 | # echo extension=ffmpeg.so > /etc/php.d/ffmpeg.ini |
สั่ง restart apache httpd สักหนึ่งรอบ
1 | # service httpd restart |
จากนั้นเปิดบราวเซอร์ไปที่ http://192.168.8.104/info.php เพื่อตรวจสอบ extension ของ php จะเห็นว่าเราได้ ffmpeg มาแล้ว เท่านี้ก็เป็นอันเรียบร้อย
ก่อนจบเราก็ต้องทดสอบการแปลงไฟล์ video ของเราดูหน่อยว่าใช้งานได้ไหม โดยเราจะทดสอบแปลงจาก .mov เป็น .flv
1 | # ffmpeg -i inputFile.mov outputFile.flv |