无法通过PHP执行CLI命令

时间:2012-01-12 11:19:49

标签: php apache ffmpeg

操作系统:ubuntu 11.10 网络服务器:Apache 代码:PHP 我试图使用PHP在网页上显示命令“ffmpeg -i”的输出。 必需:网页应显示有关视频(文本)的信息。 发生了什么:网页显示运行php代码时没有文本输出。 如果我正在做系统(“ls”),代码运行正常并输出文件列表。 这是我的代码

<?php
 echo "Details of video file:";
 system('ffmpeg -i /home/atish/Videos/T2V0040006_Angled_ride_720x576i_FLDCMB.avi');
?>

同样的命令在我的shell上工作正常,我的系统安装了ffmpeg。这是直接在shell上执行此命令的快照:

ThinkPad-T420:~/Videos$ ffmpeg -i /home/xx/Videos/T2V0040006_Angled_ride_720x576i_FLDCMB.avi
ffmpeg version git-2012-01-10-7e2ba2d Copyright (c) 2000-2012 the FFmpeg developers
built on Jan 10 2012 12:01:19 with gcc 4.6.1
configuration: --enable-gpl --enable-libfaac --enable-libmp3lame --enable-libopencore-    amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-nonfree --enable-postproc --enable-version3 --enable-x11grab
  libavutil      51. 34.100 / 51. 34.100
  libavcodec     53. 54.100 / 53. 54.100
  libavformat    53. 29.100 / 53. 29.100
  libavdevice    53.  4.100 / 53.  4.100
  libavfilter     2. 58.100 /  2. 58.100
  libswscale      2.  1.100 /  2.  1.100
  libswresample   0.  6.100 /  0.  6.100
  libpostproc    51.  2.100 / 51.  2.100
  Input #0, avi, from '/home/atish/Videos/T2V0040006_Angled_ride_720x576i_FLDCMB.avi':
  Metadata:
  encoder         : Lavf52.23.1
  Duration: 00:00:29.00, start: 0.000000, bitrate: 124422 kb/s
  Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 720x576, 25 tbr, 25 tbn, 25 tbc
  At least one output file must be specified

我尝试在我的命令中添加“DISPLAY =:0”,并在运行php代码之前完成了“xhost +”,但没有任何东西可以帮助我。

感谢。

3 个答案:

答案 0 :(得分:1)

link解释了如何以及为什么。感谢回复人员。

这是获得所需输出的方法:

echo exec('/usr/local/bin/ffmpeg -i input.mp4 2>&1', $output);  
var_dump($output);

答案 1 :(得分:0)

您需要使用exec代替,并传递输出参数,如此

$op = array();
exec('ffmpeg -i /home/atish/Videos/T2V0040006_Angled_ride_720x576i_FLDCMB.avi', $op)

参考:http://php.net/manual/en/function.exec.php

答案 2 :(得分:0)

您是否尝试过exec()而不是system()?有关PHP和ffmpeg问题的讨论以及使用proc_open()的方法,请参阅here