Keep FFmpeg on TikTok format change: splice into same RTMPS so YouTube does not show loading
Browse files
relay.py
CHANGED
|
@@ -853,6 +853,22 @@ class Sender:
|
|
| 853 |
pass
|
| 854 |
raise SourceStalled('انقطع تدفق المصدر منذ %.0f ث (FFmpeg ما زال حيًا، '
|
| 855 |
'ويوتيوب يبقى على آخر ثانية وصلته)' % (now - _fresh))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 856 |
rc = p.poll()
|
| 857 |
if rc is not None:
|
| 858 |
if sess['format_changed']:
|
|
|
|
| 853 |
pass
|
| 854 |
raise SourceStalled('انقطع تدفق المصدر منذ %.0f ث (FFmpeg ما زال حيًا، '
|
| 855 |
'ويوتيوب يبقى على آخر ثانية وصلته)' % (now - _fresh))
|
| 856 |
+
if sess.get('format_changed') and p.poll() is None:
|
| 857 |
+
sess['format_changed'] = False
|
| 858 |
+
self.log(user, '[RELAY] تغيّر شكل المصدر؛ إعادة توصيل تيك توك على نفس FFmpeg — لا قطع يوتيوب')
|
| 859 |
+
attached=None
|
| 860 |
+
for _try in range(3):
|
| 861 |
+
attached = self._try_reattach(user, p, bridge, sess, stop, refresh,
|
| 862 |
+
read_timeout, retries, response, pump)
|
| 863 |
+
if attached:
|
| 864 |
+
response, pump = attached
|
| 865 |
+
break
|
| 866 |
+
if stop.is_set() or p.poll() is not None:
|
| 867 |
+
break
|
| 868 |
+
time.sleep(1.0)
|
| 869 |
+
if attached:
|
| 870 |
+
continue
|
| 871 |
+
raise FormatChanged()
|
| 872 |
rc = p.poll()
|
| 873 |
if rc is not None:
|
| 874 |
if sess['format_changed']:
|