-1

ユーザーがビデオをアップロードしたら、ハンドブレーキCLIでビデオをエンコードできるようにしたいと思います。これを実行する方法がわかりません。考えられるのは、phpのexec()コマンドを使用して、そこからプログラムを実行することだと思います。しかし、それはリスクを伴うのではないでしょうか?

または、これを行う他の方法はありますか?基本的に、ビデオをベースライン3エンコードでWeb再生可能な形式にエンコードして、すべてのデバイスでJWPlayerを介して再生できるようにする必要があります。

どうすればこれを達成できますか?

4

1 に答える 1

0

exec()実行していることに注意している限り、危険である必要はありません。

あるいは、より良い解決策は、生産者/消費者モデルを使用することです。動画がアップロードされるたびに、その動画への参照をキューに追加します。キューを監視するCLIスクリプトを用意し、キューに処理する必要のあるビデオがある限り、スクリプトがエンコードを行います。

データベースを使用することも、ディレクトリだけをキューとして使用することもできます。たとえば、すべての新しいビデオをディレクトリにアップロードしますunprocessed。コンシューマースクリプトは、そこからビデオを取得してエンコードし、と呼ばれるフォルダーに配置できますprocessed

これにより、同時に処理するビデオの数を制御できます(コンシューマーの数を変えることにより)。exec()ユーザーのアップロードではそれが許可されておらず、サーバーがひざまずく可能性があります。

編集:

複数のコンシューマーを使用する場合は、競合状態が発生する可能性があるため、キューとしてのディレクトリモデルを使用することはお勧めしません。

于 2012-10-28T08:58:17.373 に答える