web-dev-qa-db-ja.com

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

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

たとえば、ビデオsample-video.mp4があり、時間00:00:26にビデオから画像ファイルsample-image.jpgを生成したい場合、どのコマンドを与える必要がありますか?

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

8
Sonevol

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

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

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

-vo jpegはJPEG出力が必要であることを意味し、-ss 00:00:26は指定された位置をシークし、-frames 1は1つのフレームを処理してから終了することを意味します。

8
Florian Diesch

ffmpegを使用できます

ffmpeg -loglevel quiet -ss 26 -i sample-video.mp4  -t 1 -f image2 anyfilename.jpeg
  • -loglevelffmpegは非常におしゃべりなので、ログ出力をquietに設定します
  • -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秒間再生して、この秒のスクリーンショットを作成します
  • -rate = 1スクリーンショットを撮るタイミング。これは基本的に「毎秒」を意味し、ファイルが長い場合は60秒ごとまたは5分ごとにスクリーンショットを撮るのに便利です。
  • -video-filter = sceneVLCにスクリーンショットを撮りたいと伝える
  • -vout = dummyX11のビデオの出力はありません、必要ありません
  • -aout = dummyオーディオの出力はありません、必要ありません
  • -scene-ratio = 24VLCに毎秒約24フレームがあることを伝えます
  • -scene-prefix = sample-imageスクリーンショットのファイル名
  • -scene-replaceスクリーンショットsample-image.pngのように呼び出されるファイルを現在のスクリーンショットに置き換えます。これを省略すると、VLCはスクリーンショットの番号付けを開始します
  • vlc:// quit終了したらvlcを終了します

完全なドキュメント こちら

12
Robert Riedl