捕获 FFMPEG 输出

问题描述 投票:0回答:5

我需要读取 ffmpeg 的输出,以便尝试解决“我昨天的问题”。这是与我的问题不同的问题,所以我提出了一个新问题。 我到底如何从 PHP 中的

ffmpeg -i

命令获取输出?


这就是我一直在尝试的:

<?PHP error_reporting(E_ALL); $src = "/var/videos/video1.wmv"; $command = "/usr/bin/ffmpeg -i " . $src; echo "<B>",$command,"</B><br/>"; $command = escapeshellcmd($command); echo "backtick:<br/><pre>"; `$command`; echo "</pre><br/>system:<br/><pre>"; echo system($command); echo "</pre><br/>shell_exec:<br/><pre>"; echo shell_exec($command); echo "</pre><br/>passthru:<br/><pre>"; passthru($command); echo "</pre><br/>exec:<br/><pre>"; $output = array(); exec($command,$output,$status); foreach($output AS $o) { echo $o , "<br/>"; } echo "</pre><br/>popen:<br/><pre>"; $handle = popen($command,'r'); echo fread($handle,1048576); pclose($handle); echo "</pre><br/>"; ?>

这是我的输出:

<B>/usr/bin/ffmpeg -i /var/videos/video1.wmv</B><br/> backtick:<br/> <pre></pre><br/> system:<br/> <pre></pre><br/> shell_exec:<br/> <pre></pre><br/> passthru:<br/> <pre></pre><br/> exec:<br/> <pre></pre><br/> popen:<br/> <pre></pre><br/>

我不明白。 
safe_mode

已关闭。

disable_functions
里什么也没有。该目录由
www-data
(我的 Ubuntu 系统上的 apache 用户)拥有。我从
exec()
system()
获得了有效的状态,并从命令行运行相同的命令给了我大量的输出。我觉得我一定错过了一些明显的东西,但我不知道它是什么。
    

php ffmpeg exec
5个回答
29
投票
stdout

而不是 stderr (请参阅 标准流)。 更改此行: $command = "/usr/bin/ffmpeg -i " . $src;

进入

$command = "/usr/bin/ffmpeg -i " . $src . " 2>&1";

再试一次:)


8
投票

$output = shell_exec('ffprobe -v quiet -print_format json -show_format -show_streams "path/to/yourfile.ext"'); $parsed = json_decode($output, true);

您的所有视频信息都在 php 数组中!由于某种原因,这比 ffmpeg -i 快得多。


4
投票

exec("ffmpeg -i input.avi output.mp4 2>&1", $output, $returnStatus); print_r($output); if($returnStatus === 0){ // success } else { //fail }



0
投票

exec("ffmpeg -i input.avi -vcodec h264 -acodec aac -strict -2 output.mp4 2>&1",$output); echo "<pre>"; print_r($output); echo "</pre>";



0
投票
https://trac.ffmpeg.org/wiki/PHP

© www.soinside.com 2019 - 2024. All rights reserved.