Reoo88 commited on
Commit
2f124ef
·
verified ·
1 Parent(s): 02d890f

Update streamlit_app.py

Browse files
Files changed (1) hide show
  1. streamlit_app.py +29 -7
streamlit_app.py CHANGED
@@ -61,10 +61,10 @@ def get_tiktok_stream_url():
61
  pass
62
  return None
63
 
64
- def start_stream_simple(stream_key, stream_url):
65
  if not stream_key or not stream_url:
66
  return None
67
- log("🎬 بدء البث البسيط (vsync 2 + إعدادات أساسية)...")
68
  rtmp_url = f"rtmp://a.rtmp.youtube.com/live2/{stream_key}"
69
 
70
  cmd = [
@@ -75,9 +75,27 @@ def start_stream_simple(stream_key, stream_url):
75
  "-probesize", "50M",
76
  "-thread_queue_size", "65535",
77
  "-rtbufsize", "512M",
 
 
 
 
 
 
 
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", "18",
@@ -92,13 +110,17 @@ def start_stream_simple(stream_key, stream_url):
92
  "-color_primaries", "bt709",
93
  "-color_trc", "bt709",
94
  "-colorspace", "bt709",
 
 
95
  "-c:a", "aac",
96
  "-b:a", "192k",
97
  "-ac", "2",
98
  "-ar", "44100",
99
  "-async", "1",
 
 
100
  "-max_muxing_queue_size", "65535",
101
- "-max_delay", "5000000",
102
  "-flvflags", "no_duration_filesize+add_keyframe_index",
103
  "-f", "flv", rtmp_url
104
  ]
@@ -127,7 +149,7 @@ def run_monitor():
127
  was_streaming = False
128
  consecutive_fails = 0
129
 
130
- log("🚀 محرك البث البسيط (vsync 2)")
131
 
132
  while True:
133
  try:
@@ -138,7 +160,7 @@ def run_monitor():
138
  log("🟢 بدء بث جديد...")
139
  if processes:
140
  kill_process_tree(processes["ffmpeg"].pid)
141
- processes = start_stream_simple(STREAM_KEY, stream_url)
142
  if processes:
143
  is_streaming = True
144
  was_streaming = True
@@ -146,7 +168,7 @@ def run_monitor():
146
  else:
147
  if is_streaming and processes and processes["ffmpeg"].poll() is not None:
148
  log("⚠️ ffmpeg مات، إعادة تشغيل...")
149
- processes = start_stream_simple(STREAM_KEY, stream_url)
150
  if not processes:
151
  is_streaming = False
152
  was_streaming = False
@@ -168,7 +190,7 @@ def run_monitor():
168
  time.sleep(10)
169
 
170
  if __name__ == "__main__":
171
- log("✅ بدء تشغيل المحرك البسيط")
172
  t = threading.Thread(target=run_monitor, daemon=True)
173
  t.start()
174
  while True:
 
61
  pass
62
  return None
63
 
64
+ def start_stream_final(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 = [
 
75
  "-probesize", "50M",
76
  "-thread_queue_size", "65535",
77
  "-rtbufsize", "512M",
78
+
79
+ # 🛡️ درع إعادة الاتصال
80
+ "-reconnect", "1",
81
+ "-reconnect_streamed", "1",
82
+ "-reconnect_delay_max", "15",
83
+ "-timeout", "10000000",
84
+
85
  "-i", stream_url,
86
+
87
+ # 🛡️ تصحيح الطوابع الزمنية وتجاهل التالف
88
  "-err_detect", "ignore_err",
89
+ "-fflags", "+genpts+igndts+discardcorrupt",
90
+ "-avoid_negative_ts", "make_zero",
91
+ "-use_wallclock_as_timestamps", "1",
92
+ "-correct_ts_overflow", "1",
93
+ "-max_interleave_delta", "2000000",
94
+
95
+ # أبعاد 1080p
96
  "-vf", "scale=1080:1920:force_original_aspect_ratio=increase,pad=1080:1920:(ow-iw)/2:(oh-ih)/2:black:eval=frame",
97
+
98
+ # فيديو – جودة عالية ومستقرة
99
  "-c:v", "libx264",
100
  "-preset", "ultrafast",
101
  "-crf", "18",
 
110
  "-color_primaries", "bt709",
111
  "-color_trc", "bt709",
112
  "-colorspace", "bt709",
113
+
114
+ # صوت – بسيط ومتناسق
115
  "-c:a", "aac",
116
  "-b:a", "192k",
117
  "-ac", "2",
118
  "-ar", "44100",
119
  "-async", "1",
120
+
121
+ # إرسال – صمود إضافي
122
  "-max_muxing_queue_size", "65535",
123
+ "-max_delay", "3000000", # 3 ثوانٍ مرونة
124
  "-flvflags", "no_duration_filesize+add_keyframe_index",
125
  "-f", "flv", rtmp_url
126
  ]
 
149
  was_streaming = False
150
  consecutive_fails = 0
151
 
152
+ log("🚀 محرك البث النهائي (مقاوم للتقطيع)")
153
 
154
  while True:
155
  try:
 
160
  log("🟢 بدء بث جديد...")
161
  if processes:
162
  kill_process_tree(processes["ffmpeg"].pid)
163
+ processes = start_stream_final(STREAM_KEY, stream_url)
164
  if processes:
165
  is_streaming = True
166
  was_streaming = True
 
168
  else:
169
  if is_streaming and processes and processes["ffmpeg"].poll() is not None:
170
  log("⚠️ ffmpeg مات، إعادة تشغيل...")
171
+ processes = start_stream_final(STREAM_KEY, stream_url)
172
  if not processes:
173
  is_streaming = False
174
  was_streaming = False
 
190
  time.sleep(10)
191
 
192
  if __name__ == "__main__":
193
+ log("✅ بدء تشغيل المحرك النهائي")
194
  t = threading.Thread(target=run_monitor, daemon=True)
195
  t.start()
196
  while True: