Короткий ответ
Настольное приложение Social Stream может воспроизводить разрешённые локальные файлы без загрузки в интернет. Используйте Выбрать локальный файл в Event Flow, затем скопируйте созданный Локальный URL Flow Actions в OBS.
Расширение Chrome не может самостоятельно отдавать файлы с вашего диска. Используйте Upload или размещённый URL медиа, если дополнительно не запущено поддерживаемое настольное приложение-помощник.
Выберите подходящий способ
Лучше всего для небольшой библиотеки с минимумом настройки.
Рекомендуется, если SSApp, OBS и файлы находятся на одном компьютере.
Лучше всего для большого количества медиа, резервных копий и нескольких компьютеров.
Награда или сообщение запускает действие.
actions.html получает действие.
OBS загружает звук, изображение, GIF или видео.
Вариант 1: встроенная загрузка
- В Event Flow выберите Воспроизвести аудиоклип или Показать медиаоверлей.
- Нажмите Загрузить, выберите файл и завершите загрузку на открывшейся странице.
- Убедитесь, что возвращённый
https://fileuploads.socialstream.ninja/media/...URL появился в действии. - Сохраните поток и держите
actions.html?session=YOUR_SESSIONоткрытым в OBS.
Если сайт загрузки показывает лимит аккаунта 1 ГБ, а ваша библиотека его превысит, используйте локальную папку или облачное хранилище, описанные ниже.
Вариант 2: библиотека на компьютере с OBS
Отдельное настольное приложение включает библиотеку локальных медиа и сервер, принимающий подключения только на этом компьютере. Event Flow хранит стабильный идентификатор медиа вместо пути на диске.
- Запустите отдельное приложение Social Stream и откройте Event Flow.
- Выберите Воспроизвести аудиоклип или Показать медиаоверлей.
- Нажмите Выбрать локальный файл и выберите аудио, изображение, GIF или видео.
- Убедитесь, что действие показывает доступность файла, а локальный сервер работает.
- Нажмите Скопировать локальный URL Flow Actions для OBS.
- Вставьте этот URL в источник «Браузер» OBS, сохраните поток и проверьте действие.
- Используйте Предпросмотр для проверки выбранного файла.
- Если файл перемещён или переименован, Event Flow пометит его как отсутствующий. Нажмите Указать файл заново и укажите новое расположение; существующие потоки продолжат работать.
- Используйте Показать в папке если нужно найти исходный файл.
- Оставляйте SSApp работающим, пока OBS использует локальный URL Flow Actions.
- Не делитесь созданным URL. Он содержит секретный случайный ключ доступа, защищающий локальный сервер.
Используйте созданный локальный 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 или командную строку и выполните эту команду. Оставляйте окно открытым во время трансляции.
Команда 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"
URL Flow Actions для источника «Браузер» OBS
http://127.0.0.1:8765/actions.html?session=YOUR_SESSION_ID
URL медиа для вставки в 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 и используйте также локальные URL медиа:
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 произвольные файлы с вашего диска. Без поддерживаемого моста используйте Загрузить или обычный размещённый URL. Если импортированный поток ссылается на локальные медиа, расширение объяснит, что нужно настольное приложение или мост, вместо незаметного сбоя.
Вариант 3: большая библиотека в интернете
| Провайдер | Подходит для | Важные примечания |
|---|---|---|
| Cloudflare R2 | Лучший общий вариант для публичной библиотеки оповещений. | Сейчас стандартное хранение включает 10 ГБ-месяцев в месяц и бесплатный исходящий интернет-трафик. Для постоянного использования подключите собственный домен; r2.dev ограничен по частоте запросов и предназначен для разработки. |
| Backblaze B2 | Недорогое S3-совместимое хранилище с общедоступными URL файлов. | Сейчас первые 10 ГБ бесплатны; хранение и исходящий трафик сверх включённых объёмов оплачиваются. |
| Amazon S3 или другое S3-совместимое хранилище | Существующие облачные аккаунты и расширенное управление доступом. | Разрешите публичное чтение медиа, задайте правильные типы содержимого и при необходимости добавьте правило CORS только для чтения. |
| GitHub | Несколько небольших общедоступных файлов или редкие загрузки выпусков. | Обычные репозитории не принимают файлы больше 100 МиБ, а опубликованный сайт GitHub Pages ограничен 1 ГБ. Выпуски допускают более крупные файлы, но неудобны как управляемая библиотека медиаоповещений. |
Публичный доступ открыт всем. Любой, кто знает URL объекта, может получить медиафайл. Не загружайте приватные, лицензионные или личные файлы, которыми нельзя делиться.
Настройка Cloudflare R2
- Создайте корзину R2 с классом хранения Standard .
- Загружайте медиа в папки с понятными именами, например
audio/,images/, иvideo/. - В настройках корзины включите публичный доступ. Используйте общедоступный URL разработки только для тестирования, а для регулярных эфиров подключите собственный домен.
- Откройте URL объекта в приватном окне или инкогнито. Он должен загружать файл напрямую, без входа или страницы общего доступа.
- Вставьте прямой HTTPS-адрес в действие Event Flow.
Обычные изображения и аудио обычно загружаются без специальных настроек 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
Сделайте корзину общедоступной, используйте прямой URL файла и добавьте правило только для скачивания, если браузер сообщает об ошибке CORS:
[
{
"corsRuleName": "allowSSNMedia",
"allowedOrigins": ["https://socialstream.ninja"],
"allowedHeaders": ["range"],
"allowedOperations": ["b2_download_file_by_name"],
"exposeHeaders": [
"content-length",
"content-range",
"accept-ranges"
],
"maxAgeSeconds": 3600
}
]
Смотрите документацию Backblaze: официальный справочник правил CORS.
Перед выходом в эфир
- Откройте точный URL медиа в приватном окне или инкогнито. Файл должен загружаться напрямую.
- Используйте Изображение для PNG, JPG, WebP или GIF. Используйте Видео / встраивание для видео или URL встраивания.
- Для совместимости предпочитайте MP3 для звука, PNG/WebP/GIF для изображений и MP4 с H.264/AAC для видео.
- Откройте страницу Flow Actions в OBS с тем же идентификатором сеанса, что и Event Flow.
- Используйте тестовую панель Event Flow, затем один раз обновите источник «Браузер» OBS перед настоящим эфиром.
- URL скачивает файл вместо воспроизведения: хост отправляет неверный тип содержимого или ответ только для скачивания.
- Облачный файл заблокирован: сделайте его общедоступным и проверьте источник, метод и заголовки CORS.
- Локальный файл отсутствует: откройте действие в SSApp и используйте Указать файл заново.
- Локальный сервер отключён: запустите SSApp и снова скопируйте локальный URL Flow Actions, если порт или токен безопасности изменился.
- Размещённая страница Flow Actions не воспроизводит локальный файл: замените URL OBS ссылкой, созданной SSApp.
- В OBS ничего не поступает: убедитесь, что URL Flow Actions и Event Flow используют одинаковый идентификатор сеанса.