私はffmpegを使って特別な形式でビデオをエンコードするためのbashスクリプトを書いています。生成された画像を保存するためにエンコードが完了したら画像をアップロードしたいと思います。したがって、私のスクリプトで並列処理を使用したいと思います。
簡単な例:
#!/bin/bash
uploading() {
upload $1
}
encoding() {
ffmpeg video video_encoded
uploading $video_encoded
}
エンコーディングがアップロード機能よりも速い場合は、新しいバックグラウンドプロセスが作成されます。これは私が望むものではありません。必要な動作は、アップロードプロセスがまだ生きている場合、エンコード機能が必要なパラメータ(ビデオパスなど)をある種のキューに保存し、最後のアップロード機能がキューが空であることを確認してプッシュすることです。ポッププレスが必要です。
bashでそのようなことは可能ですか?
まず、ありがとうございます!
答え1
2つのスクリプトがあります。 1つはビデオエンコーディング管理用、もう1つはアップロード用です。エンコードが完了したら、ファイル付きのスプールディレクトリを使用します(ビデオ自体のみが必要な場合はシンボリックリンクを使用し、追加情報を保存する必要がある場合はテキストファイルを使用します)。
アップロードスクリプトは、n秒ごとにアップロードする新しいファイルがあるかどうかを確認する必要があります。アップロードが正常に完了すると、アップロードスクリプトはスプールディレクトリからファイルを削除します。
メイン/エンコードスクリプトからアップロードスクリプトを生成します。すべてのファイルが正常にアップロードされたら、アンインストーラスクリプトを安全に終了できます(スプールディレクトリは空です。空でないディレクトリは、アップロードがまだ完了/成功していないことを意味します)。