MEncoderを使用して現在のディレクトリにあるすべてのpngファイルを日付の変更順にaviファイルにエンコードする方法は?

MEncoderを使用して現在のディレクトリにあるすべてのpngファイルを日付の変更順にaviファイルにエンコードする方法は?

したがって、MENCoderはすべてのpngファイルを最も早い修正日から最後の修正日までaviファイルにエンコードし、各フレームの間隔を3秒に設定したいと思います。

答え1

mf://構文はファイルリストを渡すことができることを意味するので、この方法で日付順に並べられたファイルリストを渡すことができます。

ファイルをソートするには、名前が十分に単純で、すべてディレクトリにある場合は、ls -t次のようになりますls -t *.png > file-list

その後、mencoder mf://@file-list -mf fps=1/3:type=png …これを行う必要があります(mplayer代わりにmencoderを使用すると簡単に確認できます)。

より複雑なコンテンツ(サブディレクトリなど)を処理する必要がある場合は、findとperlを一緒に使用できます。私はmencoderこれが処理できるかどうか疑わしいので、ファイル名に改行文字が入る可能性を無視しました。

find -type f -name '*.png' | perl -E 'chomp(@a = <>); @a = sort { -M $a <=> -M $b } @a; $,="\n"; say @a'

これは特に効率的ではありませんが(必要以上に呼び出されますstat)、ファイルがあまりない限り十分です。何千ものファイルが必要な場合は、Orcish Maneuver、Schwartzian変換などを使用して効率を向上させることができます。

関連情報