PHP-วิธีใช้-ffmpeg-แปลงไฟล์วีดีโอเป็น-mp4

ffmpeg คือ ซอฟต์แวร์สำหรับจัดการไฟล์มีเดียต่าง ๆ ไม่ใช่เฉพาะวีดีโอ แต่รวมถึงไฟล์ภาพ เราสามารถใช้ความสามารถของ ffmpeg เพื่อแปลงไฟล์วีดีโอนามสกุลต่าง ๆ ตัวอย่างเช่น การแปลงไฟล์วีดีโอนามสกุล avi เป็นไฟล์ mp4 เพื่อให้สามารถนำไป streaming ผ่านเว็บไซต์ โดยการใช้ html5 video tags ได้

ffmpeg เป็นซอฟต์แวร์ที่เปิดให้นักพัฒนาสามารถนำไปใช้งานได้ฟรี ไม่มีค่าใช้จ่าย ( Open Source ) สามารถใช้งานได้ทั้ง 3 ระบบปฏิบัติการหลัก คือ Linux, MacOS และ ระบบปฏิบัติการ Window

ติดตั้ง ffmpeg และแปลงไฟล์ avi เป็น mp4

  • ดาวน์โหลด ffmpeg ที่ ffmpeg.org เลือกเป็น Get packages & executable files
  • unzip ไฟล์ จากนั้นให้ rename ไฟล์ php_ffmpeg_20050212.dll เป็น php_ffmpeg.dll และนำไฟล์ไปวางไว้ที่ C:\xampp\php\ext
  • เปิดไฟล์ php.ini ที่ C:\xampp\php และเพิ่ม หรือ เปิดใช้งาน extension=php_ffmpeg.dll จากนั้นให้ Restart Apache Server ก่อนรอบหนึ่ง
  • สร้างโฟลเด้อโปรเจคใน htdocs xampp ตั้งชื่อว่า videoconvert และนำไฟล์ ffmpeg.exe ที่ได้จากการดาวน์โหลดมาในข้อ 1 นำไปวางไว้ที่ root ของโปรเจค
  • ดาวน์โหลดไฟล์วีดีโอ .avi ตั้งชื่อว่า sample.avi และวางไว้ที่ root ของโปรเจค ตำแหน่งเดียวกันกับ ffmpeg.exe ดาวน์โหลดได้ที่ learningcontainer.com/download
  • หลังจากทำตามขั้นตอนทั้งหมดครบเรียบร้อยแล้ว จะได้โครงสร้างไฟล์ ดังรูปตัวอย่างด้านล่างครับ
  • สร้างไฟล์ index.php และเขียนคำสั่งเพื่อแปลงไฟล์วีดีโอนามสกุล avi เป็น mp4 ได้ดังนี้
$ffmpegpath = "ffmpeg.exe";
$input = 'sample.avi';
$output = 'sample.mp4';

echo 'Converting...';

if (convertVideo($input, $output)){
    echo '<meta http-equiv="refresh" content="3;url=/videoconvert/player.php?vdo='.$output.'">';
}

function convertVideo($input, $output) {
    global $ffmpegpath;
    
    if(!file_exists($input)){
        echo 'file not exists';
        return false;
    }
    if(file_exists($output)) return true;
    $command = "$ffmpegpath -i $input  -y $output";
    exec( $command);
    if(!file_exists($output)) return false;
    if(filesize($output)==0) return false;
    return true;
}
  • สร้างไฟล์ player.php ใช้สำหรับเล่นไฟล์วีดีโอ .mp4 หลังจากแปลงไฟล์สำเร็จ โดยเขียนคำสั่งแสดง video player ดังนี้
showPlayer($_GET['vdo']);
function showPlayer($video_path){
  echo $video_path;
}
  • จากนั้นเริ่ม run โปรเจคที่ไฟล์ index.php รอจนกว่า ffmpeg จะแปลงไฟล์วีดีโอเสร็จ ก็จะเห็นว่าไฟล์ mp4 โผล่มาแล้ว
  • หลังจากแปลงไฟล์เสร็จ เราได้เขียนคำสั่งให้ redirect มาที่หน้า player.php เพื่อทดสอบเล่นวีดีโอไฟล์นามสกุล mp4 ตัวอย่างตามภาพด้านล่าง

By codebee

- Programmer & Writer