Как добавить чат на экран во время трансляции на youtube

Как добавить отображение сообщений зрителей на экран во время трансляции? С таким вопросом рано или поздно сталкивается любой стример на YOUTUBE. Лучше всего для отображения чата на экране использовать специализированную программу, но к такому решению надо подходить постепенно. Однако, не  все программы одинаково полезны, а некоторые из них вообще распространяются на платной основе. Описанный ниже способ позволит избежать возни с дополнительными программами, но потребует некоторой технической подготовки. Впрочем, если многоуважаемый читатель смог настроить трансляцию, то разобраться с парой дополнительных кнопок не составит труда.

Недавно Youtube обновил дизайн, если у вас не работает приведенный ниже CSS, то обновления можно взять по ссылке www.otrip.ru/2017/10/chat-obs-stream-youtube_new

Для начала небольшое техническое отступление… в качестве примера будет рассмотрена настройка отображения чата во время трансляции через программу OBS Studio. Программу можно бесплатно скачать с сайта разработчика Open Broadcaster Software / obsproject.com. Настройка XSplit Broadcaster осуществляется по аналогии. Если используете другие аналоги, то убедитесь в возможности добавить отображения окна браузера в сцене (Nvidia ShadowPlay и Action! пока не имеют таких функций).

Итак приступим, перед началом стрима или трансляции в используемую сцену необходимо добавить элемент BrowserSource (CLR Browser). В списке сцен слева необходимо выбрать нужную сцену. В окне “Источники” добавляем новый и выбираем из списка “BrowserSource”. Добавить источник можно кликнув мышью на кнопку с символом “плюс” (1) или нажать правой кнопкой мыши и выбрать нужный источник. В появившемся диалоговом окне будет предложено “создать новый” или “добавить существующий”, выбрав из предложенного списка.

При создании нового источника или редактировании существующего открывается окно изменения свойств элемента BrowserSource. Здесь необходимо указать ссылку на источник URL (3), ширину и высоту области отображения (4), дополнительный CSS стиль (5) а также отметить две галочки (6) “отключать если источник невидим” и “обновлять браузер при переключении сцены”. Значение в поле FPS по умолчанию равно 30, но для меньшей нагрузки на программу это значение можно установить в промежутке от 5 до 15.

Теперь разберем немного подробней. В качестве ссылки на источник URL (3) необходимо использовать ссылку окна, открывающего при нажатии “открыть чат в новом окне” (скопировать адрес в открывшемся окне).

Для удобства использования в качестве ссылки источника можно использовать следующую строку https://www.youtube.com/live_chat?is_popout=1&v=ИДЕНТИФИКАТОР предварительно заменив слово ИДЕНТИФИКАТОР на уникальный идентификатор (ID) трансляции. Скопировать ID можно либо из адресной строки браузера после того, как открыли страницу с трансляцией или в блоке “поделиться” ниже окна с видео. В рассматриваем примере идентификатор трансляции будет выглядеть следующим образом UQpTQBrSg-4. Необходимо отметить, что у вашей трансляции этот идентификатор будет другой. Для каждой новой трансляции необходимо указывать новый идентификатор. Также, обращаю ваше внимание, что это не ключ трансляции, который вы используете в настройках OBS.

Дополнительный стиль CSS можно найти в конце статьи или из текстового файла по ссылке www.otrip.ru/uploads/2017/05/css.txt

После завершения редактирования BrowserSource он появится в окне предварительного просмотра и в списке источников текущей сцены. Далее можно изменить позицию элемента на экране, где он будет отображаться во время трансляции. Для этого элемент можно перетащить мышкой по экрану предварительного просмотра (7) или задать значения вручную используя фильтры и дополнительные настройки (8). Для вызова дополнительных настроек необходимо нажать правой кнопкой мыши на название элемента в сцене.

Дополнительный CSS стиль (5)

::-webkit-scrollbar,
.yt-live-chat-renderer-0 yt-live-chat-header-renderer.yt-live-chat-renderer,
.yt-live-chat-message-input-renderer-0,
.yt-live-chat-header-renderer-0,
#live-comments-controls,
.live-chat-widget .accent-bar,
.yt-live-chat-mode-change-message-renderer,
#action-panel
{
display: none;
}

body
{
background-color: rgba(0,0,0,0);
margin: 0 auto;
overflow: hidden !important;
color: #fff !important;
width: 100%;
font-family: Roboto,arial,sans-serif,Verdana;
}

#item-scroller{
overflow: hidden !important;
}

@-webkit-keyframes FadeOut
{
0%, 100% {
opacity: 0;
}
0%, 95% {
opacity: 1;
}
}

.yt-live-chat-message-renderer-0
{
background: none;
}

#contents.yt-live-chat-app > .yt-live-chat-app,
.live-chat-widget #comments-scroller
{
border: none;
-webkit-mask-image: -webkit-gradient(linear, left 10%, left top, from(rgba(0,0,0,1)), to(rgba(0,0,0,0)));
}

.yt-live-chat-text-message-renderer-0 #author-name.yt-live-chat-text-message-renderer,
.live-chat-widget .comment .author a
{
font-size: 12pt;
color: #c6b281 !important;
text-shadow: -1px 0 #333, 0 1px #333, 1px 0 #333, 0 -1px #333;
}

.yt-live-chat-text-message-renderer-0 #author-name.yt-live-chat-text-message-renderer::after,
.live-chat-widget .comment .author a::after
{
content: '\A';
white-space: pre;
}

.yt-live-chat-text-message-renderer-0 #message.yt-live-chat-text-message-renderer,
.live-chat-widget .comment-text
{
font-size: 12pt;
color: #eaeaea;
text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black;
}

.yt-live-chat-text-message-renderer-0,
.live-chat-page
{
background: rgba(0,0,0,0);
}

.yt-live-chat-message-renderer-0
{
display: none;
}

.yt-live-chat-text-message-renderer-0,
.live-chat-widget .comment
{
width: 100%;
background: rgba(0,0,0,0.5) !important;
margin-bottom: 1px;
-webkit-animation-name: FadeOut;
-webkit-animation-timing-function: linear;
-webkit-animation-duration: 90s;
-webkit-animation-fill-mode: both;
}

.yt-live-chat-text-message-renderer-0
{
background: rgba(0,0,0,0.5) !important;
padding: 5px;
}

.yt-live-chat-text-message-renderer-0 #author-photo.yt-live-chat-text-message-renderer
{
margin-right: 7px;
}

#content
{
margin-right: 10px;
}

.yt-live-chat-moderation-message-renderer-0
{
background: rgba(50,0,0,0.5) !important;
}

.yt-live-chat-renderer-0
{
background: none;
}

Подписаться
Уведомить о
guest

7 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Konstantin V.Udovichenko
Konstantin V.Udovichenko
17.07.2017 15:28

Строка -webkit-animation-duration: 90s; отвечает за задержку перед исчезновением сообщения с экрана. По умолчанию прописано, что сообщение отображается в чате 90 секунд и потом исчезает.

Если необходимо сохранять все сообщения и не давать им исчезать, то просто уберите из кода строки:
-webkit-animation-duration: 90s;
-webkit-animation-name: FadeOut;

Konstantin V.Udovichenko
Konstantin V.Udovichenko
21.07.2017 13:14

Для затемнения верхней части окна (применительно к другим чатам):
body {
border: none;
-webkit-mask-image: -webkit-gradient(linear, left 10%, left top, from(rgba(0,0,0,1)), to(rgba(0,0,0,0)));
}

Felix
Felix
22.09.2017 16:59

Фон непрозрачный почему-то(

Konstantin V.Udovichenko
Konstantin V.Udovichenko
Ответить на  Felix
22.10.2017 13:50

Сломалось, после обновления youtube. Вот новый год http://www.otrip.ru/11055

Felix
Felix
Ответить на  Konstantin V.Udovichenko
22.10.2017 15:15

О, класс, большое спасибо!

Hell
Hell
04.10.2017 02:58

Сломался CSS стиль (( было прекрасно если бы вы обновили его

Konstantin V.Udovichenko
Konstantin V.Udovichenko
Ответить на  Hell
22.10.2017 13:49