الإجابة المختصرة
يمكن لتطبيق سطح المكتب Social Stream تشغيل الملفات المحلية المصرح بها دون رفعها. استخدم اختيار ملف محلي (Choose Local File) في Event Flow، ثم انسخ رابط Flow Actions المحلي المُنشأ إلى OBS.
لا تستطيع إضافة Chrome تقديم ملفات من قرصك بمفردها. ينبغي لمستخدمي الإضافة مواصلة استخدام Upload أو رابط وسائط مستضاف، إلا إذا كانوا يشغّلون أيضًا تطبيق سطح مكتب مرافقًا مدعومًا.
اختيار المسار الأنسب
الأنسب لمكتبة محدودة وبأقل إعداد.
موصى به عندما تكون SSApp وOBS والملفات على الجهاز نفسه.
الأنسب لكميات كبيرة من الوسائط والنسخ الاحتياطية والاستخدام من عدة أجهزة.
تشغّل مكافأة أو رسالة الإجراء.
actions.html تستقبل الإجراء.
يحمّل OBS الصوت أو الصورة أو GIF أو الفيديو.
الخيار 1: استخدام الرفع المدمج
- في Event Flow، اختر تشغيل مقطع صوتي (Play Audio Clip) أو عرض تراكب وسائط (Display Media Overlay).
- انقر على رفع (Upload)، واختر الملف وأكمل الرفع في الصفحة التي تُفتح.
- تأكد من أن عنوان
https://fileuploads.socialstream.ninja/media/...المُعاد يظهر في الإجراء. - احفظ التدفق وأبقِ
actions.html?session=YOUR_SESSIONمفتوحًا في OBS.
إذا أظهر موقع الرفع سعة حساب قدرها 1 GB وكانت مكتبتك ستتجاوزها، فاستخدم خيار المجلد المحلي أو التخزين السحابي أدناه.
الخيار 2: الاحتفاظ بالمكتبة على جهاز OBS
يتضمن تطبيق سطح المكتب المستقل مكتبة وسائط محلية وخادم loopback يستمع على هذا الجهاز فقط. يخزّن Event Flow معرّف وسائط ثابتًا بدلًا من إدراج مسار القرص في التدفق.
- شغّل تطبيق Social Stream المستقل وافتح Event Flow.
- اختر تشغيل مقطع صوتي (Play Audio Clip) أو عرض تراكب وسائط (Display Media Overlay).
- انقر على اختيار ملف محلي (Choose Local File) واختر ملف صوت أو صورة أو GIF أو فيديو.
- تأكد من أن الإجراء يشير إلى توفر الملف وأن الخادم المحلي يعمل.
- انقر على نسخ رابط Flow Actions المحلي لـOBS (Copy Local Flow Actions URL for OBS).
- الصق ذلك الرابط في مصدر متصفح OBS، واحفظ التدفق، واختبر الإجراء.
- استخدم معاينة (Preview) للتحقق من الملف المحدد.
- إذا نُقل الملف أو تغير اسمه، يعرضه Event Flow كمفقود. انقر إعادة الربط (Relink) واختر موقعه الجديد؛ تستمر التدفقات الحالية في العمل.
- استخدم إظهار في المجلد (Reveal in Folder) عندما تحتاج إلى العثور على الملف الأصلي.
- أبقِ SSApp قيد التشغيل بينما يستخدم OBS رابط Flow Actions المحلي.
- لا تشارك عنوان URL المُنشأ. يتضمن رمز صلاحية عشوائيًا خاصًا يُستخدم لحماية الخادم المحلي.
استخدم رابط Flow Actions المحلي المُنشأ. صفحة https://socialstream.ninja/actions.html المستضافة لا تستطيع تفسير معرّف وسائط من مكتبة سطح المكتب.
بديل متقدم: تشغيل خادمك المحلي
يظل الإعداد اليدوي التالي متاحًا إذا لم تكن تستخدم مكتبة الوسائط المحلية المُدارة في SSApp.
نزّل واستخرج مجلد مصدر Social Stream Ninja، ثم أنشئ مجلد user-media داخله.
C:\SSN\social_stream\
actions.html
user-media\
audio\booty.mp3
images\reward.png
video\celebration.mp4
بدء خادم HTTP المحلي اليدوي
- ثبّت Python إن لم يكن مثبتًا بالفعل.
- افتح PowerShell أو Command Prompt ونفّذ هذا الأمر. اترك النافذة مفتوحة أثناء البث.
أمر Windows
py -m http.server 8765 --bind 127.0.0.1 --directory "C:\SSN\social_stream"
أمر macOS أو Linux
python3 -m http.server 8765 --bind 127.0.0.1 --directory "/path/to/social_stream"
رابط Flow Actions لمصدر المتصفح في OBS
http://127.0.0.1:8765/actions.html?session=YOUR_SESSION_ID
روابط الوسائط للصقها في Event Flow
http://127.0.0.1:8765/user-media/audio/booty.mp3 http://127.0.0.1:8765/user-media/images/reward.png http://127.0.0.1:8765/user-media/video/celebration.mp4
127.0.0.1:8765/actions.html127.0.0.1:8765/user-media/...الإعداد --bind 127.0.0.1 يبقي الخادم على هذا الجهاز. هذا الخادم البسيط للاستخدام في البث المحلي، وليس للاستضافة العامة على الإنترنت.
file://: يعمل، لكنه أقل متانة
إذا لم ترغب في تشغيل خادم محلي، فوجّه OBS إلى صفحة Flow Actions محلية واستخدم روابط وسائط محلية أيضًا:
file:///C:/SSN/social_stream/actions.html?session=YOUR_SESSION_ID file:///C:/SSN/social_stream/user-media/audio/booty.mp3
- استخدم الشرطات المائلة الأمامية وتجنب المسافات والأحرف الخاصة في أسماء المجلدات والملفات.
- يجب أن تكون صفحة Flow Actions والوسائط محليتين. لا تستطيع صفحة
actions.htmlالمستضافة قراءة ذلك المسار. - إذا رفض OBS ملفًا محليًا، فاستخدم طريقة خادم HTTP المحلي أعلاه.
ماذا عن إضافة Chrome؟
تستخدم الإضافة تنسيق Event Flow نفسه، لذا تظل التدفقات المنشأة في تطبيق سطح المكتب متوافقة. تخزّن الإجراءات المحلية معرّف وسائط غير دال على المسار بدلًا من مسار Windows أو macOS أو Linux.
لا تستطيع الإضافة إتاحة ملفات اعتباطية من قرصك إلى OBS بمفردها. دون جسر مرافق مدعوم، استخدم رفع (Upload) أو رابطًا مستضافًا عاديًا. إذا أشار تدفق مستورد إلى وسائط محلية، توضح الإضافة أن تطبيق سطح المكتب أو الجسر مطلوب، بدلًا من الفشل بصمت.
الخيار 3: استضافة مكتبة أكبر على الإنترنت
| المزود | مناسب لـ | ملاحظات مهمة |
|---|---|---|
| Cloudflare R2 | أفضل خيار عام لمكتبة تنبيهات عامة. | يتضمن التخزين القياسي حاليًا 10 GB-month شهريًا ونقل بيانات صادرًا مجانيًا إلى الإنترنت. استخدم نطاقًا مخصصًا للإنتاج؛ r2.dev محدود المعدل ومخصص للتطوير. |
| Backblaze B2 | تخزين منخفض التكلفة متوافق مع S3 مع روابط ملفات عامة. | أول 10 GB مجانية حاليًا؛ تُدفَع رسوم التخزين ونقل البيانات الصادر الزائد بعد تجاوز الكميات المشمولة. |
| Amazon S3 أو مضيف آخر متوافق مع S3 | الحسابات السحابية الموجودة وعناصر التحكم المتقدمة في الوصول. | فعّل القراءة العامة للوسائط، واضبط أنواع المحتوى الصحيحة، وأضف قاعدة CORS للقراءة فقط إذا تطلبتها طلبات المتصفح. |
| GitHub | بعض الملفات العامة الصغيرة أو تنزيلات الإصدارات العرضية. | تحظر المستودعات العادية الملفات الأكبر من 100 MiB، ويبلغ حد الموقع المنشور في GitHub Pages 1 GB. تسمح الإصدارات بأصول أكبر، لكنها ليست مناسبة لإدارة مكتبة وسائط تنبيهات. |
عام يعني متاحًا للجميع. يستطيع أي شخص يملك رابط الكائن الوصول إلى الوسائط. لا ترفع ملفات خاصة أو مرخصة أو شخصية ينبغي عدم مشاركتها.
إعداد Cloudflare R2
- أنشئ حاوية R2 باستخدام فئة التخزين Standard .
- ارفع وسائطك بأسماء مجلدات واضحة مثل
audio/,images/، وvideo/. - في إعدادات الحاوية، فعّل الوصول العام. استخدم رابط التطوير العام للاختبار فقط، أو اربط نطاقًا مخصصًا للاستخدام المنتظم أثناء البث.
- افتح رابط كائن في نافذة متصفح خاصة أو خفية. يجب أن يحمّل الملف مباشرة دون تسجيل دخول أو صفحة مشاركة.
- الصق رابط HTTPS المباشر في إجراء Event Flow.
تُحمَّل الصور والصوت العاديان عادةً دون إعدادات CORS مخصصة. إذا أبلغ تراكب مخصص أو خط أو مشغّل فيديو أو طلب fetch من المتصفح عن خطأ CORS، فافتح الحاوية → الإعدادات → سياسة CORS (Bucket → Settings → CORS Policy) وأضف سياسة للقراءة فقط:
[
{
"AllowedOrigins": [
"https://socialstream.ninja",
"http://127.0.0.1:8765"
],
"AllowedMethods": ["GET", "HEAD"],
"AllowedHeaders": ["Range"],
"ExposeHeaders": [
"Content-Length",
"Content-Range",
"Accept-Ranges"
],
"MaxAgeSeconds": 3600
}
]
أضف الأصل الدقيق لأي صفحة أخرى تجلب الملفات. لا تتضمن الأصول مسارات أو شرطة مائلة أخيرة. إذا كان نطاق مخصص مخزنًا مؤقتًا قبل إضافة CORS، فامسح ذاكرة التخزين المؤقت لاسم المضيف ذلك.
مراجع رسمية: حاويات R2 العامة, CORS في R2، و أسعار R2.
مثال CORS لـBackblaze B2
اجعل الحاوية عامة، واستخدم رابط الملف المباشر، وطبّق قاعدة للتنزيل فقط إذا أبلغ المتصفح عن خطأ CORS:
[
{
"corsRuleName": "allowSSNMedia",
"allowedOrigins": ["https://socialstream.ninja"],
"allowedHeaders": ["range"],
"allowedOperations": ["b2_download_file_by_name"],
"exposeHeaders": [
"content-length",
"content-range",
"accept-ranges"
],
"maxAgeSeconds": 3600
}
]
قبل بدء البث
- افتح رابط الوسائط نفسه في نافذة خاصة أو خفية. يجب أن يحمّل الملف مباشرة.
- استخدم صورة لوسائط PNG أو JPG أو WebP أو GIF. استخدم فيديو/تضمين (Video/Embed) لروابط الفيديو أو التضمين.
- فضّل MP3 للصوت، وPNG/WebP/GIF للصور، وMP4 بترميز H.264/AAC لتوافق الفيديو.
- افتح صفحة Flow Actions في OBS بمعرّف الجلسة نفسه المستخدم في Event Flow.
- استخدم لوحة الاختبار في Event Flow، ثم حدّث مصدر المتصفح في OBS مرة واحدة قبل البث الحقيقي.
- الرابط ينزّل الملف بدلًا من تشغيله: يرسل المضيف نوع محتوى غير صحيح أو استجابة مخصصة للتنزيل فقط.
- الملف السحابي محظور: اجعله عامًا وتحقق من أصل CORS وطريقته وترويساته.
- الملف المحلي مفقود: افتح الإجراء في SSApp واستخدم إعادة الربط (Relink).
- الخادم المحلي غير متصل: شغّل SSApp وانسخ رابط Flow Actions المحلي مجددًا إذا تغير المنفذ أو رمز الأمان.
- صفحة Flow Actions المستضافة لا تستطيع تشغيل العنصر المحلي: استبدل رابط OBS بالرابط الذي أنشأه SSApp.
- لا يصل شيء إلى OBS: تأكد من أن رابط Flow Actions وEvent Flow يستخدمان معرّف الجلسة نفسه.