web-dev-qa-db-ja.com

Linux:ビデオからフレームを抽出する方法は? (無損失の)

VLCMPlayerffmpegなどのプログラムの使用に関するいくつかの回答と記事を読みましたが、私が見たどの方法も「無損失」ではありません。 」フレームをすべてキャプチャするわけではありません。ビデオから各フレームを画像として抽出したいので(100%品質、詳細を失わないようにしたい)、理論的にはそれらの画像を取得して、ビデオファイルを再作成し、オリジナル(もちろんオーディオの欠如を除く)。

フレームを取得する開始時刻と終了時刻を指定できる場合はボーナスポイントになるので、事前にビデオファイルをトリミングする必要はありません。

14
Trae

フレームは、可逆画像圧縮形式であるPNGとして抽出できます。たとえば、5mnマークから10mnマークまでのフレームを抽出するには:

ffmpeg -ss 05:00 -i <input> -t 05:00 filename%05d.png
13
Ely

ムービーファイルからすべてのフレームを抽出できるツールがいくつかあります。

avconv
_avconv -i file.avi -f image2 Out%00d.jpg_

ffmpeg
_ffmpeg -i input.file thumb%04d.png -hide_banner_

これはBMPをエクスポートすることもでき、PNGまたはJPGよりも処理時間が大幅に短縮されます。

FFMPEG抽出プロセスを自動化しようとする mov2frame.sh と呼ばれるbashスクリプトもあります。

Mplayer
_mplayer -ao null -vo png input.file_

または別のオプション:

_mplayer -nosound -vo png:z=9 my_file.mp4_

[〜#〜] vlc [〜#〜]このメディアプレーヤーはフィルターを使用して画像セットをエクスポートできるようですが、唯一の使用方法またはあなたはポータブル版を持っています。

  1. フレームを保存するフォルダーを作成し、そのパスをコピーします。 Mac OSX/Linuxユーザーの場合、これは絶対パス(〜なし)でなければなりません。

  2. VLCの[ツール]-[設定]をクリックします。

  3. [設定を表示]で[すべて]をクリックします。

  4. 「ビデオ」で「フィルター」を選択します。 「シーンビデオフィルター」にチェックを入れます。

  5. 「フィルター」を展開し、「シーンフィルター」を選択します。

  6. 以前のパスを「ディレクトリパスプレフィックス」に貼り付けます。

  7. 「記録率」ボックスでエンコードするフレームの割合を選択します。 1/12、12ごとの出力、1/1はすべてをエクスポートします

  8. 「保存」をクリックします。

  9. [メディア]/[ビデオを開く]をクリックして、ビデオを見つけます。根気よく全体を遊ばせましょう。

  10. ツール/設定をクリックします。 [設定を表示]で[すべて]をクリックします。 「ビデオ」の下で、「フィルター」を選択します。 「シーンビデオフィルター」のチェックを外します。 「保存」をクリックします。これは、次回ビデオを再生するときにVLCがサムネイルを生成しないようにするためです。リンク

また、最初のプログラム実行時の管理者権限に問題がある可能性もあります。

Sudo vlc [Sudo] password for mint16: VLC is not supposed to be run as root. Sorry. If you need to use real-time priorities and/or privileged TCP ports you can use vlc-wrapper (make sure it is Set-UID root and cannot be run by non-trusted users first).

VLCは、PNGの代わりにBMP

5
chronometric