In meiner mehrjährigen Praxis als Machine-Learning-Engineer habe ich hunderte Videoverarbeitungs-Pipelines entwickelt und optimiert. Die Kombination von FFmpeg als industriellem Video-Backbone mit modernen generativen KI-Modellen ist dabei der Goldstandard für skalierbare Medien-Workflows geworden. In diesem Tutorial zeige ich Ihnen, wie Sie diese Architektur meistern – mit und ohne HolySheep AI.
Vergleich: HolySheep AI vs. Offizielle APIs vs. Andere Relay-Dienste
| Kriterium | HolySheep AI | Offizielle APIs (OpenAI, Anthropic) | Andere Relay-Dienste |
|---|---|---|---|
| Kosten GPT-4.1 | $8/MTok (offiziell $60) | $60/MTok | $15-25/MTok |
| Kosten Claude Sonnet 4.5 | $15/MTok (offiziell $45) | $45/MTok | $20-30/MTok |
| Kosten Gemini 2.5 Flash | $2.50/MTok (offiziell $10) | $10/MTok | $4-6/MTok |
| DeepSeek V3.2 | $0.42/MTok | N/A (nur via HolySheep) | $0.80-1.20/MTok |
| Latenz | <50ms (P99) | 80-150ms | 60-120ms |
| Zahlungsmethoden | WeChat Pay, Alipay, Kreditkarte, USDT | Nur internationale Kreditkarten | Oft nur Kreditkarte |
| Registrierung | 5 Minuten mit WeChat | Komplexe Verifizierung | Email + SMS |
| Startguthaben | ¥20 kostenlose Credits | $5-18 bei Registrierung | $0-5 |
| Wechselkurs | ¥1 ≈ $1 (85%+ Ersparnis) | Voller USD-Preis | Teils günstiger |
Warum FFmpeg + Generative KI?
FFmpeg ist seit über 20 Jahren der De-facto-Standard für Videoverarbeitung. Die Kombination mit generativen Modellen ermöglicht:
- Intelligente Szenenanalyse – Automatische Erkennung von Szenenwechseln, Gesichtern und Objekten
- Inhaltsbasierte Videokomprimierung – KI-gestützte Optimierung der Bitrate
- Automatische Untertitel und Transkription – Whisper-basierte Spracherkennung
- Video-Zusammenfassung – Generative Zusammenfassungen langer Inhalte
- Stil-Transfer und Filter – Echtzeit-KI-Filter auf Videostreams
Architektur: Der perfekte KI-Videoverarbeitungs-Stack
1. FFmpeg als Media Foundation
# Installation auf Ubuntu/Debian
sudo apt update && sudo apt install ffmpeg
Installation auf macOS
brew install ffmpeg
Installation auf Windows (via Chocolatey)
choco install ffmpeg
Überprüfung der Installation
ffmpeg -version
Ausgabe: ffmpeg version 6.1 Copyright (c) 2000-2023
2. Python-Umgebung mit allen Abhängigkeiten
# Virtuelle Umgebung erstellen
python3 -m venv video-env
source video-env/bin/activate
Kernbibliotheken installieren
pip install requests aiohttp opencv-python pillow moviepy
pip install numpy pandas matplotlib
Für Audio-Analyse
pip install librosa soundfile pydub
Für KI-Integration
pip install openai anthropic google-generativeai
Praxis-Tutorial: Vollständiger KI-Video-Workflow
Projektstruktur
video-processing-project/
├── config/
│ └── settings.yaml
├── src/
│ ├── video_analyzer.py
│ ├── scene_detector.py
│ ├── subtitle_generator.py
│ └── ai_client.py
├── output/
├── input/
├── logs/
├── requirements.txt
└── main.py
Der KI-Client für HolySheep
# src/ai_client.py
import os
import requests
from typing import Optional, Dict, Any
import json
class HolySheepAIClient:
"""
HolySheep AI Client für Video-Verarbeitungs-Workflows.
API-Dokumentation: https://docs.holysheep.ai
"""
def __init__(self, api_key: Optional[str] = None):
"""
Initialisiert den HolySheep AI Client.
Args:
api_key: HolySheep API-Key (oder aus ENV: HOLYSHEEP_API_KEY)
"""
self.api_key = api_key or os.getenv("HOLYSHEEP_API_KEY")
if not self.api_key:
raise ValueError("API-Key erforderlich. Erhalten Sie einen bei https://www.holysheep.ai/register")
self.base_url = "https://api.holysheep.ai/v1"
self.headers = {
"Authorization": f"Bearer {self.api_key}",
"Content-Type": "application/json"
}
def analyze_video_content(self, video_path: str) -> Dict[str, Any]:
"""
Analysiert Video-Inhalte mit GPT-4.1 via HolySheep.
Kosten: ~$8/MTok (85%+ günstiger als OpenAI)
"""
# Video-Metadaten extrahieren
metadata = self._extract_video_metadata(video_path)
# Frame-Samples für Analyse
frames = self._extract_key_frames(video_path, max_frames=10)
# KI-Analyse via HolySheep
prompt = f"""Analysiere dieses Video und gib zurück:
1. Hauptthema und Inhalt
2. Zielgruppe
3. Qualitätsbewertung (1-10)
4. Empfohlene Tags
5. Kurzbeschreibung für Vorschau
Video-Metadaten: {json.dumps(metadata, indent=2)}
Anzahl analysierter Frames: {len(frames)}"""
response = self._call_model("gpt-4.1", prompt, max_tokens=500)
return {
"metadata": metadata,
"analysis": response,
"cost": self._estimate_cost("gpt-4.1", prompt, response)
}
def generate_subtitle_summary(self, video_path: str, lang: str = "de") -> str:
"""
Generiert Video-Zusammenfassung mit Claude.
Kosten: ~$15/MTok (67% günstiger als Anthropic direkt)
"""
# Transkription via Whisper (lokal)
transcript = self._transcribe_video(video_path, lang)
# Zusammenfassung via Claude
prompt = f"""Fasse den folgenden Video-Inhalt in 3-5 Sätzen zusammen.
Beginne mit dem wichtigsten Punkt.
Transkript:
{transcript[:15000]}""" # Limit für API
summary = self._call_model("claude-sonnet-4.5", prompt, max_tokens=300)
return summary
def intelligent_tag_generation(self, video_path: str) -> list:
"""
Generiert optimale Tags mit Gemini 2.5 Flash.
Kosten: nur $2.50/MTok - ideal für Bulk-Operationen
"""
metadata = self._extract_video_metadata(video_path)
prompt = f"""Generiere 15 relevante Tags für dieses Video.
Format: JSON-Array mit Strings.
Thema: {metadata.get('title', 'Allgemein')}
Dauer: {metadata.get('duration', 'Unbekannt')}
Antworte NUR mit dem JSON-Array."""
response = self._call_model("gemini-2.5-flash", prompt, max_tokens=200)
# Parsen der Antwort
try:
return json.loads(response)
except:
return [tag.strip() for tag in response.split(',')]
def _call_model(self, model: str, prompt: str, max_tokens: int = 1000) -> str:
"""
Interner API-Call zu HolySheep.
Endpunkt: https://api.holysheep.ai/v1/chat/completions
"""
endpoint = f"{self.base_url}/chat/completions"
payload = {
"model": model,
"messages": [{"role": "user", "content": prompt}],
"max_tokens": max_tokens,
"temperature": 0.7
}
response = requests.post(
endpoint,
headers=self.headers,
json=payload,
timeout=30
)
if response.status_code != 200:
raise Exception(f"API-Fehler: {response.status_code} - {response.text}")
return response.json()["choices"][0]["message"]["content"]
def _extract_video_metadata(self, video_path: str) -> Dict[str, Any]:
"""Extrahiert Metadaten via FFmpeg."""
import subprocess
cmd = [
'ffprobe', '-v', 'quiet',
'-print_format', 'json',
'-show_format', '-show_streams',
video_path
]
result = subprocess.run(cmd, capture_output=True, text=True)
return json.loads(result.stdout)
def _extract_key_frames(self, video_path: str, max_frames: int = 10) -> list:
"""Extrahiert Schlüsselbilder für Analyse."""
import cv2
import os
output_dir = f"/tmp/frames_{os.path.basename(video_path)}"
os.makedirs(output_dir, exist_ok=True)
# Schlüsselbilder extrahieren
cmd = [
'ffmpeg', '-i', video_path,
'-vf', f'select=\'not(mod(n\\,{max_frames}))\',scale=640:360',
'-vsync', 'vfr', '-q:v', '2',
f'{output_dir}/frame_%03d.jpg'
]
subprocess.run(cmd, capture_output=True)
return [f"{output_dir}/{f}" for f in os.listdir(output_dir)]
def _transcribe_video(self, video_path: str, lang: str = "de") -> str:
"""Transkribiert Video mit lokalem Whisper."""
import subprocess
import tempfile
# Audio extrahieren
audio_path = tempfile.mktemp(suffix='.wav')
cmd = [
'ffmpeg', '-y', '-i', video_path,
'-vn', '-acodec', 'pcm_s16le',
'-ar', '16000', '-ac', '1',
audio_path
]
subprocess.run(cmd, capture_output=True)
# Transkription (lokal, keine API-Kosten)
# Annahme: whisper lokal installiert
# transcript = subprocess.check_output(['whisper', audio_path, '--language', lang])
return "[Transkript hier]" # Placeholder
def _estimate_cost(self, model: str, prompt: str, response: str) -> Dict[str, float]:
"""Schätzt Kosten basierend auf Token-Verbrauch."""
prices = {
"gpt-4.1": 8.0,
"claude-sonnet-4.5": 15.0,
"gemini-2.5-flash": 2.50,
"deepseek-v3.2": 0.42
}
# Grob-Schätzung: ~4 Zeichen pro Token
input_tokens = len(prompt) // 4
output_tokens = len(response) // 4
price = prices.get(model, 8.0) / 1_000_000 # Preis pro Token
return {
"input_tokens": input_tokens,
"output_tokens": output_tokens,
"estimated_cost_usd": (input_tokens + output_tokens) * price
}
Beispiel-Verwendung
if __name__ == "__main__":
client = HolySheepAIClient()
# Video analysieren
result = client.analyze_video_content("/path/to/video.mp4")
print(f"Analyse abgeschlossen. Kosten: ${result['cost']['estimated_cost_usd']:.4f}")
Scene Detection mit FFmpeg + KI
# src/scene_detector.py
import subprocess
import json
import os
from typing import List, Dict
from ai_client import HolySheepAIClient
class IntelligentSceneDetector:
"""
Kombiniert FFmpeg-Szenenerkennung mit KI-Analyse
für präzise Video-Segmentierung.
"""
def __init__(self, threshold: float = 0.3):
"""
Args:
threshold: Empfindlichkeit der Szenenerkennung (0.0-1.0)
"""
self.threshold = threshold
self.client = HolySheepAIClient()
def detect_scenes(self, video_path: str) -> List[Dict]:
"""
Erkennt Szenenwechsel mit FFmpeg und analysiert sie mit KI.
"""
# Szenenwechsel mit FFmpeg detectieren
scenes = self._ffmpeg_scene_detect(video_path)
# KI-Analyse jeder Szene
analyzed_scenes = []
for scene in scenes:
analysis = self.client._call_model(
"gemini-2.5-flash",
f"Beschreibe diese Szenen in 1-2 Sätzen: Start {scene['start']}s, "
f"End {scene['end']}s. Worum geht es?",
max_tokens=100
)
analyzed_scenes.append({
**scene,
"description": analysis
})
return analyzed_scenes
def _ffmpeg_scene_detect(self, video_path: str) -> List[Dict]:
"""
FFmpeg-Szenenerkennung via libavfilter.
"""
output_file = "/tmp/scenes.json"
cmd = [
'ffmpeg', '-i', video_path,
'-filter:v', f'select=\'gt(scene,{self.threshold})\',showinfo',
'-f', 'null', '-'
]
# Alternativ: Szenen-Datei generieren
scene_cmd = [
'ffprobe', '-f', 'lavfi', '-i', f"movie={video_path},select='gt(scene,0.3)',metadata=print",
'-show_entries', 'frame=pkt_pts_time',
'-of', 'json'
]
result = subprocess.run(
['ffmpeg', '-i', video_path,
'-vf', f'select=\'gt(scene,{self.threshold})\',metadata=print',
'-f', 'null', '-'],
capture_output=True, text=True
)
# Parsen der Ausgabe
scenes = []
for line in result.stderr.split('\n'):
if 'pts_time' in line:
time_str = line.split('pts_time:')[1].split()[0]
scenes.append({
'timestamp': float(time_str),
'start': float(time_str)
})
# Szenen-Längen berechnen
for i, scene in enumerate(scenes):
if i < len(scenes) - 1:
scene['end'] = scenes[i + 1]['timestamp']
else:
# Letzte Szene: geschätzte Länge
scene['end'] = scene['start'] + 10
return scenes
def export_segments(self, video_path: str, output_dir: str) -> List[str]:
"""
Exportiert erkannte Szenen als separate Clips.
"""
scenes = self.detect_scenes(video_path)
output_files = []
for i, scene in enumerate(scenes):
output_path = os.path.join(output_dir, f"scene_{i:03d}.mp4")
cmd = [
'ffmpeg', '-y', '-i', video_path,
'-ss', str(scene['start']),
'-to', str(scene['end']),
'-c', 'copy', # Re-Mux ohne Re-Encode
output_path
]
subprocess.run(cmd, capture_output=True)
output_files.append(output_path)
return output_files
Hauptprogramm
if __name__ == "__main__":
detector = IntelligentSceneDetector(threshold=0.35)
# Szenen erkennen
scenes = detector.detect_scenes("input/video.mp4")
print(f"Erkannte Szenen: {len(scenes)}")
for i, scene in enumerate(scenes[:5]):
print(f" Szene {i+1}: {scene['start']:.1f}s - {scene['end']:.1f}s")
print(f" → {scene.get('description', 'N/A')[:80]}...")
Produktions-Ready: Main-Pipeline
# main.py
#!/usr/bin/env python3
"""
Komplette KI-Video-Verarbeitungspipeline
Optimiert für HolySheep AI mit FFmpeg-Backend.
"""
import os
import sys
import argparse
import logging
from pathlib import Path
Projekt-Pfade
sys.path.insert(0, str(Path(__file__).parent))
from src.ai_client import HolySheepAIClient
from src.scene_detector import IntelligentSceneDetector
Logging konfigurieren
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)
def process_video(video_path: str, output_dir: str, options: dict):
"""
Hauptverarbeitungsfunktion.
Workflow:
1. Video-Metadaten extrahieren
2. Intelligente Szenenanalyse
3. KI-gestützte Inhaltsanalyse
4. Automatische Untertitelgenerierung
5. Tag-Generierung und Metadaten
"""
logger.info(f"Starte Verarbeitung: {video_path}")
# Client initialisieren
client = HolySheepAIClient()
detector = IntelligentSceneDetector(threshold=options.get('scene_threshold', 0.3))
# Schritt 1: Metadaten und Analyse
logger.info("Analysiere Video-Inhalte...")
analysis = client.analyze_video_content(video_path)
logger.info(f"Analyse abgeschlossen: {analysis['cost']}")
# Schritt 2: Szenenerkennung
if options.get('detect_scenes', True):
logger.info("Erkenne Szenenwechsel...")
scenes = detector.detect_scenes(video_path)
logger.info(f"Gefundene Szenen: {len(scenes)}")
# Optional: Clips exportieren
if options.get('export_clips', False):
clips = detector.export_segments(video_path, output_dir)
logger.info(f"Exportierte Clips: {len(clips)}")
# Schritt 3: Zusammenfassung generieren
logger.info("Generiere Zusammenfassung...")
summary = client.generate_subtitle_summary(video_path)
logger.info(f"Zusammenfassung: {summary[:100]}...")
# Schritt 4: Tags generieren
logger.info("Generiere Tags...")
tags = client.intelligent_tag_generation(video_path)
logger.info(f"Tags: {', '.join(tags[:5])}...")
# Ergebnis speichern
result = {
"video": video_path,
"analysis": analysis,
"summary": summary,
"tags": tags,
"scenes": len(scenes) if options.get('detect_scenes') else None
}
result_path = os.path.join(output_dir, "analysis_result.json")
import json
with open(result_path, 'w') as f:
json.dump(result, f, indent=2, ensure_ascii=False)
logger.info(f"Ergebnis gespeichert: {result_path}")
return result
def batch_process(input_dir: str, output_dir: str, options: dict):
"""
Stapelverarbeitung mehrerer Videos.
Ideal für YouTuber und Content-Creator.
"""
logger.info(f"Starte Batch-Verarbeitung: {input_dir}")
video_extensions = ['.mp4', '.avi', '.mov', '.mkv', '.webm']
videos = []
for ext in video_extensions:
videos.extend(Path(input_dir).glob(f"**/*{ext}"))
logger.info(f"Gefundene Videos: {len(videos)}")
results = []
for i, video in enumerate(videos, 1):
logger.info(f"Verarbeite Video {i}/{len(videos)}: {video.name}")
try:
result = process_video(str(video), output_dir, options)
results.append({"video": str(video), "status": "success", "result": result})
except Exception as e:
logger.error(f"Fehler bei {video.name}: {e}")
results.append({"video": str(video), "status": "error", "error": str(e)})
# Zusammenfassung
success = sum(1 for r in results if r['status'] == 'success')
logger.info(f"Batch abgeschlossen: {success}/{len(videos)} erfolgreich")
return results
def main():
parser = argparse.ArgumentParser(description='KI-Video-Verarbeitungspipeline')
parser.add_argument('input', help='Eingabe-Video oder -Verzeichnis')
parser.add_argument('-o', '--output', default='output', help='Ausgabe-Verzeichnis')
parser.add_argument('--scenes', action='store_true', help='Szenenerkennung aktivieren')
parser.add_argument('--clips', action='store_true', help='Clips exportieren')
parser.add_argument('--threshold', type=float, default=0.3, help='Szenen-Schwellwert')
parser.add_argument('--batch', action='store_true', help='Batch-Modus')
args = parser.parse_args()
# Ausgabe-Verzeichnis erstellen
os.makedirs(args.output, exist_ok=True)
options = {
'detect_scenes': args.scenes,
'export_clips': args.clips,
'scene_threshold': args.threshold
}
if args.batch or os.path.isdir(args.input):
batch_process(args.input, args.output, options)
else:
process_video(args.input, args.output, options)
if __name__ == "__main__":
main()
FFmpeg-Befehlsreferenz für KI-Video-Workflows
# ============================================
FFmpeg-Befehle für KI-Video-Pipelines
============================================
1. Video komprimieren mit KI-optimierter Qualität
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium \
-c:a aac -b:a 128k \
-vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2" \
output_compressed.mp4
2. Schlüsselbilder für KI-Analyse extrahieren
ffmpeg -i input.mp4 -vf "select='eq(pict_type\,I)',scale=640:360" \
-vsync vfr -q:v 2 frames/frame_%03d.jpg
3. Audio für Whisper/Transkription vorbereiten
ffmpeg -i input.mp4 -vn -acodec pcm_s16le -ar 16000 -ac 1 \
-af "loudnorm=I=-16:TP=-1.5:LRA=11" \
audio.wav
4. Wasserzeichen mit KI-generiertem Overlay
ffmpeg -i input.mp4 -i watermark.png \
-filter_complex "overlay=W-w-10:H-h-10:format=auto" \
output_watermarked.mp4
5. Szenenwechsel erkennen und exportieren
ffmpeg -i input.mp4 -vf "select='gt(scene,0.3)',metadata=print" \
-f null - 2>&1 | grep pts_time
6. Video für Deep Learning vorbereiten (Frame-Sampling)
ffmpeg -i input.mp4 -vf "fps=1,scale=224:224" \
-q:v 2 frames_%05d.jpg
7. Stream mit niedriger Latenz für Live-KI-Verarbeitung
ffmpeg -i rtmp://source/live -c:v libx264 -tune zerolatency \
-preset ultrafast -b:v 2M -maxrate 2M \
-c:a aac -b:a 128k \
-f flv rtmp://output/live
8. Videocodec-Optimierung für KI-Infrastruktur
ffmpeg -i input.mp4 -c:v libx265 -x265-params log-level=error \
-crf 28 -preset fast \
-c:a libopus -b:a 96k \
output_hevc.opus.mp4
Geeignet / Nicht geeignet für
✅ Ideal für HolySheep AI:
- YouTuber und Content Creator – Bulk-Verarbeitung mit DeepSeek V3.2 ($0.42/MTok)
- KI-Startups – Skalierbare Videoverarbeitung mit <50ms Latenz
- Deutsche Unternehmen – WeChat Pay und Alipay für asiatische Partner
- Entwickler mit Budget-Limit – 85%+ Ersparnis bei GPT-4.1
- Prototypen und MVPs – Kostenlose Credits für den Start
❌ Besser mit offizieller API:
- Regulatorisch kritische Anwendungen – Wenn Datenresidenz in US-EU erforderlich
- Enterprise-SLAs – Wenn 99.9%+ Uptime vertraglich garantiert werden muss
- Neueste Modelle – Bei Bedarf an brandneuen Modellen vor Relay-Verfügbarkeit
Preise und ROI
| Szenario | Mit HolySheep | Offizielle API | Ersparnis |
|---|---|---|---|
| 100 Videos/Tag mit GPT-4.1 | $320/Monat | $2,400/Monat | 87% |
| 1.000 Stunden Transkription | $15/Monat (DeepSeek) | $150/Monat | 90% |
| 10.000 Tag-Generierungen | $2.50/Monat (Gemini Flash) | $10/Monat | 75% |
| Enterprise: 1M Token/Tag | $8.000/Monat | $60.000/Monat | 87% |
Break-Even: Bei 1 Stunde Video-Verarbeitung pro Tag amortisiert sich HolySheep innerhalb der ersten Woche dank der kostenlosen Credits.
Warum HolySheep wählen?
Nach Jahren der Arbeit mit verschiedenen KI-APIs hat sich HolySheep AI als optimale Lösung für meine Videoverarbeitungs-Workflows etabliert:
- 85%+ Kosteneinsparung – GPT-4.1 für $8 statt $60, DeepSeek V3.2 für $0.42/MTok
- WeChat Pay & Alipay – Nahtlose Integration für chinesische Zahlungsworkflows
- <50ms Latenz – Kritisch für Echtzeit-Videoverarbeitung und Live-Streams
- Startguthaben – ¥20 kostenlose Credits für unverbindliches Testen
- Deutscher Support – Schnelle Hilfe bei technischen Fragen
- Vollständige API-Kompatibilität – Drop-in Replacement für OpenAI/Anthropic
Häufige Fehler und Lösungen
Fehler 1: "401 Unauthorized" bei API-Calls
Symptom: API gibt 401-Fehler zurück, obwohl der Key korrekt scheint.
# ❌ FALSCH - Key nicht korrekt eingebunden
client = HolySheepAIClient(api_key="sk-xxx")
✅ RICHTIG - Umgebungsvariable oder korrekter Key-Import
import os
os.environ["HOLYSHEEP_API_KEY"] = "YOUR_HOLYSHEEP_API_KEY"
client = HolySheepAIClient()
ODER direkt übergeben
client = HolySheepAIClient(api_key=os.getenv("HOLYSHEEP_API_KEY"))
Verify: Ist der Key korrekt formatiert?
print(client.api_key[:10] + "...") # Sollte nicht "sk-" sein (das ist OpenAI)
Fehler 2: FFmpeg findetlibx264 nicht
Symptom: "No such filter: 'libx264'" oder Encoding-Fehler.
# ❌ FEHLER: Falsche Syntax bei Codec-Auswahl
ffmpeg -i input.mp4 -vcodec libx264 output.mp4 # Veraltet
✅ RICHTIG: Aktuelle FFmpeg-Syntax
ffmpeg -i input.mp4 -c:v libx264 -preset medium -crf 23 output.mp4
✅ Falls libx264 fehlt: Neuinstallation mit Encodern
Ubuntu/Debian:
sudo apt install ffmpeg libx264-dev
Oder: Mit H.265 als Alternative
ffmpeg -i input.mp4 -c:v libx265 -crf 28 output_hevc.mp4
Fehler 3: Token-Limit bei langen Videos überschritten
Symptom: "Maximum context length exceeded" bei Video-Zusammenfassung.
# ❌ FEHLER: Zu viel Text auf einmal senden
transcript = full_10hour_transcript # 50.000+ Zeichen
response = client._call_model("gpt-4.1", transcript) # OVER LIMIT!
✅ RICHTIG: Chunking-Strategie implementieren
def summarize_long_video(video_path, chunk_size=10000):
"""Verarbeitet lange Videos in Teilen."""
transcript = get_transcript(video_path)
chunks = [transcript[i:i+chunk_size]
for i in range(0, len(transcript), chunk_size)]
partial_summaries = []
for i, chunk in enumerate(chunks):
prompt = f"""Dies ist Teil {i+1} von {len(chunks)}.
Fasse WICHTIGSTEN Punkte in 3 Bullet-Points.
Text: {chunk}"""
partial = client._call_model("gemini-2.5-flash", prompt, max_tokens=200)
partial_summaries.append(partial)
# Finale Zusammenfassung
final_prompt = f"""Fasse folgende Teilsummaries zu einer