Медиафайлы для Event Flow

Используйте собственные звуки, изображения, GIF и видео в OBS.

Короткий ответ

Настольное приложение Social Stream может воспроизводить разрешённые локальные файлы без загрузки в интернет. Используйте Выбрать локальный файл в Event Flow, затем скопируйте созданный Локальный URL Flow Actions в OBS.

Расширение Chrome не может самостоятельно отдавать файлы с вашего диска. Используйте Upload или размещённый URL медиа, если дополнительно не запущено поддерживаемое настольное приложение-помощник.

Выберите подходящий способ

Самый быстрый вариант Встроенная загрузка

Лучше всего для небольшой библиотеки с минимумом настройки.

Большие или общие библиотеки Облачное объектное хранилище

Лучше всего для большого количества медиа, резервных копий и нескольких компьютеров.

1Event Flow

Награда или сообщение запускает действие.

2Flow Actions

actions.html получает действие.

3URL медиа

OBS загружает звук, изображение, GIF или видео.

Вариант 1: встроенная загрузка

  1. В Event Flow выберите Воспроизвести аудиоклип или Показать медиаоверлей.
  2. Нажмите Загрузить, выберите файл и завершите загрузку на открывшейся странице.
  3. Убедитесь, что возвращённый https://fileuploads.socialstream.ninja/media/... URL появился в действии.
  4. Сохраните поток и держите actions.html?session=YOUR_SESSION открытым в OBS.

Если сайт загрузки показывает лимит аккаунта 1 ГБ, а ваша библиотека его превысит, используйте локальную папку или облачное хранилище, описанные ниже.

Свойства действия Display Media Overlay в Event Flow с полем Media URL и кнопкой Upload
Кнопка Upload создаёт размещённый URL. Она не выбирает локальный файл для воспроизведения Event Flow.

Вариант 2: библиотека на компьютере с OBS

Отдельное настольное приложение включает библиотеку локальных медиа и сервер, принимающий подключения только на этом компьютере. Event Flow хранит стабильный идентификатор медиа вместо пути на диске.

  1. Запустите отдельное приложение Social Stream и откройте Event Flow.
  2. Выберите Воспроизвести аудиоклип или Показать медиаоверлей.
  3. Нажмите Выбрать локальный файл и выберите аудио, изображение, GIF или видео.
  4. Убедитесь, что действие показывает доступность файла, а локальный сервер работает.
  5. Нажмите Скопировать локальный URL Flow Actions для OBS.
  6. Вставьте этот 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-сервера

  1. Установите Python, если он ещё не установлен.
  2. Откройте 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
Источник «Браузер» OBS
127.0.0.1:8765/actions.html
Локальные медиа
127.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

  1. Создайте корзину R2 с классом хранения Standard .
  2. Загружайте медиа в папки с понятными именами, например audio/, images/, и video/.
  3. В настройках корзины включите публичный доступ. Используйте общедоступный URL разработки только для тестирования, а для регулярных эфиров подключите собственный домен.
  4. Откройте URL объекта в приватном окне или инкогнито. Он должен загружать файл напрямую, без входа или страницы общего доступа.
  5. Вставьте прямой 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.

Перед выходом в эфир

  1. Откройте точный URL медиа в приватном окне или инкогнито. Файл должен загружаться напрямую.
  2. Используйте Изображение для PNG, JPG, WebP или GIF. Используйте Видео / встраивание для видео или URL встраивания.
  3. Для совместимости предпочитайте MP3 для звука, PNG/WebP/GIF для изображений и MP4 с H.264/AAC для видео.
  4. Откройте страницу Flow Actions в OBS с тем же идентификатором сеанса, что и Event Flow.
  5. Используйте тестовую панель Event Flow, затем один раз обновите источник «Браузер» OBS перед настоящим эфиром.
  • URL скачивает файл вместо воспроизведения: хост отправляет неверный тип содержимого или ответ только для скачивания.
  • Облачный файл заблокирован: сделайте его общедоступным и проверьте источник, метод и заголовки CORS.
  • Локальный файл отсутствует: откройте действие в SSApp и используйте Указать файл заново.
  • Локальный сервер отключён: запустите SSApp и снова скопируйте локальный URL Flow Actions, если порт или токен безопасности изменился.
  • Размещённая страница Flow Actions не воспроизводит локальный файл: замените URL OBS ссылкой, созданной SSApp.
  • В OBS ничего не поступает: убедитесь, что URL Flow Actions и Event Flow используют одинаковый идентификатор сеанса.