1

ビデオからサムネイルを作成する方法を知る必要があるビデオ放送サイトを作成しています。助けてください。提案や参考文献は高く評価されます

4

4 に答える 4

3

ビデオの途中からフレームを取得するためのスニペットを次に示します。これは私が横たわっている古いコードなので、単純化できると確信しています。インストールの場所と一致するように、1 行目の ffmpeg パスを必ず調整してください。

$output = shell_exec("/usr/local/bin/ffmpeg -i {$path}");
preg_match('/Duration: ([0-9]{2}):([0-9]{2}):([^ ,])+/', $output, $matches);
$time = str_replace("Duration: ", "", $matches[0]);
$time_breakdown = explode(":", $time);
$total_seconds = round(($time_breakdown[0]*60*60) + ($time_breakdown[1]*60) + $time_breakdown[2]);
shell_exec("/usr/local/bin/ffmpeg -y  -i {$input_filepath} -f mjpeg -vframes 1 -ss " . ($total_seconds / 2) . " -s {$w}x{$h} {$output_filepath}";
于 2009-09-24T05:08:41.270 に答える
1

私はこの質問が古いことを知っています。しかし、私が同様の解決策を探していたときに私はそれに出くわしました。これが私の発見です。それが他の誰かに役立つことを願っています。

于 2012-04-07T16:14:01.213 に答える
1

使用できますffmpeg

サーバーにインストールしたら、コマンド ラインを作成して呼び出すことにより、PHP で使用できますexec

例えば:

exec('ffmpeg -i mymovie.mov -vcodec mjpeg -vframes 1 -an -f rawvideo -s 64x64 foo.jpg');
于 2009-09-24T05:02:58.890 に答える
0

私はffmpegを使用し、exec()でタスクを開始し、コマンドにアンパサンドを追加して、phpスクリプトを続行できるようにしました。ffmpeg を最初に終了させたい場合は、アンパサンドがありません。

FAQ から: 「ムービーを単一の画像にエンコードするにはどうすればよいですか?」http://ffmpeg.org/faq.html#SEC15

ffmpeg -i movie.mpg movie%d.jpg

これにより、多くの画像が生成されます。

ドキュメントから:「ビデオとオーディオのファイル形式の変換」http://ffmpeg.org/ffmpeg-doc.html#SEC5

ffmpeg -i foo.avi -r 1 -s WxH -f image2 -vframes 1 foo.jpeg

W & H を width/height に置き換え ( http://ffmpeg.org/ffmpeg-doc.html#SEC9を参照)、vframes を必要なフレーム数に置き換え、複数の画像を実行している場合はシーケンス番号のファイル名に %d を追加します. ビデオの特定のポイントをつかむには、-ss を使用します ( http://ffmpeg.org/ffmpeg-doc.html#SEC8を参照) 。

于 2009-09-24T05:13:29.373 に答える