本文提供最精簡的 PHP 視頻縮圖生成函數,僅需幾行代碼即可從任意視頻檔案擷取指定時間點的畫面作為縮圖。
function convertToFlv($input, $output) {
echo "Converting $input to $output
";
$command = "ffmpeg -v 0 -y -i $input -vframes 1 -ss 5 -vcodec mjpeg -f rawvideo -s 286x160 -aspect 16:9 $output";
echo "$command
";
shell_exec($command);
echo "Converted
";
}
-v 0:關閉詳細日誌輸出-y:覆蓋輸出檔案無需確認-i $input:輸入檔案-vframes 1:只擷取 1 幀-ss 5:跳至第 5 秒(避開開頭黑屏/Logo)-vcodec mjpeg:使用 MJPEG 編碼輸出 JPEG-f rawvideo:強制原始視頻格式-s 286x160:輸出解析度(16:9)-aspect 16:9:設定長寬比$command = sprintf(
'ffmpeg -v 0 -y -i %s -vframes 1 -ss 5 -vcodec mjpeg -f rawvideo -s 286x160 -aspect 16:9 %s',
escapeshellarg($input),
escapeshellarg($output)
);
-ss 5 移至 -i 之前(ffmpeg -ss 5 -i input ...),速度提升 10-100 倍function generateThumbnail($input, $output, $time = 5) {
$cmd = sprintf(
'ffmpeg -y -ss %d -i %s -vframes 1 -vcodec mjpeg %s',
$time,
escapeshellarg($input),
escapeshellarg($output)
);
$result = shell_exec($cmd);
return file_exists($output) && filesize($output) > 0;
}
適合簡單專案、原型開發、單機少量視頻處理。生產環境建議封裝為服務類,整合異步隊列、快取、日誌、監控等基礎設施。