web-dev-qa-db-ja.com

1番目のフレームを抽出し、ffmpegでイメージとして復元する方法は?

誰かがトリックを知っていますか?

そして、ffmpegのインストール方法は? yum install mpegはこれのみを返します。

======================================================================================== Matched: mpeg ========================================================================================
libiec61883.i386 : Streaming library for IEEE1394
libiec61883.x86_64 : Streaming library for IEEE1394
qffmpeg-devel.i386 : Development package for qffmpeg
qffmpeg-devel.x86_64 : Development package for qffmpeg
qffmpeg-libs.i386 : Libraries for qffmpeg
qffmpeg-libs.x86_64 : Libraries for qffmpeg
36
lex

それはマンページにあります:

 *ビデオから画像を抽出したり、多数のビデオからビデオを作成したりできます
画像:
 
ビデオから画像を抽出する場合:
 
 ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg 
 
これにより、ビデオから毎秒1ビデオフレームが抽出され、 ____。]は、foo-001.jpeg、foo-002.jpegなどの名前のファイルに出力します。画像
は、新しいWxH値に合わせて再スケーリングされます。
 
限られた数のフレームのみを抽出する場合は、上記のコマンドを
と-vframesまたは-tオプションと組み合わせて使用​​するか、
と-ssを組み合わせて使用​​して、特定のポイントから抽出を開始できます。時間内。

もちろん、最初にインストールする必要があります。私はDebianを使用していて、yumを使用しません。

[他の質問の更新]


i=1
for avi in *.avi; do
 ffmpeg -i $avi -vframes 1 -f image2 /tmp/$i.jpg; i=$((i+1))
done

テストされ、動作します。

[さらに別の質問のために更新...]


for flv in *.flv; do
 ffmpeg -i $flv -vframes 1 -f image2 ${flv%%.flv}.jpg
done
57
jcomeau_ictx

私は、ビデオから絶対に最初のフレームを取得するのに最適なさまざまな回答からこのコマンドラインを考え出しました。これを使用して、ビデオのサムネイルスクリーンショットを保存します。

_ffmpeg -i inputfile.mkv -vf "select=eq(n\,0)" -q:v 3 output_image.jpg
_

説明:

select filter-vf "select=eq(n\,0)"は、フレーム#0のみを選択します。

_-q:v_を使用すると、出力JPEGの品質を1〜31の範囲で設定できます。数値を低くすると、品質が高くなります。 2〜5は問題なく動作し、3を使用します。

:これにより、ビデオと同じサイズの画像が得られます。サムネイルを取得するには、次のように、スケールフィルターを使用して、必要な幅に合わせてサムネイルを取得できます。

_ffmpeg -i inputfile.mkv -vf "select=eq(n\,0)" -vf scale=320:-2 -q:v 3 output_image.jpg
_

上記のコマンドは、320の幅matchにスケーリングされるサムネイルjpegを提供し、高さはアスペクト比に一致するように計算されます。

38
Dhiraj Gupta

私にとってうまくいく簡単な解決策は

ffmpeg -i <input> -vframes 1 <output>.jpeg

「[swscaler @ 0x111652000]非推奨のピクセル形式が使用されています。範囲が正しく設定されていることを確認してください」というエラーが表示されることに注意してください。ただし、少し読みます(たとえば、 https://stackoverflow.com/a/43038480を参照)/1241736 )無視しても問題ありません。

6
henry