File size: 1,543 Bytes
5b7ca6d
 
 
 
 
60efa5a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import os
os.environ['LIBROSA_CACHE_DIR'] = '/tmp'
os.environ['JOBLIB_TEMP_FOLDER'] = '/tmp'
os.environ['NUMBA_CACHE_DIR'] = '/tmp'

from typing import Dict
from extraction.media_extractor import MediaExtractor
from analysis.video_analyser import VideoAnalyzer
from analysis.audio_analyser import AudioAnalyzer
from analysis.llm_analyser import LLMFusion

class DeepfakeDetectionPipeline:
    """Complete deepfake detection pipeline"""
    
    def __init__(self):
        self.media_extractor = MediaExtractor(frames_per_interval=5)
        self.video_analyzer = VideoAnalyzer()
        self.audio_analyzer = AudioAnalyzer()
        self.llm_fusion = LLMFusion()
    
    def analyze_video(self, video_path: str, interval_duration: float = 2.0) -> Dict:
        
        timeline, video_info = self.media_extractor.extract_all(video_path, interval_duration)
        
        for i, interval in enumerate(timeline):
            video_results = self.video_analyzer.analyze_interval(interval)
            interval['video_results'] = video_results
        
        for i, interval in enumerate(timeline):
            audio_results = self.audio_analyzer.analyze_interval(interval)
            interval['audio_results'] = audio_results
        
        final_report = self.llm_fusion.generate_report(timeline, video_info)
        
        return {
            'video_info': video_info,
            'timeline': timeline,
            'final_report': final_report,
            'summary': self.llm_fusion.generate_report(timeline, video_info)
        }