PHP使用FFmpeg
1.安装
1.1.WIN安装
【Windows】FFmpeg安装教程_ffmpeg win7-CSDN博客
1.2. linux安装
宝塔安装ffmpeg的方法_宝塔 ffmpeg-CSDN博客
2.使用
<?php // 上传目录 $uploadDir = __DIR__ . '/uploads/'; if (!is_dir($uploadDir)) { mkdir($uploadDir, 0777, true); } // 处理文件上传 if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['video'])) { $videoFile = $_FILES['video']; // 检查上传是否成功 if ($videoFile['error'] !== UPLOAD_ERR_OK) { die('视频上传失败'); } // 获取上传的视频路径 $videoPath = $uploadDir . basename($videoFile['name']); move_uploaded_file($videoFile['tmp_name'], $videoPath); // 定义输出图片路径 $imagePath = $uploadDir . pathinfo($videoFile['name'], PATHINFO_FILENAME) . '.jpg'; // 调用 FFmpeg 截取第一帧 $ffmpegCommand = "ffmpeg -i {$videoPath} -vf \"select=eq(n\,0)\" -q:v 3 {$imagePath} 2>&1"; exec($ffmpegCommand, $output, $returnCode); // 检查命令执行结果 if ($returnCode === 0) { echo "第一帧图片已保存: <a href='{$imagePath}' target='_blank'>点击查看</a>"; } else { echo "截取第一帧失败: " . implode('<br>', $output); } } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>上传视频并截取第一帧</title> </head> <body> <h1>上传视频并截取第一帧</h1> <form action="" method="post" enctype="multipart/form-data"> <label for="video">选择视频文件:</label> <input type="file" name="video" id="video" accept="video/*" required> <button type="submit">上传并截取第一帧</button> </form> </body> </html>
3.其它问题
3.1.# ffmpeg -version -bash: ffmpeg: command not found
问题分析
-
yasm/nasm not found or too old
- 这是由于系统中缺少
yasm
或nasm
工具,或者它们的版本过旧。 yasm
和nasm
是汇编器工具,FFmpeg 的某些组件(如编码器、解码器)需要它们来优化性能。
- 这是由于系统中缺少
-
config.mak: No such file or directory
- 这表明 FFmpeg 的配置脚本(
configure
)没有成功运行,导致生成的config.mak
文件缺失。 - 配置失败的原因可能是依赖项未满足(如缺少
yasm/nasm
),或者环境设置不正确。
- 这表明 FFmpeg 的配置脚本(
-
Makefile
相关错误- 因为
configure
脚本未能正确运行,后续的make
命令无法找到所需的文件(如common.mak
、libavutil/Makefile
等)。
- 因为
-
ffmpeg: command not found
- 这是因为 FFmpeg 没有被正确安装,系统中不存在可执行的
ffmpeg
文件。
- 这是因为 FFmpeg 没有被正确安装,系统中不存在可执行的
解决方案
步骤 1:安装必要的依赖项
确保系统中安装了所有必要的依赖项,包括 yasm
或 nasm
。以下命令适用于常见的 Linux 发行版:
-
CentOS/RHEL:
sudo yum install -y yasm nasm gcc make git
-
Ubuntu/Debian:
sudo apt update sudo apt install -y yasm nasm build-essential git
-
macOS(使用 Homebrew):
brew install yasm nasm
验证 yasm
和 nasm
是否已正确安装:
yasm --version
nasm --version