必须分两步:先用composer require php-ffmpeg/php-ffmpeg安装php封装库,再手动安装并配置系统级ffmpeg/ffprobe二进制路径、权限及超时参数,否则无法真正执行音视频处理。

Composer 本身不提供音视频处理能力,它只是 PHP 的依赖管理工具;你要装的不是“在线教育系统的音视频处理插件”,而是能完成转码、截图、流分发等任务的第三方库——比如 ffmpeg-php(已废弃)、php-ffmpeg 或直接调用系统 ffmpeg 二进制。
为什么不能直接 composer require 一个“音视频插件”?
PHP 没有原生音视频处理能力,所有功能都依赖外部程序(主要是 ffmpeg)或封装库。Composer 只负责下载 PHP 包,不自动安装系统级依赖。
-
php-ffmpeg是最常用的封装库,但它只是 PHP 接口,背后必须有ffmpeg命令可用 - 很多所谓“插件”其实是 Laravel 包(如
laravel-ffmpeg),本质还是基于php-ffmpeg - 直接
composer require ffmpeg/ffmpeg只会装 PHP 类,不会帮你装ffmpeg二进制,线上环境大概率跑不起来
怎么正确安装 php-ffmpeg 并让音视频处理真正工作?
分两步:先装 PHP 库,再确保系统有可用的 ffmpeg。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 运行
composer require php-ffmpeg/php-ffmpeg(注意包名不是ffmpeg/ffmpeg) - 确认服务器已安装
ffmpeg:执行ffmpeg -version,返回版本号才算通过 - 如果没装,Ubuntu/Debian 用
sudo apt update && sudo apt install ffmpeg;CentOS/RHEL 用sudo yum install epel-release && sudo yum install ffmpeg - Laravel 用户可额外装
composer require pbmedia/laravel-ffmpeg,它封装了队列、进度回调等实用功能,但底层仍依赖php-ffmpeg和系统ffmpeg
常见报错:FFMpeg binary not found 怎么解决?
这是最典型的“PHP 找不到 ffmpeg”的错误,原因通常是路径不对或权限问题。
- 检查
ffmpeg是否在$PATH中:PHP 的exec('which ffmpeg')返回空就说明不在路径里 - 手动指定路径:初始化时传入绝对路径,例如
FFMpeg::create(['ffmpeg.binaries' => '/usr/local/bin/ffmpeg']) - Web 服务器用户(如 www-data)可能无权执行
ffmpeg,用sudo -u www-data ffmpeg -version测试权限 - 某些共享主机禁用
exec函数,此时php-ffmpeg根本不可用,得换方案(如调用云服务 API)
在线教育场景下,哪些操作必须注意性能和并发?
上传视频后自动生成缩略图、转多清晰度、加水印——这些是典型需求,但容易在线上崩掉。
- 别在请求中直接跑
ffmpeg:一个 10 分钟 MP4 转码可能耗时 30 秒以上,会拖死 PHP-FPM 进程 - 必须丢进队列:Laravel 用
dispatch(new ProcessVideoJob($videoPath)),Symfony 用 Messenger,纯 PHP 用 Redis + Worker - 限制并发数:
ffmpeg是 CPU 密集型,4 核机器同时跑 3 个转码基本就满载,需控制 Worker 数量 - 临时文件目录要足够大且可写,
/tmp在某些环境会被清空,建议指定temporary_path到持久位置
真正卡住人的从来不是 Composer 那行命令,而是 ffmpeg 路径、权限、队列配置和资源限制这四点。漏查任意一项,都会让你在日志里看到一堆 command not found 或超时中断。










