Loading

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

问题分析

  1. yasm/nasm not found or too old

    • 这是由于系统中缺少 yasm 或 nasm 工具,或者它们的版本过旧。
    • yasm 和 nasm 是汇编器工具,FFmpeg 的某些组件(如编码器、解码器)需要它们来优化性能。
  2. config.mak: No such file or directory

    • 这表明 FFmpeg 的配置脚本(configure)没有成功运行,导致生成的 config.mak 文件缺失。
    • 配置失败的原因可能是依赖项未满足(如缺少 yasm/nasm),或者环境设置不正确。
  3. Makefile 相关错误

    • 因为 configure 脚本未能正确运行,后续的 make 命令无法找到所需的文件(如 common.maklibavutil/Makefile 等)。
  4. ffmpeg: command not found

    • 这是因为 FFmpeg 没有被正确安装,系统中不存在可执行的 ffmpeg 文件。

解决方案

步骤 1:安装必要的依赖项

确保系统中安装了所有必要的依赖项,包括 yasmnasm。以下命令适用于常见的 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

验证 yasmnasm 是否已正确安装:

yasm --version
nasm --version

 

 

posted @ 2025-04-23 15:12  路闻man  阅读(116)  评论(0)    收藏  举报