やりたいのはこれ。こういう画面で、秒数を指定して「サムネイル作成」を押すと
例えばこういう動画リンク(単なる文字列でしかない)に
こんな感じでサムネイルが付く
動画は各画像から切り出す。
● 構成
chkPID.html(切り出す秒数を指定するform) ※ファイル名に違和感あるけど無視。成り行きだから。
↓ <form action>で呼び出す
↓ サムネイルbash の処理を呼び出す
bash が ffmpeg を駆使してサムネイル画像を取り出す
↓
PHPでリンクと画像を紐付けるhtmlを動的に作成
以下ソース。
chkPID.html(該当部分のみ)
makePIC.php
変数 $command に実行したいbash処理を入れて
exec("$command");
すれば終わる簡単な話なんだけど、いくつか注意。
① exec($command); が戻ってくるまで処理が止まる
ブロッキングというやつか?do_ffjpg();内で呼んでるこのexec()の終わりを待ってると、ブラウザが固まっちゃう。ので
exec("$command > /dev/null &");
してbash側でバックグラウンド実行にさせた。結果、PHPは固まらない。
② 既にサムネイル作成実行中なら処理しない
既に実行中のプロセスがあるかを chk_bash() 関数の中でチェックするようにした。実行中プロセスがあれば、配列$ret(urn) の中にそのPIDと実行ユーザー名を格納して戻す。$ret の中身が入ってたら「実行中あり」としてエラーにする。
無事動いた。まずはこれで良しとしよう。
PHPからbash呼んでPIDみて制御、するだけだから、他にも色々使えそうだ。