analyze_video.py 2.2 KB

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