run_video_understanding_with_google.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. """
  2. @author: luojunhui
  3. """
  4. import datetime
  5. import multiprocessing
  6. from applications import log
  7. from coldStartTasks.ai_pipeline import ExtractVideoBestFrame
  8. PROCESS_EXIT_TIMEOUT = 10 * 60
  9. def start_task():
  10. task = ExtractVideoBestFrame()
  11. # 查询有多少任务正在处理中
  12. processing_tasks = task.get_processing_task_pool_size()
  13. if processing_tasks:
  14. print(
  15. f"{datetime.datetime.now()} 当前有 {processing_tasks} 个任务正在等待 google 处理..."
  16. )
  17. task.extract_best_frame_with_gemini_ai()
  18. else:
  19. print(f"{datetime.datetime.now()} 没有任务正在处理中...")
  20. # upload video to google ai
  21. task.upload_video_to_gemini_ai()
  22. log(
  23. task="video_understanding_with_google",
  24. function="main",
  25. message="upload_video_to_google_ai_task",
  26. )
  27. task.extract_best_frame_with_gemini_ai()
  28. # 调用接口,使用 ffmpeg 获取视频的最佳帧作为封面
  29. task.get_cover_with_best_frame()
  30. def main():
  31. # create sub process
  32. process = multiprocessing.Process(target=start_task)
  33. process.start()
  34. # wait for sub process to finish
  35. process.join(PROCESS_EXIT_TIMEOUT)
  36. if process.is_alive():
  37. print(
  38. f"Process {process.pid} did not finish within {PROCESS_EXIT_TIMEOUT} seconds. Terminating..."
  39. )
  40. process.terminate()
  41. process.join()
  42. if __name__ == "__main__":
  43. main()