0

我已经在互联网上搜索了超过 3 天,但找不到任何清楚说明如何为 php 安装 ffmpeg 的内容。我目前在我的 Mac 命令行上正确安装了 ffmpeg,但是关于如何在我的 php 脚本中使用它却超出了我的范围。如何为 php 安装 ffmpeg?任何帮助都会很棒。谢谢。

4

1 回答 1

0

ffmpeg 是一组可执行程序,而不是 API。过去我知道有一个项目构建了一个 php 扩展,但它并不健壮,并且由于多种原因从未真正成为可行的,其中最重要的是 ffmpeg 有很多不同的选项和构建.

几年前,我的任务是为一家社交网络初创公司构建一个音频和视频编码系统,使用 PHP 作为中间件,所以我已经完成了这个确切的练习。

最具挑战性的方面之一是提出一个工作编译版本的 ffmpeg,其中包含我们想要的所有编码器。在我们的例子中,我们的托管环境是 AWS,我们使用的是 Amazon linux 服务器,所以在此过程中出现了一些小问题,我不得不去寻找补丁。有一些包含 ffmpeg 的软件包,但它们已经过时并且缺少我们需要的关键功能。让事情正常工作的唯一方法是获取 ffmpeg 源并对其进行编译,以及我们使用的各种编解码器的源,主要是为了获取 mpeg4 视频和兼容的音频。如果您不习惯这样做,您可能无法正常工作。

关于它的 PHP 方面,我最终使用了上面评论中建议的 PHP-FFMpeg 库,但我确实对它进行了分叉并进行了很多对我们有用的自定义,但对上游并没有真正的贡献。随后,该库的维护者解决了我遇到的许多问题,它现在是一个更加健壮的库,如果您尝试创建自己的包装器,它应该可以为您节省很多问题。

总之,您的服务器需要:

  • ffmpeg 的工作编译版本及其相关的帮助
    程序,这取决于您将要对
    正在制作的媒体做什么。例如,有一个单独的媒体自省程序 (ffprobe) 用于确定要编码的媒体的特征。
  • 一个 PSR-0/Composer 兼容的项目。我们是在 Symfony 2.x 之上构建的,但这不是必需的。我确实想提到它,因为该项目确实推动了 symfony 组件的改进和稳定性,该组件将 php 'exec' 函数包装在任何调用外部程序的努力的核心。

按照说明并通读 API,您应该能够获得使用 PHP 的示例编码,但请记住,ffmpeg 可以处理文件,并且您必须考虑许多与文件相关的问题(原始文件,渲染文件和命名,临时文件位置)所有这些你都必须处理,除非你正在做一些微不足道的事情。在我们的案例中,这些程序是面向异步命令行/批处理的,并且需要花费大量时间和精力来找出一种可扩展和提高性能的方法。不用说,编码视频可能会花费很多时间,并且不是您想要在最终用户上传然后等待您在同一个脚本中进行所有处理的单一 php 脚本中执行的操作!

我知道您正在尝试在 Mac 上执行此操作。这真的是您的生产部署的目标环境吗?这是一个非常挑剔和平台相关的过程,我认为不建议尝试在你的 Mac 上获取一个 hacky 版本,因为获取 ffmpeg 的过程,以及确切的版本和组件是高度可变的,对你来说非常重要成功。

于 2016-02-02T21:53:50.070 回答