Spaces:
Paused
Paused
Update streamlit_app.py
Browse files- streamlit_app.py +10 -11
streamlit_app.py
CHANGED
|
@@ -64,31 +64,30 @@ def get_tiktok_stream_url():
|
|
| 64 |
def start_stream_light(stream_key, stream_url):
|
| 65 |
if not stream_key or not stream_url:
|
| 66 |
return None
|
| 67 |
-
log("🎬 بدء البث
|
| 68 |
rtmp_url = f"rtmp://a.rtmp.youtube.com/live2/{stream_key}"
|
| 69 |
|
| 70 |
-
# أمر ffmpeg مبسط جدًا
|
| 71 |
cmd = [
|
| 72 |
"nice", "-n", "19", "ffmpeg",
|
| 73 |
"-hide_banner", "-loglevel", "verbose",
|
| 74 |
"-re",
|
| 75 |
"-analyzeduration", "30M",
|
| 76 |
"-probesize", "30M",
|
| 77 |
-
"-thread_queue_size", "4096",
|
| 78 |
-
"-rtbufsize", "256M",
|
| 79 |
"-i", stream_url,
|
| 80 |
"-err_detect", "ignore_err",
|
| 81 |
"-vf", "scale=1080:1920:force_original_aspect_ratio=increase,pad=1080:1920:(ow-iw)/2:(oh-ih)/2:black:eval=frame",
|
| 82 |
"-c:v", "libx264",
|
| 83 |
"-preset", "ultrafast",
|
| 84 |
-
"-crf", "
|
| 85 |
-
"-maxrate", "
|
| 86 |
-
"-minrate", "
|
| 87 |
-
"-bufsize", "
|
| 88 |
"-g", "60",
|
| 89 |
"-vsync", "2",
|
| 90 |
"-pix_fmt", "yuv420p",
|
| 91 |
-
"-c:a", "copy",
|
| 92 |
"-max_muxing_queue_size", "4096",
|
| 93 |
"-max_delay", "3000000",
|
| 94 |
"-flvflags", "no_duration_filesize+add_keyframe_index",
|
|
@@ -120,7 +119,7 @@ def run_monitor():
|
|
| 120 |
consecutive_fails = 0
|
| 121 |
last_cpu_check = 0
|
| 122 |
|
| 123 |
-
log("🚀 محرك البث الخفيف مع مراقبة CPU")
|
| 124 |
|
| 125 |
while True:
|
| 126 |
try:
|
|
@@ -177,7 +176,7 @@ def run_monitor():
|
|
| 177 |
time.sleep(10)
|
| 178 |
|
| 179 |
if __name__ == "__main__":
|
| 180 |
-
log("✅ بدء تشغيل المحرك الخفيف")
|
| 181 |
t = threading.Thread(target=run_monitor, daemon=True)
|
| 182 |
t.start()
|
| 183 |
while True:
|
|
|
|
| 64 |
def start_stream_light(stream_key, stream_url):
|
| 65 |
if not stream_key or not stream_url:
|
| 66 |
return None
|
| 67 |
+
log("🎬 بدء البث (خفيف مع جودة محسّنة)...")
|
| 68 |
rtmp_url = f"rtmp://a.rtmp.youtube.com/live2/{stream_key}"
|
| 69 |
|
|
|
|
| 70 |
cmd = [
|
| 71 |
"nice", "-n", "19", "ffmpeg",
|
| 72 |
"-hide_banner", "-loglevel", "verbose",
|
| 73 |
"-re",
|
| 74 |
"-analyzeduration", "30M",
|
| 75 |
"-probesize", "30M",
|
| 76 |
+
"-thread_queue_size", "4096",
|
| 77 |
+
"-rtbufsize", "256M",
|
| 78 |
"-i", stream_url,
|
| 79 |
"-err_detect", "ignore_err",
|
| 80 |
"-vf", "scale=1080:1920:force_original_aspect_ratio=increase,pad=1080:1920:(ow-iw)/2:(oh-ih)/2:black:eval=frame",
|
| 81 |
"-c:v", "libx264",
|
| 82 |
"-preset", "ultrafast",
|
| 83 |
+
"-crf", "20", # ✅ جودة أعلى (أقل ضغط)
|
| 84 |
+
"-maxrate", "8000k", # ✅ سقف أعلى
|
| 85 |
+
"-minrate", "4000k", # ✅ أدنى أعلى
|
| 86 |
+
"-bufsize", "16000k", # ✅ بفر أكبر
|
| 87 |
"-g", "60",
|
| 88 |
"-vsync", "2",
|
| 89 |
"-pix_fmt", "yuv420p",
|
| 90 |
+
"-c:a", "copy", # نسخ الصوت مباشرة
|
| 91 |
"-max_muxing_queue_size", "4096",
|
| 92 |
"-max_delay", "3000000",
|
| 93 |
"-flvflags", "no_duration_filesize+add_keyframe_index",
|
|
|
|
| 119 |
consecutive_fails = 0
|
| 120 |
last_cpu_check = 0
|
| 121 |
|
| 122 |
+
log("🚀 محرك البث الخفيف مع جودة محسّنة ومراقبة CPU")
|
| 123 |
|
| 124 |
while True:
|
| 125 |
try:
|
|
|
|
| 176 |
time.sleep(10)
|
| 177 |
|
| 178 |
if __name__ == "__main__":
|
| 179 |
+
log("✅ بدء تشغيل المحرك الخفيف مع جودة محسّنة")
|
| 180 |
t = threading.Thread(target=run_monitor, daemon=True)
|
| 181 |
t.start()
|
| 182 |
while True:
|