2011-02-25 6 views
4

FFMpegを使用してビデオを秘匿し、はコマンドラインから問題なく動作しています。私は、次のコマンドを使用しています:FFMpegはコマンドラインで動作しますが、PHPではexec()を使用していません。

ffmpeg -i input.mpg -vcodec libx264 -b 819200 -s 100x100 -g 15 -bf 3 -b_strategy 1 -coder 1 -qmin 10 -qmax 51 -sc_threshold 40 -flags +loop -cmp +chroma -me_range 16 -me_method hex -subq 5 -i_qfactor 0.71 -qcomp 0.6 -qdiff 4 -directpred 1 -flags2 +fastpskip -dts_delta_threshold 1 -acodec libfaac -ab 48000 output.m4v 

しかし、私はPHP execを使用してコマンドを実行すると()、出力映像が正しくエンコードされていないと歪んだとを切り取られます。 PHPで次のコードを使用しています:

$output = exec($cmd . ' 2>&1', $output, $return); 

$出力は「0」成功コードを返します。

いずれかの提案がありますか?

ありがとうございます。

答えて

7

これは珍しいことです。複数のffmpegバイナリがインストールされている可能性があり、PHP/Apacheユーザから呼び出されたバイナリは、コマンドラインからユーザとして呼び出されたものと同じではありません。

exec()内のffmpegバイナリ(/ usr/bin/ffmpegなど)へのフルパスを指定してみてください。

+0

あなたは伝説です! Upvote。どうもありがとうございます!私は知っている限り私は2つのバージョンを持っていないが、絶対パスを入れてすぐにそれをソート。ありがとうございました。 – Kit

+0

問題はありません。うまくいけばうれしいです! – glomad

+0

私はffmpegをインストールしたばかりで、おそらくApacheを再起動すると思われますが、これはまったく同じです! (実行時間が問題にならないように、ポスターフレームをつかむだけです)。 – Ecropolis

1

いくつかのコマンドラインオプションが紛失/変更されているようです。私は2パートのプロセスにこれを分割しようとする:

  1. は(PHPから)オンザフライシェルスクリプトを記述し、すべての適切なコマンド引数を持っていること(それが実行可能に)
  2. シェルスクリプトを実行します(PHPより)
+0

これを行う前に、exec()をpassthru()に置き換えても問題が解決されないことを確認してください。これが成功すれば、これはより速く/簡単な修正となるでしょう。 – Teddy

+0

返信いただきありがとうございます。シェルスクリプトをどのように書きますか?私はこれにあまり慣れていない。クリス – Kit

0

私はおそらくしようとするだろう:

1)変更 '2> & 1' '2> '

にも、トランスコーディングはしばらく時間がかかることができます。あなたはトランスコードが完了するのに十分長い間あなたが待っていると確信していますか?

関連する問題