kader1997 commited on
Commit
e194969
·
verified ·
1 Parent(s): d82efeb

Upload 3 files

Browse files
Files changed (3) hide show
  1. README.md +22 -13
  2. app.py +40 -0
  3. requirements.txt +1 -0
README.md CHANGED
@@ -1,13 +1,22 @@
1
- ---
2
- title: ChangeFps
3
- emoji: 🏆
4
- colorFrom: yellow
5
- colorTo: gray
6
- sdk: gradio
7
- sdk_version: 6.4.0
8
- app_file: app.py
9
- pinned: false
10
- short_description: change fps video
11
- ---
12
-
13
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: FFmpeg 30FPS Video Converter
3
+ emoji: 🎬
4
+ colorFrom: purple
5
+ colorTo: blue
6
+ sdk: gradio
7
+ sdk_version: "4.44.0"
8
+ app_file: app.py
9
+ pinned: false
10
+ ---
11
+
12
+ ## 🎥 FFmpeg Video Converter
13
+
14
+ حوّل أي فيديو إلى **30FPS ثابت (CFR)**
15
+ ✔ بدون فقدان الصوت
16
+ ✔ مناسب لتيك توك و يوتيوب
17
+ ✔ سريع و مجاني
18
+
19
+ ### طريقة الاستخدام
20
+ 1. ارفع فيديو
21
+ 2. اضغط تجهيز
22
+ 3. حمّل الفيديو النهائي
app.py ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import subprocess
3
+ import uuid
4
+ import os
5
+
6
+ def process_video(video_path):
7
+ if video_path is None:
8
+ return None, "❌ الرجاء رفع فيديو"
9
+
10
+ output_file = f"output_{uuid.uuid4().hex}.mp4"
11
+
12
+ command = [
13
+ "ffmpeg",
14
+ "-i", video_path,
15
+ "-filter:v", "fps=30",
16
+ "-c:a", "copy",
17
+ "-vsync", "cfr",
18
+ output_file,
19
+ "-y"
20
+ ]
21
+
22
+ try:
23
+ subprocess.run(command, check=True)
24
+ return output_file, "✅ تم تجهيز الفيديو بنجاح (30FPS ثابت)"
25
+ except subprocess.CalledProcessError:
26
+ return None, "❌ حدث خطأ أثناء المعالجة"
27
+
28
+ with gr.Blocks(title="FFmpeg 30FPS Converter") as demo:
29
+ gr.Markdown("## 🎬 تحويل الفيديو إلى 30FPS ثابت")
30
+ gr.Markdown("ارفع الفيديو وسيتم تجهيزه تلقائيًا")
31
+
32
+ video_input = gr.Video(label="📤 رفع الفيديو")
33
+ btn = gr.Button("⚙️ تجهيز الفيديو")
34
+
35
+ output_file = gr.File(label="📥 تحميل الفيديو")
36
+ status = gr.Textbox(label="الحالة", interactive=False)
37
+
38
+ btn.click(process_video, inputs=video_input, outputs=[output_file, status])
39
+
40
+ demo.launch()
requirements.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ gradio