Update app.py
Browse files
app.py
CHANGED
@@ -255,10 +255,10 @@ def detect_deepfake_video(video_path):
|
|
255 |
if not ret:
|
256 |
break
|
257 |
|
258 |
-
if frame_count % 10 == 0:
|
259 |
frame_path = "temp_frame.jpg"
|
260 |
cv2.imwrite(frame_path, frame)
|
261 |
-
result = detect_deepfake_image(frame_path)
|
262 |
frame_scores.append(result["score"])
|
263 |
os.remove(frame_path)
|
264 |
|
@@ -267,7 +267,7 @@ def detect_deepfake_video(video_path):
|
|
267 |
cap.release()
|
268 |
|
269 |
if not frame_scores:
|
270 |
-
return {"label": "UNKNOWN", "score": 0.0}
|
271 |
|
272 |
avg_score = np.mean(frame_scores)
|
273 |
confidence = round(float(avg_score), 2)
|
@@ -291,19 +291,23 @@ def download_video(url):
|
|
291 |
return None
|
292 |
|
293 |
# Download YouTube video
|
294 |
-
def
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
300 |
|
301 |
# Select Video Source
|
302 |
video_path = None
|
303 |
video_display_url = None
|
304 |
-
video_title = None
|
305 |
-
video_thumbnail = None
|
306 |
-
youtube_embed = None
|
307 |
|
308 |
# Process Uploaded Video
|
309 |
if uploaded_video is not None:
|
@@ -312,25 +316,25 @@ if uploaded_video is not None:
|
|
312 |
f.write(uploaded_video.read())
|
313 |
video_path = temp_file.name # Set video path for detection
|
314 |
video_display_url = temp_file.name
|
315 |
-
video_title = "Uploaded Video"
|
316 |
|
317 |
-
# Process Video from URL
|
318 |
elif video_url:
|
319 |
if "youtube.com" in video_url or "youtu.be" in video_url:
|
320 |
-
|
321 |
-
|
|
|
|
|
|
|
|
|
|
|
322 |
else:
|
323 |
video_path = download_video(video_url) # Download direct MP4 video
|
324 |
video_display_url = video_path
|
325 |
-
video_title = "Online MP4 Video"
|
326 |
|
327 |
# ✅ Display Video Properly
|
328 |
-
if
|
329 |
-
st.markdown(
|
330 |
-
st.
|
331 |
-
elif video_display_url:
|
332 |
-
st.markdown(f"### 🎬 {video_title}")
|
333 |
-
st.video(video_display_url) # Show Uploaded or MP4 URL Video
|
334 |
|
335 |
# ✅ "Analyze Video" بٹن ہمیشہ شو ہوگا
|
336 |
analyze_button = st.button("Analyze Video")
|
|
|
255 |
if not ret:
|
256 |
break
|
257 |
|
258 |
+
if frame_count % 10 == 0:
|
259 |
frame_path = "temp_frame.jpg"
|
260 |
cv2.imwrite(frame_path, frame)
|
261 |
+
result = detect_deepfake_image(frame_path)
|
262 |
frame_scores.append(result["score"])
|
263 |
os.remove(frame_path)
|
264 |
|
|
|
267 |
cap.release()
|
268 |
|
269 |
if not frame_scores:
|
270 |
+
return {"label": "UNKNOWN", "score": 0.0}
|
271 |
|
272 |
avg_score = np.mean(frame_scores)
|
273 |
confidence = round(float(avg_score), 2)
|
|
|
291 |
return None
|
292 |
|
293 |
# Download YouTube video
|
294 |
+
def download_youtube_video(youtube_url):
|
295 |
+
try:
|
296 |
+
yt = YouTube(youtube_url)
|
297 |
+
video_stream = yt.streams.filter(file_extension="mp4", res="360p").first()
|
298 |
+
if not video_stream:
|
299 |
+
video_stream = yt.streams.get_lowest_resolution()
|
300 |
+
|
301 |
+
temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=".mp4")
|
302 |
+
video_stream.download(filename=temp_file.name)
|
303 |
+
|
304 |
+
return temp_file.name # Return local file path
|
305 |
+
except Exception as e:
|
306 |
+
return None
|
307 |
|
308 |
# Select Video Source
|
309 |
video_path = None
|
310 |
video_display_url = None
|
|
|
|
|
|
|
311 |
|
312 |
# Process Uploaded Video
|
313 |
if uploaded_video is not None:
|
|
|
316 |
f.write(uploaded_video.read())
|
317 |
video_path = temp_file.name # Set video path for detection
|
318 |
video_display_url = temp_file.name
|
|
|
319 |
|
320 |
+
# Process Video from URL
|
321 |
elif video_url:
|
322 |
if "youtube.com" in video_url or "youtu.be" in video_url:
|
323 |
+
st.write("⏳ Downloading YouTube Video...")
|
324 |
+
video_path = download_youtube_video(video_url) # Download YouTube video
|
325 |
+
if video_path:
|
326 |
+
st.success("✅ YouTube video downloaded successfully!")
|
327 |
+
video_display_url = video_path
|
328 |
+
else:
|
329 |
+
st.error("❌ Failed to download YouTube video. Try another link.")
|
330 |
else:
|
331 |
video_path = download_video(video_url) # Download direct MP4 video
|
332 |
video_display_url = video_path
|
|
|
333 |
|
334 |
# ✅ Display Video Properly
|
335 |
+
if video_display_url:
|
336 |
+
st.markdown("### 🎬 Video Preview")
|
337 |
+
st.video(video_display_url) # Play Video
|
|
|
|
|
|
|
338 |
|
339 |
# ✅ "Analyze Video" بٹن ہمیشہ شو ہوگا
|
340 |
analyze_button = st.button("Analyze Video")
|