퀵포스팅/제미나이2.0 ai api로 할 수 있는 것들

제미나이 2.0 ai api로 할 수 있는 것들 - 3.동영상에 대한 설명 얻기

파기차차 2024. 12. 22. 11:08
728x90
반응형
SMALL

1. 아래와 같이 코딩합니다.

import google.generativeai as genai
import cv2
import os
from PIL import Image
import numpy as np
import time
from config import *

##############################
## 동영상 기반 질의 응답 수행 ##
##############################


# API 키 설정
genai.configure(api_key=API_KEY)

# 모델 로드
model = genai.GenerativeModel("gemini-2.0-flash-exp")

def extract_frames(video_path, interval=1):
    frames = []
    vidcap = cv2.VideoCapture(video_path)
    success, image = vidcap.read()
    count = 0
    while success:
        if count % (30 * interval) == 0:  # 1초마다 프레임 추출 (30fps 가정)
            image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
            pil_image = Image.fromarray(image_rgb)
            frames.append(pil_image)
        success, image = vidcap.read()
        count += 1
    return frames


def analyze_video(video_path):
    video_file = genai.upload_file(video_path)
    time.sleep(30) # 동영상 업로드되는 시간을 주어야 에러가 안남
    
    prompt = """
    이 비디오의 주요 장면, 등장인물, 핵심 메시지를 분석해주세요. 다음 형식으로 요약해주세요:
    
    1. 주요 장면:
    2. 등장인물:
    3. 핵심 메시지:
    4. 전체 요약:
    """
    
    response = model.generate_content([prompt, video_file])
    return response.text




# 비디오 파일 경로
video_path = 'a.mp4'

# 비디오 분석 실행
analysis = analyze_video(video_path)
print(analysis)

 

 

2.아래와 같이 응답결과를 얻을 수  있습니다.

 

 

3.참고로 동영상은 아래와 같습니다.

a.mp4
7.78MB

 

 

 

 

 

4.동영상 업로드 후 업로드된 파일 경로 확인하는 방법은 아래와 같습니다.

import google.generativeai as genai
from config import *

genai.configure(api_key=API_KEY)

# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")

# Upload the video and print a confirmation.
video_file_name = "a.mp4"

print(f"Uploading file...")
video_file = genai.upload_file(path=video_file_name)
print(f"Completed upload: {video_file.uri}")

 

 

5. 실행결과는 아래와 같습니다.

 

 

 

 

 

 

728x90
반응형
LIST