【备忘】在使用php-ffmpeg/php-ffmpeg开发时遇到Unable to load FFProbe时如何处理?

执行FFProbe::create()时,提示Unable to load FFProbe,php-ffmpeg/php-ffmpeg版本是用的^0.19.0,安装位置/usr/bin/ffprobe,现在提示这个错误要怎么解决呢

说个小技巧:

当在开发跟视频相关的功能时,总是出现:Unable to load FFProbe,这个时候有可能是环境变量问题,这是需要在相关功能之前执行如下代码,很可能你的问题就解决了。

putenv('PATH=' . getenv('PATH') . ':/usr/bin');

有个大前提,必须是你已经下载并安装了php-ffmpeg/php-ffmpeg库所需要的文件,如:

/usr/bin/ffmpeg
/usr/bin/ffprobe

这两个文件必不可少,网上有很多安装教程,自行检索。

安装之后再使用composer安装php-ffmpeg/php-ffmpeg库,然后在代码中使用,如:

function getVideoInfo(){
    //指定环境变量
    putenv('PATH=' . getenv('PATH') . ':/usr/bin');
    // 初始化FFMpeg实例,指向FFmpeg可执行文件的路径(根据实际情况调整路径)
    $ffmpeg = FFMpeg::create([
        'ffmpeg.binaries' => '/usr/bin/ffmpeg',  // 或者其他FFmpeg实际路径
        'ffprobe.binaries' => '/usr/bin/ffprobe', // 或者其他ffprobe实际路径
    ]);

    // 指定要从中提取第一帧的视频文件路径
    $inputVideo = $updata['real_path'];  // 替换为您的视频文件路径

    // 指定输出图像文件的路径和格式(例如,输出为JPEG格式)
    $filename = Tools::rand_str(32) . '.jpg';
    $outer_path = '/uploads/video_cover/' .date('Ymd').'/';
    $outputImagePath = Tools::get_root_path() .'public'. $outer_path;  // 替换为您希望保存第一帧的路径
    if(!file_exists($outputImagePath)){
        mkdir($outputImagePath, 0777, true);
    }
    $outputImage = $outputImagePath. $filename;
    // 打开视频文件
    $video = $ffmpeg->open($inputVideo);

    // 提取第一帧(默认情况下,FFMpeg库将从视频的开始处获取第一帧)
    $frame = $video->frame(TimeCode::fromSeconds(0));

    // 将第一帧保存到指定的图像文件
    $frame->save($outputImage, 'image/jpeg');
    // 使用FFProbe获取视频信息
    $ffprobe = FFProbe::create();
    $videoInfo = $ffprobe->format($inputVideo);
    // 获取视频的时长
    $duration = $videoInfo->get('duration');

    //其它业务逻辑
    //......
}

END

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-15 13:18:09       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-15 13:18:09       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-15 13:18:09       87 阅读
  4. Python语言-面向对象

    2024-05-15 13:18:09       96 阅读

热门阅读

  1. 三数之和算法题(LeetCode)

    2024-05-15 13:18:09       30 阅读
  2. Spring Boot学习

    2024-05-15 13:18:09       32 阅读
  3. fastapi+vue实现导出功能

    2024-05-15 13:18:09       33 阅读
  4. 深入理解Qt的信号与槽机制

    2024-05-15 13:18:09       26 阅读
  5. Python3 笔记:range() 函数

    2024-05-15 13:18:09       30 阅读
  6. 【大数据面试题】27 讲下Doris的物化视图

    2024-05-15 13:18:09       36 阅读
  7. CentOS常用命令速览:把握Linux服务器的脉动

    2024-05-15 13:18:09       28 阅读
  8. Milvus 基本概念

    2024-05-15 13:18:09       29 阅读