2011-01-25 5 views
1

ffmpegでビデオをエンコードしたら、PHPでチェックするために特定のコードが必要です。私は単純な真偽チェックが必要です。エンコーディングが完了した場合はtrueを返し、完了していない場合はfalseを返します。また、言語はPHPであり、ffmpeg-phpがインストールされています。ffmpegがPHPでビデオをエンコードしているかどうかを確認するには?

詳細情報:私はLinuxを使用しています。

コードは、たぶん、あなたは私たちにあなたがエンコーディングをオフに開始されているかの手がかりを与えることができる

convertToFlv($input, $output); 

function convertToFlv($input, $output) { 

echo "Converting $input to $output"; 

$command = "ffmpeg -y -i $input -acodec libfaac -ar 44100 -ab 96k -vcodec libx264 -level 41 -crf 20 -bufsize 20000k -maxrate 25000k -g 250 -r 20 -s 640x480 -coder 1 -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -flags2 +brdo+dct8x8+bpyramid -me umh -subq 7 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -rc_eq 'blurCplx^(1-qComp)' -bf 16 -b_strategy 1 -bidir_refine 1 -refs 6 -deblockalpha 0 -deblockbeta 0 $output"; 

shell_exec($command); 

} 
+0

これを確認してください:https://github.com/alixaxel/phunction/blob/b9afe8409c9e0b9d2ccb1696ef07469d70bd1e05/_.php#L1076 –

答えて

1

下回っているのですか?あなたはどのOSを実行していますか?

Unix/POSIX/Linuxシステムで正しい方法を実行しているとします。つまり、別のプロセスグループに新しいプロセスを作成して戻り値を直接読み取ることができないとしたら、どうしてですか?その後、スクリプトが終了したときに見て、それが正常に実行されたかどうかをすることができます...

#!/bin/bash 

OUTDIR=/var/www/html/video 

/usr/local/bin/ffmpeg -s sqcif -i $1 ${OUTDIR}/${2}.mpeg` 

RETURNED=$? 

echo ${RETURNED} >${OUTDIR}/${2}.completion 

:のようなもの - あなただけのシンプルなshスクリプトでffmpegのバイナリを包みます。

+0

PHPでやる方法はありますか? – Kevin

3

php exec()のffmpegの後に別の行を追加して、コマンドラインでPHPページを実行することもできます。

ffmpegの行を「;」で終了してください。 「php」と入力して実行するPHPスクリプトの絶対パスを入力します。あなたが変換されるのを待っている動画のIDでGET変数を追加することができます。

$cmd = "ffmpeg -i[SOURCE FILE] [OUTPUT FILE]; php /public_html/etc/ffmpegComplete.php?videoID=101"; 

exec($cmd); 
+1

実行される新しいPHPページは、CGIまたはApache2の設定ではなく、CLI設定で実行されることに注意してください。 –

+0

良いトリック、良いアイデア! –

+0

この方法で出力をPHPスクリプトにパイプすることは可能でしょうか? – Ben

1

簡単な答えはプロセスがまだpsの出力をフィルタリングしたり追跡することのいずれかを意味し、実行されているかどうかを確認することですffmpegプロセスのPIDを確認し、pcntl_waitpidでチェックしてください。

関連する問題