首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 使用 php5-ffmpeg 擷取影片縮圖實戰教學

     編輯:PHP 綜合知識

Ubuntu 官方倉庫提供 php5-ffmpeg 擴充套件,讓 PHP 能直接呼叫 FFmpeg 處理影音。本文實測其安裝與擷圖效能,並提供可直接使用的程式碼範例。

安裝步驟

sudo apt-get install ffmpeg php5-ffmpeg php5-gd

安裝完成後重啟 Apache 或 PHP-FPM 生效。

效能實測紀錄

  • 格式支援度:取決於系統 FFmpeg 編譯參數,若需支援專有格式,建議自行編譯 FFmpeg。
  • 擷圖速度:2 分鐘影片擷取 10 張圖約需 30 秒,效能未達預期,大量處理時需考慮非同步隊列。

擷圖程式碼範例

<?php
$page = 10;                 // 擷取張數
$prefix = 'screencap';      // 輸出檔名稱前綴

$mov = new ffmpeg_movie('gt.avi');
$count = $mov->getFrameCount();
$range = (int)round($count / ($page + 1));

for ($i = 1; $i <= $page; $i++) {
    $frameNum = $range * $i;
    $imgFile = $prefix . '_' . $i . '.png';

    $frame = $mov->getFrame($frameNum);
    if (!$frame) continue;

    $gdImage = $frame->toGDImage();
    if (!$gdImage) continue;

    imagepng($gdImage, $imgFile);
    imagedestroy($gdImage);

    echo '<img src="' . $imgFile . '" border="1" /><br />';
}
?>

關鍵類別與方法說明

類別/方法用途
ffmpeg_movie開啟影片檔案,取得影片資訊
getFrameCount()取得總畫面數
getFrame($num)取得指定畫面的 ffmpeg_frame 物件
toGDImage()將畫面轉為 GD 影像資源

進階應用建議

  • 搭配 ffmpeg-php 新版 API(FFMpeg\FFMpeg)功能更完整。
  • 大量影片處理請採用訊息佇列(如 RabbitMQ、Redis Queue)非同步執行,避免阻塞 Web 請求。
  • 輸出格式可改用 imagejpeg() 調整品質與檔案大小。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved