Windows下PHP中使用ffmpeg

Posted

技术标签:

【中文标题】Windows下PHP中使用ffmpeg【英文标题】:Using ffmpeg in PHP under Windows 【发布时间】:2011-05-19 20:15:25 【问题描述】:

我有几个问题,非常感谢您的帮助。而且很紧急。

我正在使用 php 开发一个 CMS。我正在开发一些音频/视频转换。 我正在 Windows 7 下开发它。最终这个 CMS 将在 Linux 服务器上运行。

我需要 ffmpeg 来转换音频/视频。

如何在 Windows 上使用它?我是否需要将 ffmpeg 安装为 php 扩展,以便我可以在我的项目中使用它?因为我做不到。它不会将其识别为 php 扩展。我将文件复制到 php_ext 文件夹和 system32。我还编辑了 php.ini 文件。但什么都没有。

我可以在没有上一步的情况下使用 ffmpeg 吗?如何使用?

最终,如果我让它工作,当我将 CMS 移动到 Linux 服务器时会出现什么问题(我知道 ffmpeg 应该在 Linux 下工作,因为它更容易安装。)。 当我从 Windows 迁移到 Linux 时,是否需要四处寻找 ffmpeg 的路径,反之亦然。

你对我有什么建议?

提前致谢。 丹尼斯

【问题讨论】:

可以使用更容易设置的外部ffmpeg 二进制文件。 有 ffmpeg-php,但我从未使用过,所以不知道它有多好/最新:ffmpeg-php.sourceforge.net 【参考方案1】:

最简单的做法就是将 FFMpeg 用作可执行文件。构建一个命令行,然后执行它。

但是……这是个坏主意。如果你开始将多个并发的 FFMpeg 链接在一起,你很可能会杀死机器,即使你很好地处理了这些进程。

你需要做的是建立一个守护队列系统。您可以将整天要编码的媒体放入一个文件夹中,ffmpeg 只会运行队列中的下一个项目(这也意味着需要优先级)。这样,您可以正确地完善命令。

在 Unix 中,我们只是设置了一个 cron 作业,它每分钟左右检查一次数据库(你会使用 Windows 任务计划程序)...如果队列中有东西,将状态标记为“编码”,开始编码过程,然后在完成后再次检查。当队列为空时,取消标记状态。这样,其他应用程序(例如网站本身)也可以知道编码状态,这在各个方面都更好。

【讨论】:

以上是关于Windows下PHP中使用ffmpeg的主要内容,如果未能解决你的问题,请参考以下文章

WIN下如何在PHP扩展里打开openssl支持

windows下php7.1安装redis扩展以及redis测试使用全过程

windows10定时1分钟执行php脚本,不使用windows的.bat文件

关于在phpStudy环境下,windows cmd中 php不是内部命令问题

[日常] windows下使用vscode配合xebug调试php脚本

如何在Windows下配置搭建PHP环境