1. ホーム
  2. video

[解決済み] ffmpegで動画のスクリーンショットを1枚ずつ任意の時間に抽出する方法を教えてください。

2022-04-27 04:17:11

質問

ffmpegを使って動画から複数のスクリーンショットを抽出する方法を紹介したチュートリアルなどがたくさんあります。rを設定し、一定量から開始することもできます。

でも、例えば01:23:45に1枚のスクリーンショットが欲しいだけなんです。あるいは86%で1枚のスクリーンショットが欲しいのです。

ですべて可能です。 ffmpegthumbnailer が、これも依存したくない依存先です。ffmpegでできるようにしたい。

どのように解決するのですか?

を使用します。 -ss オプションを使用します。

ffmpeg -ss 01:23:45 -i input -frames:v 1 -q:v 2 output.jpg

  • JPEG出力の場合は -q:v を使用して出力品質を制御します。フルレンジは1-31のリニアスケールで、値が低いほど高品質となります。2-5が試してみるには良い範囲です。

  • は、その 選択フィルタ は、特定のフレームタイプのみを選択する、あるいは100分の1を選択するなど、より複雑なニーズに対する代替方法を提供します。

  • 配置 -ss を入力の前に置くと、より速くなります。参照 FFmpeg Wiki。シーク と、この抜粋は ffmpeg cliツールのドキュメント :

-ss 位置(入出力)

入力オプションとして使用される場合 (前 -i ) は、この入力ファイル内の位置をシークします。ほとんどのフォーマットでは、シークすることができないことに注意してください。 のように、正確に ffmpeg の前にある最も近いシークポイントにシークします。 の位置に移動します。トランスコードするときと -accurate_seek が有効になっている場合(以下 デフォルトでは、シークポイントと位置の間にある余分なセグメントは はデコードされて破棄される。ストリームコピー時や -noaccurate_seek が使用されている場合は、保存されます。

出力オプションとして(出力ファイル名の前に)使用すると、タイムスタンプが位置に達するまで、入力をデコードするが破棄される。

の位置は、秒単位または hh:mm:ss[.xxx] の形で表示されます。