Linux: cvlcで動画から画像を作成する


Table of Contents

1 VLCのインストール

Ubuntu 16.04の場合は以下の通りです。

$ sudo apt install -y vlc

2 cvlc

CUI操作向けのcvlcコマンドを用います。以下は動画の先頭から末尾まで64フレーム毎に画像を作成します。

$ mkdir png$ cvlc a.mp4 –rate=1 –start-time=0 –scene-ratio=64 –scene-prefix=b_ –scene-path=png –scene-format=png –video-filter=scene –vout=dummy –no-audio vlc://quit

  • –rateは再生スピードです。この値を小さくすることで動画のデコードが正確になります。大きい場合はイメージにブロックノイズが発生する場合があります。ただし、小さくすることで再生速度は落ちます。
  • –start-timeは開始時刻(秒数)です。–stop-timeは停止時刻(秒数)です。開始時刻と停止時刻の差分である–run-timeもあります。–stop-timeを指定しない場合は動画末尾まで実行されます。
  • –scene-ratioは画像を作成するフレームのインターバルです。
  • –scene-prefixはイメージ名のプレフィックスです。
  • –scene-pathはイメージを保存するディレクトリです。

0001_cvlc-create-image.png

2.1 特定時刻で一枚だけ画像を作る

–scene-ratioを1秒間のフレーム数より大きい値にし(ここでは最大値の–scene-ratio=2147483647にしています)、–start-timeと–stop-timeの差を1秒にします。ここでは–run-timeを使用しています。

ただし、Ubuntu 16.04のVLC 2.2.2だと一枚目の画像は–start-timeが反映されない不具合があるようで(常に1フレーム目の画像になる)、1秒間で2枚の画像が作成される値に設定し(1秒間のフレーム数より小さく、1秒間のフレーム数の半分以上)、1枚目を破棄する必要があります。VLC 3.0.0では問題ありません。

$ cvlc a.mp4 –scene-ratio=2147483647 –start-time=100 –run-time=1 –scene-prefix=oneshot_ –scene-path=. –scene-format=png –rate=1 –video-filter=scene –vout=dummy –no-audio vlc://quit

Android | Linux | SDL - Narrow Escape