Php 使用FFMPEG转换为FLV的视频大小为0

Php 使用FFMPEG转换为FLV的视频大小为0,php,ffmpeg,Php,Ffmpeg,我试图在服务器上使用FFMPEG将avi文件转换为flv格式,但这给了我一些问题。转换时,文件转换为flv格式,但没有数据(0 kb大小的文件)。尝试调试代码,但未能成功。FFMPEG安装在CentOS的path/usr/bin/FFMPEG中,我使用以下命令进行转换: $srcFile = "/home/mydomain/public_html/demo/test/sample.avi"; $destFile = "/home/mydomain/public_html/demo/test/sa

我试图在服务器上使用FFMPEG将avi文件转换为flv格式,但这给了我一些问题。转换时,文件转换为flv格式,但没有数据(0 kb大小的文件)。尝试调试代码,但未能成功。FFMPEG安装在CentOS的path/usr/bin/FFMPEG中,我使用以下命令进行转换:

$srcFile = "/home/mydomain/public_html/demo/test/sample.avi"; $destFile = "/home/mydomain/public_html/demo/test/sample_again.flv"; $ffmpegPath = "/usr/bin/ffmpeg"; $flvtool2Path = "/usr/local/bin/flvtool2"; $command = $ffmpegPath . " -y -i " . $srcFile . " -ar 32000 -ab 32000 -f flv -s 320x240 ". $destFile . " | " . $flvtool2Path . " -U stdin " . $destFile; exec($command, $output); print_r($output); $srcFile=“/home/mydomain/public_html/demo/test/sample.avi”; $destFile=“/home/mydomain/public_html/demo/test/sample_reach.flv”; $ffmpegPath=“/usr/bin/ffmpeg”; $flvtool2Path=“/usr/local/bin/flvtool2”; $command=$ffmpegPath。“-y-i”$srcFile。“-ar 32000-ab 32000-f flv-s 320x240”。 $destFile。" | " . $flvtool2Path。“-U stdin”$删除文件; exec($command,$output); 打印(输出); 我试着做:

exec("which ffmpeg"); 执行董事(“哪个ffmpeg”); 它给了我路径/usr/bin/ffmpeg,但在执行代码时出现以下错误:

Array ( [0] => ERROR: undefined method `timestamp' for nil:NilClass [1] => ERROR: /usr/local/cpffmpeg/lib/ruby/site_ruby/1.8/flv/stream.rb:285:in `lasttimestamp' [2] => ERROR: /usr/local/cpffmpeg/lib/ruby/site_ruby/1.8/flv/stream.rb:274:in `duration' [3] => ERROR: /usr/local/cpffmpeg/lib/ruby/site_ruby/1.8/flvtool2/base.rb:181:in `add_meta_data_tag' [4] => ERROR: /usr/local/cpffmpeg/lib/ruby/site_ruby/1.8/flvtool2/base.rb:137:in `update' [5] => ERROR: /usr/local/cpffmpeg/lib/ruby/site_ruby/1.8/flvtool2/base.rb:47:in `send' [6] => ERROR: /usr/local/cpffmpeg/lib/ruby/site_ruby/1.8/flvtool2/base.rb:47:in `execute!' [7] => ERROR: /usr/local/cpffmpeg/lib/ruby/site_ruby/1.8/flvtool2/base.rb:46:in `each' [8] => ERROR: /usr/local/cpffmpeg/lib/ruby/site_ruby/1.8/flvtool2/base.rb:46:in `execute!' [9] => ERROR: /usr/local/cpffmpeg/lib/ruby/site_ruby/1.8/flvtool2/base.rb:206:in `process_files' [10] => ERROR: /usr/local/cpffmpeg/lib/ruby/site_ruby/1.8/flvtool2/base.rb:44:in `execute!' [11] => ERROR: /usr/local/cpffmpeg/lib/ruby/site_ruby/1.8/flvtool2.rb:168:in `execute!' [12] => ERROR: /usr/local/cpffmpeg/lib/ruby/site_ruby/1.8/flvtool2.rb:228 [13] => ERROR: /usr/local/bin/flvtool2:2:in `require' [14] => ERROR: /usr/local/bin/flvtool2:2 ) 数组( [0]=>错误:未定义nil:NilClass的方法“timestamp” [1] =>错误:/usr/local/cpffmpeg/lib/ruby/site\u ruby/1.8/flv/stream.rb:285:在'lasttimestamp'中 [2] =>错误:/usr/local/cpffmpeg/lib/ruby/site\u ruby/1.8/flv/stream.rb:274:in'duration' [3] =>错误:/usr/local/cpffmpeg/lib/ruby/site\u ruby/1.8/flvtool2/base.rb:181:在“添加元数据”标记中 [4] =>错误:/usr/local/cpffmpeg/lib/ruby/site\u ruby/1.8/flvtool2/base.rb:137:在“更新”中 [5] =>错误:/usr/local/cpffmpeg/lib/ruby/site\u ruby/1.8/flvtool2/base.rb:47:在“发送”中 [6] =>错误:/usr/local/cpffmpeg/lib/ruby/site_ruby/1.8/flvtool2/base.rb:47:in'execute!' [7] =>错误:/usr/local/cpffmpeg/lib/ruby/site_ruby/1.8/flvtool2/base.rb:46:在'each'中 [8] =>错误:/usr/local/cpffmpeg/lib/ruby/site_ruby/1.8/flvtool2/base.rb:46:in'execute!' [9] =>错误:/usr/local/cpffmpeg/lib/ruby/site\u ruby/1.8/flvtool2/base.rb:206:在“进程文件”中 [10] =>错误:/usr/local/cpffmpeg/lib/ruby/site\u ruby/1.8/flvtool2/base.rb:44:in'execute!' [11] =>错误:/usr/local/cpffmpeg/lib/ruby/site\u ruby/1.8/flvtool2.rb:168:in'execute!' [12] =>错误:/usr/local/cpffmpeg/lib/ruby/site\u ruby/1.8/flvtool2.rb:228 [13] =>错误:/usr/local/bin/flvtool2:2:在'require'中 [14] =>错误:/usr/local/bin/flvtool2:2 )
有什么问题吗。这是Flvtool2的问题吗?如果是,那是什么问题。请提出一些建议

您可以使用var_dump($command)然后在shell中运行该命令(作为运行apache的用户)吗?

看起来没有任何东西实际通过管道。ffmpeg命令行指定了一个实际的输出文件,而不是
-
(即STDOUT),因此ffmpeg将视频写入一个文件,然后flvtool尝试从没有视频的STDIN读取。

该命令是否直接从命令行运行否,我正在从browseranyone执行php文件任何解决方案,它在allI不起作用,这意味着您是否尝试过直接从命令行从测试它,以便确保命令没有问题