Xubuntu 16.04でビデオの特定の時間から画像を抽出するにはどうすればよいですか?


8

コマンドラインオプションを探しています。

たとえば、私がビデオを持っていて、時間00:00:26にビデオからsample-video.mp4画像ファイルを生成したいsample-image.jpg場合、どのコマンドを指定すればよいですか?

また、コマンドのすべての引数の機能を詳しく説明できれば非常に役立ちます。


2
この質問とその回答によるとffmpeg、出力のファイル名をサポートしているようです。
IQV 2018年

回答:


8

使用できますmplayer(パッケージからmplayer、デフォルトではインストールされません):

mplayer -vo jpeg -ss 00:00:26 -frames 1 sample-video.mp4

ファイルが作成される00000001.jpgので、名前を変更する必要があります。私の知る限り、ファイル名を指定する方法はありません。

-vo jpegJPEG出力が必要な-ss 00:00:26こと、指定された位置にシークすること、-frames 11フレームを処理して終了することを意味します。


複数のフレームを取得する利点は何ですか?それらはコピーですか、それとも各フレームが1秒ずつ異なりますか?
Sonevol

より多くのフレームから作成された画像は、ほんの一瞬だけ異なります。正確な値はビデオによって異なります。
Florian Diesch、

5
まさに夜十二時00分26秒でフレームを@Sonevolではないかもしれない、正確に何をしたいです。0:00:25から0:00:27までの50フレーム(または0:00:26マークの周りの3〜4フレーム)を取得し、それらを参照して最適なフレームを選択することができます。
xDaizu

1
@FlorianDiesch次のようなpngに出力することもできます:-vo png:z=9-z設定で圧縮レベルを指定します。jpegの場合、品質設定を追加することもできます:-vo jpeg:quality=100。しかし、あなたの答えは素晴らしいです:)
andrew.46

13

あなたはffmpegを使うことができます

ffmpeg -loglevel quiet -ss 26 -i sample-video.mp4  -t 1 -f image2 anyfilename.jpeg
  • -loglevelは、ffmpegが非常におしゃべりであるため、ログ出力をクワイエットに設定します
  • -ssはシーク(秒単位、つまりスナップショットを取得する場所)
  • -i入力ビデオファイル
  • -tスナップショットのタイムフレーム(秒単位)
  • -fファイルタイプ

jpeg出力の制御品質-q:v <linear integer 1-10>や解像度 などのオプションをいじることもできます-s 480x300

ここにいくつかのアイデア


VLCメソッド

cvlc sample-video.mp4 --start-time=26 --run-time=1 --rate=1 --video-filter=scene --vout=dummy --aout=dummy  --scene-ratio=24 --scene-prefix=sample-image --scene-replace vlc://quit
  • cvlc-コマンドラインであり、ウィンドウが開かないようにするためです。また、これはX11がなくても実行できることを意味します。

  • --start-time = 26-秒単位のスナップショットの正確な位置です

  • --run-time = 1-ビデオが秒単位で「再生」される時間。この1秒のスクリーンショットを作成するために1秒間再生します
  • --rate = 1スクリーンショットを撮るタイミング。これは基本的に「1秒ごと」を意味し、ファイルが長い場合、60秒ごとまたは5分ごとにスクリーンショットを撮るのに役立ちます。
  • --video-filter = sceneスクリーンショットを撮りたいことをVLCに伝えます
  • --vout = dummy X11のビデオの出力はありません。必要ありません。
  • --aout = dummyオーディオの出力はありません。必要ありません。
  • --scene-ratio = 24 は、毎秒約24フレームがあることをVLCに通知します
  • --scene-prefix = sample-image スクリーンショットのファイル名
  • --scene-replace スクリーンショットのように呼び出されたファイルをsample-image.png現在のスクリーンショットに置き換えます。これを省略すると、VLCがスクリーンショットの番号付けを開始します
  • vlc:// quit終了し たらvlcを終了します

ここに完全なドキュメント


おしゃべりってどういう意味?そして、26秒のスナップショットが必要です。では、なぜ-tでタイムフレームを指定するのか。ビデオではなく画像を撮っています。
Sonevol

3
"Chatty"は、ffmpegが、現在のバージョン、セットアップタイプ、入力ビデオファイルに関する情報など、このコマンドを使用して40行を超えるログ出力を出力するためです。目的のために、おそらく「-t 1」を省略できます。デフォルトは1秒またはその一部であるようですが、スクリーンショットにはそれで問題ありません。素晴らしい違いは、出力ファイル名や微調整の品質/解像度などを定義できることです
Robert Riedl
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.