PHP FFMpeg安装和windows问题的基本用法

PHP FFMpeg安装和windows问题的基本用法,php,ffmpeg,Php,Ffmpeg,接下来,我通过Composer安装了PHP FFmpeg,并从 现在我尝试运行“基本用法”示例: <?php require("vendor/autoload.php"); $ffmpeg = FFMpeg\FFMpeg::create(); $video = $ffmpeg->open('video.mpg'); $video ->filters() ->resize(new FFMpeg\Coordinate\Dimension(320, 240))


接下来,我通过Composer安装了PHP FFmpeg,并从
现在我尝试运行“基本用法”示例:

<?php
require("vendor/autoload.php");
$ffmpeg = FFMpeg\FFMpeg::create();
$video = $ffmpeg->open('video.mpg');
$video
    ->filters()
    ->resize(new FFMpeg\Coordinate\Dimension(320, 240))
    ->synchronize();
$video
    ->frame(FFMpeg\Coordinate\TimeCode::fromSeconds(10))
    ->save('frame.jpg');
$video
    ->save(new FFMpeg\Format\Video\X264(), 'export-x264.mp4')
    ->save(new FFMpeg\Format\Video\WMV(), 'export-wmv.wmv')
    ->save(new FFMpeg\Format\Video\WebM(), 'export-webm.webm');
?>
但还是一样的错误。。。我是在小题大做吗?感谢您的帮助。。。谢谢

编辑1


我将ffmpeg\bin文件夹添加到系统路径,我可以从任何地方从cmd运行可执行文件,但现在我遇到了以下错误:
“未找到可执行文件,建议:avprobe,ffprobe”

相反,如果我显式地给出二进制路径,我会得到
'ffprobe无法执行命令“C:/FFmpeg/bin/ffprobe.exe”“-help”“-loglevel”“quiet”“

我做错了什么

编辑2

web服务器配置

  • Windows 10 Pro
  • IIS 10
  • PHP 7.0.9
站点根-->
C:\inetpub\wwwroot\site\

内容:
-index.php
-输入.mp4
-供应商/(PHP FFMpeg库文件夹)

FFmpeg二进制文件-->
C:\inetpub\wwwroot\FFmpeg\

内容:
-ffmpeg.exe
-ffplay.exe
-ffprobe.exe

index.php

<?php
ini_set('display_errors', 'On'); error_reporting(E_ALL);
require("vendor/autoload.php");
$ffmpeg = FFMpeg\FFMpeg::create(array(
    'ffmpeg.binaries'  => 'C:/inetpub/wwwroot/FFmpeg/ffmpeg.exe',
    'ffprobe.binaries' => 'C:/inetpub/wwwroot/FFmpeg/ffprobe.exe',
    'timeout'          => 3600, // The timeout for the underlying process
    'ffmpeg.threads'   => 12,   // The number of threads that FFMpeg should use
));
$video = $ffmpeg->open('input.mp4');
?>
他们说:

此库需要可正常工作的FFMpeg安装。您将需要FFMpeg和FFProbe二进制文件来使用它。确保可以使用系统路径定位这些二进制文件,以获得二进制检测的好处,否则您应该在加载时显式提供二进制文件路径

您需要将这些文件永久存储在某个位置,然后将此路径添加到系统或用户路径变量:


您可以在路径值的末尾添加“c:\my\path\to\ffmpeg”。

我也遇到了这个问题。花了两天时间使用procmon来确定为什么PHP没有在新的Windows 2016安装上启动ffprobe.exe

如果您的IIS AppPool标识在C:\Windows\temp文件夹上没有至少修改写入,则会出现此错误

您可以使用(不要与get_current_user()提供的用户上下文混淆)获取站点的应用程序池标识/上下文:

echo“Get ENV:”.getenv(“应用程序池ID”);
或

回显“获取服务器:”.$\u服务器[“应用程序池\u ID”]
然后我可以引用2个二进制文件而不指定任何路径,就好像它们总是在页面的同一文件夹中一样?我将ffmpeg\bin文件夹添加到系统路径,我可以从任何地方运行cmd中的可执行文件,但现在我得到了这个错误:“未找到可执行文件,建议:avprobe,ffprobe”。。。我做错了什么?@Miky correct,将它们添加到路径允许您在不指定绝对路径的情况下执行二进制文件。如何运行PHP脚本?看看这个问题-它可能会有帮助。你是说如何运行PHP脚本?我是说你是从命令行还是通过web服务器运行它?
<?php
ini_set('display_errors', 'On'); error_reporting(E_ALL);
require("vendor/autoload.php");
$ffmpeg = FFMpeg\FFMpeg::create(array(
    'ffmpeg.binaries'  => 'C:/inetpub/wwwroot/FFmpeg/ffmpeg.exe',
    'ffprobe.binaries' => 'C:/inetpub/wwwroot/FFmpeg/ffprobe.exe',
    'timeout'          => 3600, // The timeout for the underlying process
    'ffmpeg.threads'   => 12,   // The number of threads that FFMpeg should use
));
$video = $ffmpeg->open('input.mp4');
?>
Fatal error: Uncaught Alchemy\BinaryDriver\Exception\ExecutionFailureException: ffprobe failed to execute command "C:/inetpub/wwwroot/FFmpeg/ffprobe.exe" "-help" "-loglevel" "quiet" in C:\inetpub\wwwroot\site\vendor\alchemy\binary-driver\src\Alchemy\BinaryDriver\ProcessRunner.php:100 Stack trace: #0 C:\inetpub\wwwroot\site\vendor\alchemy\binary-driver\src\Alchemy\BinaryDriver\ProcessRunner.php(72): Alchemy\BinaryDriver\ProcessRunner->doExecutionFailure('"C:/inetpub/www...') #1 C:\inetpub\wwwroot\site\vendor\alchemy\binary-driver\src\Alchemy\BinaryDriver\AbstractBinary.php(209): Alchemy\BinaryDriver\ProcessRunner->run(Object(Symfony\Component\Process\Process), Object(SplObjectStorage), false) #2 C:\inetpub\wwwroot\site\vendor\alchemy\binary-driver\src\Alchemy\BinaryDriver\AbstractBinary.php(137): Alchemy\BinaryDriver\AbstractBinary->run(Object(Symfony\Component\Process\Process), false, NULL) #3 C:\inetpub\wwwroot\site\vendor\php-ffmpeg\php-ffmpeg\src\FFMpeg\FFProbe\OptionsTester.php(61): Alchemy\Binary in C:\inetpub\wwwroot\site\vendor\php-ffmpeg\php-ffmpeg\src\FFMpeg\FFProbe\OptionsTester.php on line 63