2

tar.gzに含まれているいくつかのjpeg画像をx264mp4ムービーに効率的に変換したいと思います。

gzip -cd Monitor-1-xx.tar.gz|cpio -i --to-stdout|jpegtopnm|ppmtoy4m -F 4:1| \
>  x264 --crf 24 -o Monitor-1-xx.mp4 --stdin y4m -

ここでの問題は、cpioの後、1つのストリームに複数のjpgファイルがあり、jpegtopnmは最初のファイルのみを変換することです。

ストリームを分割する(または事前に分割する)関数を見つけたいのですが。次に、分割ごとにjpegtopnmを複数回実行したいと思います。これは、最初にディスクに解凍したときにxargsが行うことと多少似ています。ディスクへの書き込みは、私が避けようとしていることです。

mkdir tmpMonitor && cd tmpMonitor && tar -xf ../Monitor-1-xx.tar.gz
find . -iname "*.jpg"|xargs -n1 jpegtopnm|ppmtoy4m -F 4:1| \
    x264 --crf 24 -o ../xx.mp4 --stdin y4m -
cd .. && rm -rf tmpMonitor

助言がありますか?

4

1 に答える 1

0

tarここで役立つ可能性のあるオプションがいくつかあります(私は GNU を持っているtarので、実際にそうでない場合に備えて、そうしていると仮定してお詫び申し上げます):

  1. --wildcards- 次のようなグロブを使用して、tar から抽出するファイルを選択できます*.jpeg
  2. --to-command-抽出された各ファイルを指定されたコマンドにパイプします。

だから多分このようなものですか?

tar -xzf Monitor-1-xx.tar.gz --wildcards '*.jpeg' \
    --to-command="jpegtopnm|ppmtoy4m -F 4:1| x264 --crf 24 -o ../xx.mp4 --stdin y4m -"

私はよく知らないx264ので、テストされていないコードを考慮してください。私はこれを単純.txtな ファイルを使用してテスト.jpegsしましcat -njpegtopnm.各ファイルの呼び出しでは、右に別の出力ファイル名が必要ですか? - その場合、次のハックが機能する可能性があります。../xx.mp4jpegtopnm|ppmtoy4m -F 4:1| x264 --crf 24 -o ../xx.mp4 --stdin y4m --o

tar -xzf Monitor-1-xx.tar.gz --wildcards '*.jpeg' \
    --to-command="jpegtopnm|ppmtoy4m -F 4:1| x264 --crf 24 -o ../xx-`date +%H%M%S%N`.mp4 --stdin y4m -"
于 2012-12-10T09:53:04.467 に答える