簡體   English   中英

Windows下的PHP-FFMpeg安裝和基本用法

[英]PHP-FFMpeg Installation and Basic Usage on windows issue


按照自述文件,我通過Composer安裝了PHP FFmpeg,並從https://ffmpeg.zeranoe.com/builds/下載了二進制文件。
現在,我正在嘗試運行“基本用法”示例:

<?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');
?>

但我收到“找不到可執行文件”錯誤,因為我不知道將它們放在哪里

我還嘗試使用以下命令指定二進制文件ffmpeg.exe和ffprobe.exe:

$ffmpeg = FFMpeg\FFMpeg::create(array(
    'ffmpeg.binaries'  => '/pathtobin/ffmpeg',
    'ffprobe.binaries' => '/pathtobin/ffprobe',
    'timeout'          => 3600, // The timeout for the underlying process
    'ffmpeg.threads'   => 12   // The number of threads that FFMpeg should use
), $logger);

但仍然是同樣的錯誤...我是不是從山坡上爬出來? 任何幫助表示贊賞...謝謝

編輯1

我在系統路徑中添加了ffmpeg \\ bin文件夾,並且可以從任何位置從cmd運行可執行文件,但是現在我收到此錯誤: "Executable not found, proposed : avprobe, ffprobe" ...
相反,如果我顯式地給出二進制路徑, 'ffprobe failed to execute command "C:/FFmpeg/bin/ffprobe.exe" "-help" "-loglevel" "quiet"'得到'ffprobe failed to execute command "C:/FFmpeg/bin/ffprobe.exe" "-help" "-loglevel" "quiet"'

我究竟做錯了什么?

編輯2

Web服務器配置

  • Windows 10專業版
  • IIS 10
  • PHP 7.0.9

網站根目錄---> C:\\inetpub\\wwwroot\\site\\
內容:
-index.php
-input.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');
?>

結果

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

文檔說:

該庫需要有效的FFMpeg安裝。 您將需要FFMpeg和FFProbe二進制文件才能使用它。 確保可以使用系統PATH找到這些二進制文件,以獲取二進制文件檢測的好處,否則,您必須在加載時顯式給出二進制文件路徑。

您將需要將它們存儲在永久位置,然后將此路徑添加到您的System或User PATH變量中:

Windows系統屬性

系統路徑環境變量

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

我也有這個問題。 使用procmon花了兩天時間來確定為什么PHP在新的Windows 2016安裝中沒有啟動ffprobe.exe。

事實證明,如果您的IIS AppPool身份至少沒有修改C:\\ Windows \\ temp文件夾上的寫入,您將收到此誤導性錯誤。

您可以使用來獲取站點的應用程序池標識/上下文(不要與get_current_user()提供的用戶上下文混淆):

 echo "Get ENV: ".getenv("APP_POOL_ID"); Or echo "Get SERVER: ".$_SERVER["APP_POOL_ID"]; 

根據我的分析,這是因為PHP-CGI.exe,CMD.exe和ffmpeg exe(ffmpeg.exe,ffprobe.exe,ffplay.exe)使用temp文件夾中的平面文件來交換和解析信息。 當PHP-CGI.exe在此位置創建一個臨時文件時,所有其他進程只能從該臨時文件讀取,而將其保留為空0字節。 每次加載頁面時,我都會將這些空的臨時文件寫入C:\\ Windows \\ Temp,並且ffprobe.exe永遠不會執行。

希望這對某人有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM