たくさんのビデオを iPad で再生できるように変換しようとしています。私が理解していることから、スクリプトとは別のプロセスでバイナリを起動する subprocess モジュールを使用しています。2 番目のプロセスが開始する前に最初のプロセスを終了する必要がある 2 パス エンコーディングの処理方法がわかりません。
これが私のコードです:
def convert(filename):
extension = filename[-3:]
destination_filename_720 = filename[-4:] + '-a720p' + '.mp4'
destination_filename_1080 = filename[-4:] + '-a1080p' + '.mp4'
p = subprocess.Popen(['ffmpeg','-i', str(filename) ,
'-acodec' , 'aac' ,
'-ab' , '160k' ,
'-ac' , '2' ,
'-vcodec' , 'libx264' ,
'-strict' , '-2' ,
'-vpre' , 'ipod640' ,
'-threads' , '8' ,
'-s' , '1280x720' ,
'-b:v' , '2000k' ,
'-pass' , '1' ,
'-y' ,
destination_filename_720])
p = subprocess.Popen(['ffmpeg','-i', str(filename) ,
'-acodec' , 'aac' ,
'-ab' , '160k' ,
'-ac' , '2' ,
'-vcodec' , 'libx264' ,
'-strict' , '-2' ,
'-vpre' , 'ipod640' ,
'-threads' , '8' ,
'-s' , '1280x720' ,
'-b:v' , '2000k' ,
'-pass' , '2' ,
'-y' ,
destination_filename_720])
convert() 関数が呼び出されるとすぐに、両方のプロセスがすぐに生成されます。
最初のプロセスがまだ完了していないため、2 番目のプロセスは失敗します。
どうすればこれを修正できますか? または、より良い方法はありますか?