web-dev-qa-db-ja.com

avconvに次々に画像をフィードする

私は最近、タイムラプスビデオを作成し、avconvを使用するためにたくさんの画像を撮りましたが、これは驚くほど簡単でした(適切なコマンドを調べた後)。

しかし今、私はそれをavconvに渡す前に、Imagemagickのconvert関数を通して各画像を送りたいと思います。

これは、編集した画像を保存し、これらをavconvの入力として使用することで実行できます。 ただしスペースをとるため、これは避けたいと思います。

何を私がしたいすることはこのようなものになるでしょう

  • avconvはバックグラウンドで実行されます
  • {いくつかの処理;画像を編集します。結果をavconvに送信します。 }すべての画像に対して繰り返します
  • 結果のビデオを保存するavconvを終了します

タイムラプスビデオを作成するときに、その場で画像を編集するにはどうすればよいですか?

2
rd7

正確にあなたが望むように行うことはできません、そしてあなたは近づくことができます、しかしそれは多くのいじりを必要とします。

また、その背後にある理論的根拠も理解しています。convert関数の出力を、後で削除できる一時ファイルとして扱いたいので、次の代わりに:

@!/bin/bash
convert -stretch 1280x720 -background none ~/Pictures/MyTimelapseImages/*.jpg ~/tmp/MyTempImages/*.jpg
avconv -i ~/tmp/MyTempImages/*.jpg ~/Videos/MyTimeLapsVideo.mkv

1つのCPUコアで画像変換プロセスを開始し、同時に別のCPUコアでビデオ変換プロセスを開始するそしてavconvによってすでに処理されたファイルを削除する(ディスクスペースを節約するため)

そして、いじくり回すのは後者です。cpulimit両方avconvおよびconvertそれらがほぼ完全同期していることを確認してから、処理されたファイルをクリーンアップするさらに別のプロセスを作成します。

ですから、そうです。100以上のサーバーファームで1,000ドルを節約したい大企業で働いているなら、それだけの価値があります。あなたのシステムでは?あなた自身のための? 1本の映画ですか?

あなたがこの映画を作っているものを持って、あなたに新しいより大きなハードドライブを買うことに貢献してください!

;-)

1
Fabby