Reooiq commited on
Commit
5b37dca
·
verified ·
1 Parent(s): 9820393

Update streamlit_app.py

Browse files
Files changed (1) hide show
  1. streamlit_app.py +21 -12
streamlit_app.py CHANGED
@@ -324,17 +324,18 @@ def get_tiktok_stream_url():
324
  return None
325
 
326
  # ══════════════════════════════════════════════════════════════════════════════
327
- # بدء البث (بفر كبير وجودة ثابتة مع bufsize 13500k)
328
  # ══════════════════════════════════════════════════════════════════════════════
329
 
330
  def start_stream(stream_key, stream_url):
331
  if not stream_key or not stream_url:
332
  return None
333
- log("🎬 بدء بث جديد (yt-dlp + بت ثابت)...")
334
  rtmp_url = f"rtmp://a.rtmp.youtube.com/live2/{stream_key}"
335
 
336
  try:
337
- vf_scale = "scale=1080:1920:force_original_aspect_ratio=increase,pad=1080:1920:(ow-iw)/2:(oh-ih)/2,setpts=PTS-STARTPTS"
 
338
  ffmpeg_cmd = [
339
  "nice", "-n", "19", "ffmpeg",
340
  "-hide_banner", "-loglevel", "warning",
@@ -356,8 +357,12 @@ def start_stream(stream_key, stream_url):
356
  "-preset", "ultrafast",
357
  "-b:v", "4500k",
358
  "-maxrate", "4500k",
359
- "-bufsize", "13500k", # ✅ رفع لضمان ثبات أكبر
360
  "-pix_fmt", "yuv420p",
 
 
 
 
361
  "-tune", "zerolatency",
362
  "-g", "60",
363
  "-force_key_frames", "expr:gte(t,n_forced*2)",
@@ -378,7 +383,7 @@ def start_stream(stream_key, stream_url):
378
  stdout=subprocess.DEVNULL, stderr=open(FFMPEG_LOG, "w"),
379
  preexec_fn=os.setsid
380
  )
381
- log(f"✅ بدأ البث (بت ثابت + بفر 13500k) — ffmpeg PID: {ffmpeg_proc.pid}")
382
  return {"ffmpeg": ffmpeg_proc, "ytdlp": None}
383
  except Exception as e:
384
  log(f"❌ فشل بدء البث: {e}")
@@ -387,7 +392,7 @@ def start_stream(stream_key, stream_url):
387
  def start_stream_streamlink(stream_key, stream_url):
388
  if not stream_key or not stream_url:
389
  return None
390
- log("🎬 بدء بث (streamlink + بت ثابت)...")
391
  rtmp_url = f"rtmp://a.rtmp.youtube.com/live2/{stream_key}"
392
  try:
393
  sl_cmd = ["streamlink", "--stdout", "--loglevel", "warning"]
@@ -403,7 +408,7 @@ def start_stream_streamlink(stream_key, stream_url):
403
  stream_url, "best"
404
  ])
405
 
406
- vf_scale = "scale=1080:1920:force_original_aspect_ratio=increase,pad=1080:1920:(ow-iw)/2:(oh-ih)/2,setpts=PTS-STARTPTS"
407
  ff_cmd = [
408
  "nice", "-n", "19", "ffmpeg",
409
  "-hide_banner", "-loglevel", "warning",
@@ -425,8 +430,12 @@ def start_stream_streamlink(stream_key, stream_url):
425
  "-preset", "ultrafast",
426
  "-b:v", "4500k",
427
  "-maxrate", "4500k",
428
- "-bufsize", "13500k", # ✅ رفع لضمان ثبات أكبر
429
  "-pix_fmt", "yuv420p",
 
 
 
 
430
  "-tune", "zerolatency",
431
  "-g", "60",
432
  "-force_key_frames", "expr:gte(t,n_forced*2)",
@@ -449,7 +458,7 @@ def start_stream_streamlink(stream_key, stream_url):
449
  preexec_fn=os.setsid
450
  )
451
  sl_proc.stdout.close()
452
- log(f"✅ بدأ البث (streamlink + بت ثابت) PID: {ff_proc.pid}")
453
  return {"ffmpeg": ff_proc, "ytdlp": sl_proc}
454
  except Exception as e:
455
  log(f"❌ فشل streamlink: {e}")
@@ -465,7 +474,7 @@ def kill_stream(processes):
465
  log("💀 تم قتل عمليات البث")
466
 
467
  # ══════════════════════════════════════════════════════════════════════════════
468
- # محرك المراقبة (ffmpeg هو الحَكَم الوحيد)
469
  # ════════════════════════════════════���═════════════════════════════════════════
470
 
471
  def is_monitor_running():
@@ -503,7 +512,7 @@ def run_monitor():
503
  current_stream_key = None
504
  consecutive_failures = 0
505
 
506
- log("🚀 محرك المراقبة بدأ (جودة عالية جداً)...")
507
 
508
  while True:
509
  try:
@@ -605,7 +614,7 @@ if "monitor_thread" not in st.session_state:
605
  # ══════════════════════════════════════════════════════════════════════════════
606
 
607
  st.set_page_config(page_title="AutoStreamer Pro", page_icon="📡")
608
- st.title("📡 رادار بث أحمد عبدالله (ثبات عالي)")
609
 
610
  st.subheader("⚙️ حالة الإعدادات")
611
  c1, c2, c3 = st.columns(3)
 
324
  return None
325
 
326
  # ══════════════════════════════════════════════════════════════════════════════
327
+ # بدء البث (مع إعدادات الألوان الكاملة)
328
  # ══════════════════════════════════════════════════════════════════════════════
329
 
330
  def start_stream(stream_key, stream_url):
331
  if not stream_key or not stream_url:
332
  return None
333
+ log("🎬 بدء بث جديد (yt-dlp + ألوان صحيحة)...")
334
  rtmp_url = f"rtmp://a.rtmp.youtube.com/live2/{stream_key}"
335
 
336
  try:
337
+ # فلتر بدون setpts (نعتمد على copyts ومعالجة الطوابع الأخرى)
338
+ vf_scale = "scale=1080:1920:force_original_aspect_ratio=increase,pad=1080:1920:(ow-iw)/2:(oh-ih)/2"
339
  ffmpeg_cmd = [
340
  "nice", "-n", "19", "ffmpeg",
341
  "-hide_banner", "-loglevel", "warning",
 
357
  "-preset", "ultrafast",
358
  "-b:v", "4500k",
359
  "-maxrate", "4500k",
360
+ "-bufsize", "13500k",
361
  "-pix_fmt", "yuv420p",
362
+ "-color_range", "tv",
363
+ "-color_primaries", "bt709",
364
+ "-color_trc", "bt709",
365
+ "-colorspace", "bt709",
366
  "-tune", "zerolatency",
367
  "-g", "60",
368
  "-force_key_frames", "expr:gte(t,n_forced*2)",
 
383
  stdout=subprocess.DEVNULL, stderr=open(FFMPEG_LOG, "w"),
384
  preexec_fn=os.setsid
385
  )
386
+ log(f"✅ بدأ البث (yt-dlp + ألوان) — ffmpeg PID: {ffmpeg_proc.pid}")
387
  return {"ffmpeg": ffmpeg_proc, "ytdlp": None}
388
  except Exception as e:
389
  log(f"❌ فشل بدء البث: {e}")
 
392
  def start_stream_streamlink(stream_key, stream_url):
393
  if not stream_key or not stream_url:
394
  return None
395
+ log("🎬 بدء بث (streamlink + ألوان صحيحة)...")
396
  rtmp_url = f"rtmp://a.rtmp.youtube.com/live2/{stream_key}"
397
  try:
398
  sl_cmd = ["streamlink", "--stdout", "--loglevel", "warning"]
 
408
  stream_url, "best"
409
  ])
410
 
411
+ vf_scale = "scale=1080:1920:force_original_aspect_ratio=increase,pad=1080:1920:(ow-iw)/2:(oh-ih)/2"
412
  ff_cmd = [
413
  "nice", "-n", "19", "ffmpeg",
414
  "-hide_banner", "-loglevel", "warning",
 
430
  "-preset", "ultrafast",
431
  "-b:v", "4500k",
432
  "-maxrate", "4500k",
433
+ "-bufsize", "13500k",
434
  "-pix_fmt", "yuv420p",
435
+ "-color_range", "tv",
436
+ "-color_primaries", "bt709",
437
+ "-color_trc", "bt709",
438
+ "-colorspace", "bt709",
439
  "-tune", "zerolatency",
440
  "-g", "60",
441
  "-force_key_frames", "expr:gte(t,n_forced*2)",
 
458
  preexec_fn=os.setsid
459
  )
460
  sl_proc.stdout.close()
461
+ log(f"✅ بدأ البث (streamlink + ألوان) PID: {ff_proc.pid}")
462
  return {"ffmpeg": ff_proc, "ytdlp": sl_proc}
463
  except Exception as e:
464
  log(f"❌ فشل streamlink: {e}")
 
474
  log("💀 تم قتل عمليات البث")
475
 
476
  # ══════════════════════════════════════════════════════════════════════════════
477
+ # محرك المراقبة
478
  # ════════════════════════════════════���═════════════════════════════════════════
479
 
480
  def is_monitor_running():
 
512
  current_stream_key = None
513
  consecutive_failures = 0
514
 
515
+ log("🚀 محرك المراقبة بدأ (ألوان طبيعية)...")
516
 
517
  while True:
518
  try:
 
614
  # ══════════════════════════════════════════════════════════════════════════════
615
 
616
  st.set_page_config(page_title="AutoStreamer Pro", page_icon="📡")
617
+ st.title("📡 رادار بث أحمد عبدالله (ألوان طبيعية)")
618
 
619
  st.subheader("⚙️ حالة الإعدادات")
620
  c1, c2, c3 = st.columns(3)