analyze_video.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import uvicorn
  2. from fastapi import FastAPI
  3. from pydantic import BaseModel
  4. from google_ai.generativeai_video import main
  5. app = FastAPI()
  6. api_keys = ["AIzaSyB2kjF2-S2B5cJiosx_LpApd227w33CVvs", "AIzaSyCor0q5w37Dy6fGxloLlCT7KqyEFU3PWP8"]
  7. api_key_index = 0 # 初始化索引
  8. class VideoRequest(BaseModel):
  9. video_path: str
  10. prompt: str
  11. mark: str
  12. sample_data: str
  13. #
  14. # @app.post("/process_video_test/")
  15. # async def process_video_test(request: VideoRequest):
  16. # """处理视频请求"""
  17. # video_path = request.video_path
  18. # prompt = request.prompt
  19. # mark = request.mark
  20. # sample_data = request.sample_data
  21. #
  22. # api_key = "AIzaSyB2kjF2-S2B5cJiosx_LpApd227w33CVvs"
  23. # try:
  24. # print("来一个请求,使用 API key:", api_key)
  25. # result = await main(video_path, api_key, prompt, mark, sample_data)
  26. # return {
  27. # "code": 0,
  28. # "message": "视频处理成功",
  29. # "result": result,
  30. # "mark": mark
  31. # }
  32. # except Exception as e:
  33. # print(f"视频处理失败: {str(e)}")
  34. # return {
  35. # "code": 1,
  36. # "message": f"处理失败: {e}",
  37. # "result": f"处理失败: {e}",
  38. # "mark": f"处理失败: {e}"
  39. # }
  40. @app.post("/process_video/")
  41. async def process_video(request: VideoRequest):
  42. """处理视频请求"""
  43. global api_key_index # 引用全局索引
  44. video_path = request.video_path
  45. prompt = request.prompt
  46. mark = request.mark
  47. sample_data = request.sample_data
  48. api_key = api_keys[api_key_index]
  49. api_key_index = (api_key_index + 1) % len(api_keys)
  50. try:
  51. print("来一个请求,使用 API key:", api_key)
  52. result = await main(video_path, api_key, prompt, mark, sample_data)
  53. return {
  54. "code": 0,
  55. "message": "视频处理成功",
  56. "result": result,
  57. "mark": str(mark)
  58. }
  59. except Exception as e:
  60. print(f"处理失败: {str(e)}")
  61. return {
  62. "code": 1,
  63. "message": f"处理失败: {e}",
  64. "result": f"处理失败: {e}",
  65. "mark": f"处理失败: {e}"
  66. }
  67. if __name__ == "__main__":
  68. uvicorn.run(app, host="0.0.0.0", port=8080)