Webサーバーで実行されるPythonスクリプトがあります。main関数が呼び出され、それが返されると、数秒間スリープしてから再度呼び出されます。目的は、ユーザーが追加した新しいアップロードされたビデオをピックアップしてwebmに変換し、中央のフレームを画像やその他のファンキーなものとして引き出すことです。ffmpegへの外部呼び出しを使用しています。以下のコードクリップは、私がそれをどのように呼ぶかを示しています。
duration = output[durationIndex+10:durationIndex+18]
durationBits = duration.split(":")
lengthInSeconds = (int(durationBits[0])*60*60) + (int(durationBits[1])*60) + (int(durationBits[2]))
child = subprocess.Popen(["ffmpeg","-y","-i",sourceVideo,"-f","mjpeg","-vframes","1","-ss",str(lengthInSeconds/2),destination], shell=True, stderr=subprocess.PIPE)
output = ""
while True:
out = child.stderr.read(1)
if out == '' and child.poll() != None:
break
if out != '':
output += out
updateSQL = "update `videos_graduatevideo` set thumbnail = '" + str(destination) + "' where `original_video` = '" + sourceVideo + "'"
cursor.execute(updateSQL)
このスクリプトはWindowsマシンのATMで実行されていますが、開発が完了したら、おそらくUnixシステムにデプロイします。
問題は。実行を続けるには、このPythonスクリプトが必要です。ffmpegで問題が発生し、スクリプトがハングした場合、ユーザーがアップロードした動画は、Pythonスクリプトを突くまで、「保留中」の状態のままになります。私が持っている特定のmovファイルがffmpegを無期限にハングさせることを知っています。どういうわけか、プロセスが実行されている時間を確認し、実行時間が長すぎる場合はプロセスを強制終了することができますか?