В этом браузере невозможно проводить прямые трансляции
6 марта 2022 TikTok запретил вести прямые трансляции и загружать новый контент пользователям из России. В этой статье мы рассмотрим способы обойти запрет на загрузку нового контента в ТикТок пользователей РФ.
Запрет на публикацию нового контента в одной из самых крупных социальных сетей - это огромный удар по индустрии арбитража трафика.
Для того, чтобы иметь возможность снова загружать контент в социальную сеть TikTok необходимо исключить любые факторы, которые могут позволить идентифицировать местоположение пользователя. Ниже мы рассмотрим инструкции для обхода блокировки на разных платформах.
Браузер
Самый простой способ получить доступ к публикации нового контента и проведения онлайн-трансляций TikTok — это использовать веб-версию TikTok прямо в браузере. Для этого в первую очередь необходимо изменить свой IP-адрес на IP-адрес другой страны при помощи VPN. Для того чтобы не иметь проблем с антифрод-защитой TikTok — лучше использовать собственный VPN-сервер, а не массовые решения (при которых один ip-адрес будет использоваться сотнями пользователей).
Для проведения прямых трансляций — нажмите на кнопку «GO LIVE» после чего вы получите настройки для организации RTMP-потока вашей трансляции. С помощью адреса и ключа вашей трансляции, вы можете организовать её, как при помощи профессионального ПО (например, OBS), так и при помощи приложения для смартфона.
Android
Современные смартфоны имеют множество маркеров, которые позволяют определить реальный регион пользователя, поэтому самым надёжным способом обойти блокировку является полная очистка аппарата от подобных маркеров. Для того, чтобы иметь возможность обойти блокировку TikTok на Android:
Настройте VPN-сервер, как описано выше.
Достаньте из телефона SIM-карту, т.к. по вашему номеру телефона можно определить ваш реальный регион.
Совершите сброс аппарата до заводских настроек и не авторизовывайтесь в ваш Google-аккаунт.
При первоначальной настройке устройства выберите другой язык (например, English), другую страну (например, United States), другой часовой пояс (например, New York)
При настройке VPN-сервера, согласно инструкции, опубликованной выше вы создаете OVPN-файл (профиль для подключения), этот файл необходимо загрузить на телефон (например, подключив телефон к ПК с помощью USB-кабеля). Откройте приложение OpenVPN на вашем смартфоне и выберите данный OVPN-профиль. Подключитесь к WiFi и активируйте VPN-соединение.
После этого, когда ваш смартфон подключен к VPN-серверу необходимо открыть Google Play и создать Google-аккаунт. Сделать это необходимо именно в этот момент, т.к. информация о вашем Google-аккаунте также может содержать данные о вашем реально регионе.
Теперь вы можете скачать приложение TikTok в Google Play и иметь доступ к публикации нового контента и организации прямых трансляций.
Ровно по той же причине, как и в случае с Android-смартфонами, для того чтобы иметь доступ к публикации нового контента в TikTok вам потребуется избавиться от маркеров, которые могут выдать ваше реально расположение, хранящихся на устройстве. Для того, чтобы иметь возможность обойти блокировку TikTok на смартфонах Apple:
Настройте VPN-сервер, как описано выше.
Достаньте из телефона SIM-карту, т.к. по вашему номеру телефона можно определить ваш реальный регион.
Совершите сброс аппарата до заводских настроек и создайте новый профиль iCloud.
При первоначальной настройке устройства выберите другой язык (например, English), другую страну (например, United States), другой часовой пояс (например, New York).
Установите приложение OpenVPN из AppStore.
При настройке VPN-сервера, согласно инструкции, опубликованной выше вы создаете OVPN-файл (профиль для подключения), этот файл необходимо загрузить на телефон (например, отправив его себе в мессенджере). Откройте OVPN-файл в приложении OpenVPN на вашем смартфоне и активируйте OVPN-профиль.
Теперь вы можете скачать приложение TikTok в AppSotre и иметь доступ к публикации нового контента и организации прямых трансляций.
Важно
Контент, опубликованный данным образом НЕ БУДЕТ доступен на территории РФ. Данное решение подойдет только для тех, кто работает на зарубежную аудиторию.
Если во время трансляции у вас возникнут какие-либо проблемы, следуйте рекомендациям, которые приведены в этой статье. Кроме того, вы всегда можете задать интересующий вопрос на нашем форуме. Возможно также, что ваша проблема есть в списке уже известных нам.
Что делать, если при запуске видеокодера возникает ошибка
Инструкция для видеокодеров сторонних компаний
Чтобы устранить проблему, создайте новый ключ на Панели управления трансляциями и обновите настройки видеокодера. Вот как это сделать:
- Откройте Творческую студию YouTube.
- Чтобы перейти к Панели управления трансляциями, в правом верхнем углу нажмите СоздатьНачать трансляцию.
- В меню слева нажмите Трансляции.
- Если вы собираетесь запустить трансляцию на панели впервые, задайте необходимые параметры и нажмите Создать трансляцию.
- В нижнем правом углу вы увидите ключ трансляции. Скопируйте его в видеокодер.
- Чтобы начать трансляцию, запустите видеокодер.
Инструкция для стороннего ПО без ключа трансляции
Возможно, версия программы или сервиса, которую вы используете для проведения трансляций, не подходит для работы с YouTube. Чтобы устранить проблему, обратитесь в службу поддержки компании-разработчика.
Выясните, сколько пользователей столкнулось с проблемой
Чтобы определить, насколько серьезной является неполадка, проверьте количество пользователей, которые сообщили о ней. Информацию об этом можно посмотреть в статистике по трансляции.
- Вероятнее всего, проблема связана с компьютером пользователя или с его подключением к Интернету.
- Вы можете предложить этому пользователю перейти на другой компьютер или подключиться к другой сети.
- Попробуйте выполнить те же действия, что и сообщивший о неполадке пользователь, и посмотрите, появится ли подобная ошибка у вас.
- Скорее всего, неполадки вызваны проблемами на линии.
- Необходимо проверить состояние сети и убедиться, что она позволяет просматривать прямые трансляции. Учтите, что ее пропускная способность должна увеличиваться пропорционально количеству компьютеров, на которых зрители смотрят трансляцию.
- Попробуйте выполнить те же действия, что и сообщившие о неполадке пользователи, и посмотрите, появится ли подобная ошибка у вас.
Проверьте, правильно ли настроен видеокодер
Видеокодер – это специальная программа или приложение, предназначенное для сжатия и передачи потокового контента. Чтобы устранить неполадки, связанные с видеокодером, следуйте инструкциям ниже.
Сообщите о проблеме
Если устранить неполадку самостоятельно не удается, сообщите о ней нашим специалистам.
Последнее время в качестве хобби снимаю на видео лекции знакомого психолога. Отснятый материал монтирую и публикую на своём сайте. Месяц назад я загорелся идеей организовать круглосуточную трансляцию этих лекций на YouTube в режиме 24/7. Этакий тематический «телеканал», посвященный личностному росту.
Как сделать обычную трансляцию я знаю. А вот как сделать так, чтобы это была трансляция именно видео-файлов? Чтобы она шла 24/7, была гибкой, максимально автономной и при этом никак не зависела от моего домашнего компьютера. Это мне и предстояло выяснить.
На поиск решения ушло несколько дней. Я изучил множество форумов и различных мануалов без которых моя трансляция просто бы не получилась. И теперь, когда шалость удалась, я чувствую потребность поделиться своим решением. Так появилась эта статья.
Если коротко, то итоговое решение получилось следующим: VPS + ffmeg + bash-скрипт. Под катом я описываю проделанные шаги и рассказываю про «подводные камни», которые обнаружились при организации трансляции.
Шаг 1 – откуда будет идти трансляция?
В самом начале нужно было определиться откуда будет вестись трансляция, где будет её источник. Самое первое, что приходило в голову – с домашнего компьютера. Собрать видео в плейлист и запустить их воспроизведение в любом видеоплеере. Затем захватить изображение с экрана и транслировать его на YouTube. Но я почти сразу отмёл этот вариант т.к. для его реализации нужно держать домашний компьютер постоянно включенным, а это шум от кулеров даже ночью и увеличенное потребление электроэнергии (+100-150 кВт*ч каждый месяц). И получается, что домашним компьютером на время трансляции пользоваться будет нельзя т.к. любое шевеление мышкой будет видно в трансляции.
Дальше я стал смотреть в сторону облачных сервисов. Искал готовый сервис, куда бы можно было загрузить свои видео или, например, вставить ссылки на видео с YouTube и это бы все упаковывалось в одну нон-стоп трансляцию. Но ничего подходящего не нашел. Возможно плохо искал. Единственное что-то ± подходящее под функционал – это restream.io, сервис, который помогает вести одновременную трансляцию на несколько платформ. У них вроде можно загружать свои видео. Но этот сервис создавался совсем для других целей и они рассчитывают, что трансляция будет длиться всего пару часов. Думаю, что если через этот сервис получилось бы организовать круглосуточную трансляцию, то это бы выстрелило в десятки, а то и сотни долларов в месяц. А трансляцию все же хотелось организовать либо бесплатно, либо с минимальными финансовыми вложениями.
Стало понятно, что под трансляцию нужно или отдельное устройство или вообще отдельный компьютер. Думал в сторону чего-нибудь вроде Raspberri Pi. А чего? Кулера у него нет. Записал видео на флешку, воткнул Ethernet-кабель и пускай лежит себе где-нибудь в укромном месте, трансляцию ведёт. Вариант. Но ни самой платы, ни опыта работы с ней у меня не было, поэтому от этого варианта я тоже отказался.
В итоге я наткнулся на некое обсуждение, где обсуждали создание собственного сервера трансляции. Это было не совсем то, что я искал, но основную мысль я уловил – можно же использовать сервер! В том обсуждении предлагали использовать связку VPS + nginx + OBS. Стало понятно, что эта связка может подойти и мне. Смущало лишь то, что я никогда не администрировал сервера и мне казалось, что свой выделенный сервер – это заморочено и дорого. Решил узнать сколько будет стоить арендовать сервер в минимальной комплектации и был приятно удивлен.
Цены указаны в белорусских рублях и это просто крохи. Для понимания, 8 белорусских рублей – это где-то 3.5 доллара или 240 российских рублей. За месяц использования полноценного компьютера, который включен 24/7 и имеет быстрый доступ в Интернет. Почему-то это открытие стало очень радостным для меня и я несколько дней ходил жутко довольный словно ребенок, который открыл для себя космические ракеты :)
К слову, я воспользовался предложением первого же сайта, который выдал мне Google по запросу «аренда VPS». Возможно есть ещё более бюджетные решения, но эта цена меня устроила и дальше я не искал.
При создании сервера можно выбрать операционную систему, под управлением которой он будет работать. На любой из перечисленных систем можно организовать трансляцию и делать выбор стоит исходя из ваших предпочтений и финансовых возможностей (за сервер с Windows просят дополнительную плату). Я выбрал CentOS. Просто потому что у меня раньше был небольшой опыт работы с ней.
Шаг 2 – настройка сервера
Первое, что нужно после создания сервера – это подключиться к нему по SSH. По-началу я использовал PuTTy, но потом стал использовать приложение Secure Shell App, которое запускается в Google Chrome. Так мне оказалось удобнее.
Дальше я изменил имя хоста, настроил синхронизацию времени на сервере, обновил систему, возился с iptables… и сделал еще куча вещей, но не потому что это было необходимо. Просто мне интересно было настраивать сервер и у меня это получалось. Люблю когда получается :)
А вот те шаги, которые нужно сделать:
- Подключить репозиторий EPEL.
- Поднять FTP-сервер (я выбрал vsftp).
- Установить ffmpeg.
Итак, как я уже писал раньше, мне нужна была связка VPS + nginx + OBS. VPS – готово. Но вот по остальным пунктам стали возникать вопросы. OBS – это программа для проведения трансляций, Open Broadcaster Software. И оно работает только с потоками т.е. например, берет изображение с веб-камеры и его транслирует. Или запись экрана. Или уже идущую трансляцию перенаправляет на другой сайт. А у меня нет потока, у меня есть только набор видео-файлов, который нужно сделать потоком.
Стал копать в эту сторону и наткнулся на ffmpeg. FFmpeg – это набор свободных библиотек с открытым исходным кодом, которые позволяют записывать, конвертировать и передавать цифровые аудио- и видеозаписи в различных форматах.
И я очень удивился сколько всего ffmpeg может. Хочешь – вытянет звук из видео. Хочешь – вырежет фрагмент видео без перекодирования. Хочешь – сконвертирует из одного формата в другой. И много-много чего ещё. Вплоть до того, что ему можно указать файл, он его преобразует в поток и сам передаст на YouTube. Всё, цепочка собрана. Осталось только доработать нюансы.
Шаг 3 – настройка трансляции
Создаём трансляцию на YouTube. На этом этапе нам нужна только ссылка и ключ трансляции. На скриншоте ниже они выделены красным.
Далее загружаем на сервер видео-файлы, которые планируем транслировать. Собственно, FTP только для этого этапа и нужен. Если у вас есть другой удобный способ загрузки файлов на сервер, то FTP-сервер можно не поднимать.
Передаём поток на YouTube. Для старта вещания необходимо запустить ffmpeg c несколькими атрибутами. Вот так выглядит самая короткая команда, которая у меня получилась:
-re – указывает, что файл необходимо конвертировать в поток.
-i – указывает, какой файл необходимо воспроизводить. Важно, чтобы команда запускалась из того же каталога, где расположен сам видео-файл. Иначе стоит указывать абсолютную ссылку на файл, вроде /usr/media/lecture1.mp4 .
-f – задает формат выходного файла. В моём случае получается, что ffmpeg «на лету» конвертирует мой файл из mp4 в flv.
И в конце указываем данные, которые мы взяли на YouTube на странице настройки трансляции т.е. адрес, на который нужно передавать данные, и ключ трансляции, чтобы трансляция отобразилась именно на вашем канале.
Если вы всё сделали правильно, то после запуска этой команды, YouTube увидит передаваемый поток. Для запуска трансляции вам останется нажать кнопку «Начать трансляцию» в самом YouTube.
Шаг 4 – добавляем автономность
Поздравляю! Теперь вы знаете как запустить трансляцию из видео-файла. Но этого недостаточно для круглосуточной трансляции. Важно, чтобы после окончания воспроизведения первого видео, сразу же запускалось следующее, а когда покажутся все видео, воспроизведение начиналось сначала.
Я придумал следующий вариант: создать .sh-файл, в котором прописал по команде на каждый видео-файл и в самом конце указал команду на повторный запуск этого же скрипта. Получилась этакая рекурсия:
И, да, это сработало. Я, довольный собой, запустил тестовую трансляцию и пошёл спать.
Утром меня ожидал неприятный сюрприз. Оказалось, что трансляция шла всего пару минут и закончилась практически сразу как я выключил свой компьютер. Расследование показало, что команды, запущенные таким образом, выполняются пока пользователь авторизован на сервере. Как только я отключился, выполнение запущенных мной команд прервалось. Чтобы такого не происходило, достаточно перед командой bash дописать команду nohup . Это позволит запущенному процессу выполняться независимо от вашего присутствия.
Итоговая минимальная версия скрипта выглядит так:
Где start.sh – это файл, в котором записан этот скрипт. И этот файл должен располагаться в одном каталоге с видео-файлами.
Добавление знака доллара в конце позволяет запускать процесс в фоновом режиме, чтобы можно было дальше пользоваться консолью не прерывая вещание.
Из бонусов получились следующие плюшки:
- Можно вручную переключать воспроизведение файлов. Для этого нужно «убить» выполняющийся в текущий момент процесс ffmpeg. После этого автоматически запустится воспроизведение следующего файла из списка.
- Новые видео можно добавлять в трансляцию без остановки вещания. Просто загружаете видео на сервер, дописываете в скрипте команду на запуск этого файла, сохраняете. И всё. На следующем круге воспроизведения новый файл уже будет транслироваться наравне со старыми файлами.
Шаг 5 – донастраиваем ffmpeg
На этом, в принципе, можно было остановиться. Но мне хотелось сделать трансляцию чуть более дружелюбной для зрителей.
Допустим, человек зашел на трансляцию, начал смотреть, ему понравилось и он захотел посмотреть эту лекцию с начала, а трансляция не предусматривает перемотку. Для просмотра лекции с начала человеку нужно будет перейти на мой сайт и получить запись интересующей лекции. А как понять какая лекция его интересует? На сайте уже 16 лекций и каждую неделю их становится только больше. Думаю, что даже я, кто снимал и монтировал все эти лекции, не смогу по случайному фрагменту определить какая это лекция. Поэтому нужно, чтобы каждая лекция была как-то обозначена.
Вариант добавить надписи в исходные видео-файлы в программе для монтажа меня не устраивал. Нужно было сделать так, чтобы использовались оригинальные файлы. Чтобы поддержка трансляции требовала от меня как можно меньше телодвижений.
Оказалось, что и в этом мне сможет помочь ffmpeg. У него есть специальный атрибут -vf , который позволяет наносить текст поверх видео. Чтобы добавить текст на видео, необходимо в команду добавить следующий фрагмент:
fontfile= – ссылка на файл шрифта. Без этого надпись на видео не добавляется. Проще всего файл шрифта положить в одну папку с видео. Или нужно будет указать полный путь к файлу.
text= – собственно, сам текст, который необходимо разместить поверх видео.
fontsize= – размер шрифта в пикселях.
fontcolor= – цвет шрифта.
borderw= – толщина контура вокруг текста в пикселях (у меня белый текст с черным контуром толщиной в 1 пиксель).
bordercolor= – цвет контура.
x= и y= – координаты текста. Точка 0;0 находится в левом верхнем углу. У меня координаты подобраны таким образом, чтобы текст размещался в левом нижнем углу при разрешении видео 1280х720 пикселей.
Выглядит это вот так:
Шаг 6 – определяемся с качеством трансляции
Всё, трансляция готова. FFmpeg вещает, файлы воспроизводятся, моё присутствие для трансляции не нужно. Даже каждая лекция подписана. Вроде всё.
Но всплыл ещё один нюанс – я выбрал минимальную конфигурацию сервера и он не вытягивал трансляцию. Конфигурация сервера: 1 ядро (вроде 2.2 ГГц), 1 гигабайт оперативной памяти, SSD на 25 Гб. Оперативной памяти хватало, а вот процессор практически наглухо уходил в загрузку на 100% (а временами даже в 102-103% :) Это приводило к тому, что трансляция раз в несколько секунд подвисала. Некрасиво.
Можно было просто взять более дорогую конфигурацию с двумя ядрами, благо, что с облачными технологиями смена конфигурации сервера происходит нажатием пары кнопок. Но мне хотелось уместиться на мощностях минимальной конфигурации. Стал изучать документацию ffmpeg и да, там также есть настройки, которые позволяют регулировать нагрузку на систему.
Высокое качество изображения может быть достигнуто двумя путями: либо высокой нагрузкой на процессор, либо большим исходящим трафиком. Получается, чем больше нагрузку на себя может взять процессор, тем меньше нужна будет пропускная способность канала. Или можно сильно не нагружать процессор, но тогда нужен будет широкий канал с большим запасом по трафику. Если же есть ограничения и по процессору, и по размеру исходящего канала/трафику, то придется снижать качество картинки, чтобы трансляция шла без рывков.
Моему серверу доступен канал шириной в 10 Мбит/с. Такой ширины прям с запасом. Но есть ограничение по трафику – 1 ТБ в месяц. Поэтому, чтобы уложиться в ограничения по трафику, мой исходящий поток не должен превышать ~300 Кб в секунду т.е. битрейт исходящего потока должен быть не более 2,5 Мбит/с. YouTube, кстати, как раз и рекомендует вести трансляции в таком битрейте.
Для регуляции нагрузки на систему ffmpeg использует разные подходы. Хорошо об этом расписано здесь. Я в итоге использовал два атрибута: -crf и -preset .
Constant Rate Factor (CRF) – это коэффициент, благодаря которому можно регулировать качество картинки. CRF может иметь значения от 0 до 51, где 0 – качество исходного файла, 51 – наихудшее возможное качество. Рекомендуется использовать значения от 17 до 28, по умолчанию стоит 23. При коэффициенте 17 видео визуально будет идентично исходному, но технически таким являться не будет. Также в документации указано, что размер итогового видео в зависимости от указанного CRF меняется экспоненциально т.е. увеличение коэффициента на 6 пунктов приведет к удвоению битрейта исходящего видео.
Если с помощью CRF можно подобрать «вес» исходящей картинки, то с помощью пресетов (-preset) можно определить насколько сильно будет загружен процессор. Параметры у этого атрибута есть следующие:
- ultrafast
- superfast
- veryfast
- faster
- fast
- medium – значение по умолчанию
- slow
- slower
- veryslow
Я сначала подобрал пресет, который был в принципе «по зубам» моему процессору, а затем более тонко подобрал нагрузку с помощью CRF. В моём случае подошел пресет fast , а для crf я остановился на значении 24.
Заключение
На этом всё. Итоговая команда для запуска трансляции у меня получилась такой:
Здесь осталось только два неописанных момента:
1) -c:v libx264 – указание конкретного кодека для работы с исходным файлом.
2) -g 3 – явное указание количества ключевых кадров. В этом случае указано, что каждый третий кадр должен быть ключевым. Стандартное значение то ли на 5, то ли на 8, но YouTube ругается, просит не менее 3.
Какого качества получилась трансляция можно посмотреть здесь.
Нагрузка на сервер получилась следующая:
Исходя из данных мониторинга, видно, что нагрузка на процессор колеблется в рамках от 70% до 95% и за неделю трансляция ни разу не уперлась в 100%. Значит, с такими настройками процессора хватает.
По загрузке диска могу сказать, что он почти не нагружен и для трансляции вполне должно хватить и обычного HDD.
А вот количество исходящего трафика меня беспокоит. Получается, что мой исходящий поток колеблется от 450 до 650 Кбайт в секунду. За месяц это составит порядка 1,8 терабайт. Возможно придется докупать трафик или все же перейти на конфигурацию с двумя ядрами т.к. качество картинки не хотелось бы снижать.
Как итог, скажу, что настройка такой трансляции с нуля занимает порядка 1-2 часов. Причем большую часть времени займёт загрузка видео на сервер.
Как маркетинговый инструмент запуск такой трансляции себя не оправдал. Возможно, если накрутить просмотры, чтобы алгоритмы YouTube подхватили эту трансляцию и стали активно показывать её в рекомендациях, тогда что-то бы и получилось. В моём же случае за 16 дней непрерывной трансляции её посмотрели 58 раз.
Ну ничего. Трансляция гармонично вписалась на главной странице моего сайта. Получилась этакая возможность быстро составить своё мнение о лекторе и самих лекциях.
И ещё один момент. Важно, чтобы трансляция не нарушала ничьих авторских прав иначе её заблокируют. Я за свою трансляцию спокоен т.к. музыкальные вставки я специально выбирал со свободным использованием, а автор контента сидит за соседним компьютером и весьма не против того, чтобы я использовал её контент :)
Но если у вас в трансляции где-то фоном играет радио, или вы при монтаже использовали любимый трек, или взяли видеоряд из популярного музыкального клипа, сериала или фильма – тогда ваша трансляция в зоне риска. Также важно, чтобы трансляция несла хотя бы минимальную смысловую нагрузку, иначе её могут заблокировать как спамерскую.
На этом у меня всё. Надеюсь этот мануал сослужит кому-нибудь хорошую службу. Ну а если вам есть что добавить – пишите, с удовольствием почитаю дополнения и уточнения к статье.
В данной статье мы расскажем как работают трансляции Youtube Live и покажем как человек с базовыми знаниями JavaScript может закодить трансляцию на Youtube Live с HTML страницы с использованием технологии WebRTC.
Для работы категорически потребуются следующие знания и умения:
1) Базовые знания JavaScript / HTML
2) Умение работать в командной строке Linux.
3) Прямые руки.
Трансляции в Youtube Live
Youtube дает возможность проводить трансляции в реальном времени. Т.е. не просто залить видеоролик, а создать полноценную живую трансляцию себя, своего кота мурзика или иного ответственного мероприятия.
Телестудия Youtube располагается на этой странице и в браузере Google Chrome выглядит так:
Для того чтобы сделать вещания доступными, нужно нажать кнопку Enable live streaming и пройти верификацию из двух шагов. Далее кнопка превращается в Create live event и можно начинать вещание.
Нажимаем Go live now чтобы перейти непосредственно к вещанию.
Youtube открывает Google Hangouts окно, через которое проводятся все манипуляции с видеопотоком.
Таким образом, мы создали живую трансляцию на Youtube Live, стартовали вещание, остановили вещание. Получили ролик с записью на Youtube. Трансляция проходила средствами Google Hangouts.
Все здорово, но судя по IT новостям, Гугл закрывает API Hangouts для разработки видео приложений с 25 апреля 2017 года. Для разработчиков это означает, что с помощью API Hangouts уже нельзя будет сделать свое кастомное приложение, которое стримит видео, в том числе и на Youtube.
Трансляция с RTMP live encoder
Далее рассмотрим альтернативный вариант создания трансляции, не привязанный к Google Hangouts и позволяющий транслировать видеопоток со специализированного устройства видеозахвата (RTMP Live Encoder).
Если кликнуть по кнопке Stream Now, попадаем в знакомый интерфейс создания трансляции.
Наиболее важная часть — это настройки кодировщика:
Как видите, здесь всего два поля:
1) Server URL
2) Stream name / key
Если нажать кнопку Reveal, название вашего потока отобразится и будет доступно для копирования.
Чтобы получить качественный аудио и видеопоток нужно использовать стандартные для Live Encoders кодеки, а именно H.264 видеокодек и AAC аудио кодек. Эта комбинация кодеков является самой распространенной и надежной и является фактическим стандартом применения в RTMP при использовании автономных кодировщиков.
Например плагин для браузера Adobe Flash Player тоже является кодировщиком и может стримить видео прямо с веб-страницы браузера, но он не поддерживает аудио кодек AAC для стриминга и поэтому с вещанием могут возникнуть проблемы, а именно может не быть звука.
Поэтому мы сразу берем в тестирование только те кодировщики, которые явно поддерживают кодеки H.264 и AAC. На текущий момент нам известны два кандидата на тестирование, которые используют данные кодеки:
Adobe Flash Media Live Encoder на Mac OS — это бесплатный программный кодировщик от Adobe, который может кодировать RTMP потоки в H.264 и AAC. Обратите внимание, что AAC аудио кодек поддерживается только в версии FMLE для Mac OS. Если вы используете тот же софт на Windows, AAC кодек будет недоступен. Вместо него будет mp3.
Wirecast — это платный кодировщик, имеющий бесплатную триальную версию в которой поверх транслируемого видео вставляется логотип и накладывается звук каждые 30 секунд. Wirecast имеет Windows-дистрибутив.
Начнем с Adobe FMLE. Устанавливаем FMLE на Mac и подцепляем к компьютеру (в тестах использовался Mac Mini) веб-камеру. С виртуальными камерами FMLE, похоже не работает, поэтому нужна честная USB веб-камера или встроенная (если у вас макбук).
В качестве видеокодека выставляем H.264 с разрешением 640x480. В качестве аудиокодека оставляем то, что задано по-умолчанию AAC 22050 Hz mono. Другие конфигурации и настройки H.264 и AAC также должны работать без проблем.
В поле FMS URL проставляем RTMP-адрес трансляции, который был получен на Youtube.
В поле Stream проставляем название стрима, которое опять же было получено на Youtube.
* Поле имеет такое странное название FMS URL потому что FMLE думает что в мире существует только один сервер, способный принимать RTMP видеопоток — Flash Media Server от Adobe (сейчас Adobe Media Server), но как мы видим это не так, и с данной задачей прекрасно справляется, например Youtube и еще сотня другая серверов и сервисов.
После того как все настройки выставили, нажимаем зеленую кнопку Start чтобы начать трансляцию и видео отправляется на Youtube. На картинке немного мутно, но мой Mac перегружен и скриншоты я снимаю через Teamviewer, поэтому на особое качество рассчитывать не приходится. Чтобы получить качественный стрим, позаботьтесь о качественной веб-камере с высоким разрешением и о мощном CPU, например процессор Core i7 и SSD диск были бы полезны для беспрепятственного и качественного кодирования RTMP видеопотока.
Так как мы достигли некоторого успеха при использовании FMLE, то тестировать Wirecast особого смысла нет. Если у вас возникли проблемы с FMLE или нет под рукой Mac OS, попробуйте сделать тоже самое с Wirecast. Например в этой статье можно найти несколько скриншотов с описанием как транслировать видеопоток в Wirecast. Кодировщик Wirecast интересен тем, что его можно использовать даже без веб-камеры. Вещать и кодировать в RTMP можно обычный видеоролик.
Конвертация из WebRTC в RTMP
Следующая задача — сделать тоже самое с помощью WebRTC. WebRTC — это технология, встроенная в браузеры, которая позволяет браузеру захватывать видео с камеры и аудио с микрофона и отправлять в сеть. Таким образом, браузер, поддерживающий WebRTC может работать в точности как Live Encoder — делать захват и отправлять. WebRTC поддерживается в следующих браузерах:
- Chrome
- Firefox
- Opera
- Chrome for Android
- Firefox for Android
В результате, наша задача — сделать трансляцию на Youtube из браузера Google Chrome с обычной HTML страницы, без использования Google Hangouts или RTMP Live Encoder.
- WebRTC не поддерживает RTMP протокол, который требует Youtube.
- WebRTC не поддерживает AAC аудио кодек, который требует Youtube.
- WebRTC в Chrome не поддерживает кодек H.264 на мобильных устройствах, там используется кодек VP8.
Если же говорить про Adobe Flash Player, у него другая проблема
Решением является конвертация видеопотока на стороне сервера, которая показана на схеме ниже.
Таким образом, в трансляции появляется сервер-посредник, который принимает WebRTC видеопоток и конвертирует его в формат, который принимает Youtube.
Для тестирования будем использовать Web Call Server 5. Это медиасервер с поддержкой WebRTC технологии и RTMP протокола, имеющий триальную версию.
В локальной сети обнаружили старенький двухъядерный Athlon 64 бит, 1.8 GHz с установленной на него CentOS 6 и 2 гигабайтами RAM. Для экспериментов решили использовать его.
Процесс установки описан на сайте разработчика.
1. Скачиваем архив
При скачивании wget ругается на сертификаты. Приходится добавлять флаг:
2. Распаковываем
3. Запускаем инсталлятор
При инсталляции выдаёт ошибку и указывает на отсутствие Java.
4. Устанавливаем java c помощью менеджера пакетов, после чего запускаем инсталлер снова.
Во время инсталляции, инсталлер спрашивает, не в локальной ли сети находится сервер. Отвечаем утвердительно ‘yes’, после чего инсталлер прописывает в настройки локальный IP адрес сервера 192.168.1.59.
5. Далее запускаем сервер.
Запуск сервера занимает около минуты.
6. Открываем dashboard по адресу 192.168.1.59:8888 в Chrome
Браузер ожидаемо жалуется на отсутствие нормальных SSL-сертификатов. Позже их можно будет импортировать, например взять бесплатные на letsencrypt.
Сейчас же просто жмем Advanced / Proceed и подтверждаем исключение безопасности.
7. По девелоперской документации нужно сделать еще одну вещь, относящуюся к сертификатам. Нужно сделать тоже самое на странице: 192.168.1.59:8443
Это для того чтобы сигнальные websocket соединения также проходили. Без них не будет работать WebRTC, т.к. Для его работы требуется обмен SDP через отдельное соединение.
После этих двух манипуляций с сертификатами, должна открыться страница Dashboard с демо-примерам. Нужный нам демо-пример называется WebRTC as RTMP re-publishing и выглядит так:
Для начала тестирования достаточно нажать кнопку Start и разрешить использование камеры и микрофона по запросу браузера.
На скриншоте сверху происходит следующее:
1. Устанавливается соединение браузера Google Chrome и Web Call Server 5 по протоколу websocket через защищенное соединение: wss://192.168.1.59:8443
2. WebRTC аудио+видео поток отправляется на сервер и отображается статус PUBLISHING, который говорит об успешной отправке видеопотока на сервер.
3. Web Call Server перенаправляет полученный WebRTC аудио+видео поток на указанный RTMP адрес:
Обратите внимание, как это коррелирует с Youtube Live. Там мы указывали Server URL и Stream name / key
4. Далее остается проиграть видеопоток во встроенном плеере. Там автоматически формируется адрес и проставляется имя потока.
Встроенный в страницу RTMP плеер очень простой и позволяет убедиться, что стрим на месте и воспроизводится корректно.
Полный адрес стрима выглядит так: rtmp://192.168.1.59:1935/live/rtmp_stream1
Здесь нужно обратить внимание на важную деталь — Web Call Server 5 подставляет в название стрима префикс rtmp_. Т.е. принимает поток с названием stream1, а перенаправляет его как rtmp_stream1. Это важно для тестирования на localhost, чтобы имена стримов были разными.
Т.е. Youtube ожидает от нас имени видеопотока именно такого и никакого иначе: myfm-c9td-etew-eqdf. И если Web Call Server проставит префикс rtmp_, то результирующее имя будет rtmp_myfm-c9td-etew-eqdf и Youtube не примет поток.
Для того чтобы это обойти, редактируем конфиг /usr/local/FlashphonerWebCallServer/conf/flashphoner.properties на стороне сервера.
Комментируем или убираем строку конфига:
Тем самым, говорим серверу не проставлять префикс и перенаправлять полученный стрим с тем же именем.
Изменение данной настройки требует перезагрузки. Выполняем команду перезагрузки сервера и ждем 1 минуту.
После перезагрузки переходим к заключительному этапу тестирования. Снова открываем dashboard и WebRTC as RTMP re-publishing демо-пример, но на этот раз вводим RTMP адрес в точности как для Live Encoder.
И наконец, открываем Youtube Live и смотрим результат:
На этот раз нам удалось пробросить WebRTC видеопоток на Youtube как RTMP и получить картинку.
В браузере Google Chrome во вкладке chrome://webrtc-internals можно увидеть графики, описывающие доставку WebRTC видеопотока на сервер:
На стороне Youtube, входящий трафик выглядит так:
Отлично, у нас получилось протестировать и убедиться что это действительно работает. Картинка есть, звук есть, видеопоток идет прямо из браузера и попадает на Youtube.
Теперь можно переходить к программированию. А именно, мы хотели бы иметь возможность сделать тоже самое с простой HTML-страницы и в перспективе со своего веб-сайта или веб-приложения.
Программирование HTML-страницы, отправляющей WebRTC на Youtube
Проще всего было бы разобраться в примере, скачав три файла с исходниками: HTML, JavaScript, CSS. Но мы не ищем легких путей и хотим создать минимальную страницу с нуля (так сказать from scratch).
Начинаем с создания болванки test-webrtc-youtube.html
Теперь нужно скачать скрипт flashphoner.js, который делает всю работу, связанную с WebRTC и передачей видеопотока на сервер. Этот скрипт входит в Web SDK, которое доступно для скачивания по этой ссылке.
Скачиваем и распаковываем Web SDK на отдельный сервер, где установлен Apache (у кого-то Nginx).
Создаем папку /var/www/html/test-webrtc-youtube в которой будет находиться html-страница и копируем в эту папку html и js файлы:
Получается такая структура:
1. Добавляем на страницу следующие элементы:
1) localVideo — это просто div-блок, в который будет помещено видео с веб-камеры
2) urlServer, rtmpUrl, streamName — уже знакомые из предыдущего тестирования поля
3) status — в этом поле отображается статус соединения или потока
2. Добавляем три переменных:
Первые две являются просто сокращением. Переменная localVideo будет хранить ссылку на div-элемент.
3. Инициализируем API
4. Подключение к WCS серверу и начало стриминга.
При успешном подключении по событию ESTABLISHED, начинается стриминг вызовом функции startStreaming
5. Отправка видеопотока.
Здесь мы создали стрим и вызвали для него функцию publish.
6. Все статусы отображаем отдельной функцией.
В конечном счете получили примерно тоже самое, что и при использовании демо из коробки.
Результат выглядит так:
Код HTML — страницы занял ровно 65 строк и выглядит так:
А скачать исходники можно здесь
В результате мы создали HTML-страницу размером 65 строк, включая скрипты, которая с использованием файла API flashphoner.js отправляет WebRTC видео на Web Call Server, который в свою очередь перенаправляет этот видеопоток на сервис Youtube Live.
На этом все. Для желающих повторить привожу использованные в статье ссылки и материалы.
Стрим — это непрерывная подача видео- и аудио данных в онлайн-режиме от провайдера к пользователю. Фактически это полноценный прямой эфир, который похож телевизионные трансляции. Разница только в том, что стрим на Ютубе проводят через интернет. Стримы бывают двух видов:
- записанные заранее;
- живые трансляции в режиме реального времени.
Для просмотра видеопродукта на любых гаджетах нет необходимости в установке дополнительных приложений или драйверов — достаточно наличия Youtube. На видеоролике в нижней части экрана отображается «Эфир» или «В эфире» — это и есть стрим.
Требования для проведения трансляций
Прямая трансляция на Ютубе состоит из определённых процессов:
- съёмка;
- обработка;
- кодирование;
- отправка;
- воспроизведение.
Разработчиками приложения установлены общие правила и технические рекомендации для проведения стримов.
Общие правила:
- Канал должен иметь не менее 1000 подписчиков. Но, данное ограничение не действует на стримы, проводимые с помощью видеодекодера или веб-камеры.
- Подлинность ютуб канала должна быть подтверждена. Это можно сделать с помощью подтверждения телефонного номера.
- В течение последних 90 дней к каналу не были применены ограничения, в том числе и для осуществления трансляций.
- Должна быть активирована функция проведения стримов. Если её нет — нужно подключить, и, желательно, это сделать за сутки до начала трансляций.
Технические рекомендации поясняют нюансы проведения трансляций через Xsplit Broadcaster (или OBS), на относительно мощных компьютерах и с помощью мобильных устройств.
На заметку! Рекомендации рассмотрены на примере компьютеров с Windows. Для MacOS требования аналогичны.
Через Xsplit:
- Наличие процессора не ниже Intel Core i3.
- Оперативная память — от 4 ГБ.
- Наличие поддержки 3D-ускорения.
- Наличие ОС Windows 7 или Windows XP SP3.
- Скорость интернета — не менее 3 Мб/сек.
Важно! Трансляции через Xsplit получаются в очень низком качестве.
Более мощный компьютер:
- Наличие процессора Intel Core i7.
- Оперативная память — 8 ГБ и современная видеокарта.
- Скорость интернета — не менее 3 Мб/сек.
На мобильных устройствах:
- Бесперебойный стабильный интернет.
- Полная зарядка аккумулятора.
- Оперативная память — не ниже 4 ГБ.
- Качественные аудио- и видео характеристики устройства.
Как активировать функцию проведения стримов
Для всех мобильных устройств — войдите в приложение YouTube, нажмите на значок «+» в нижней части экрана и дальше делайте всё по подсказкам на экране.
Для компьютеров — войдите в раздел «Настройки» на своём канале и кликните на строку «Статус канала и доступные функции».
Для проведения трансляций должны быть активированы Функции, для доступа к которым нужно подтвердить номер телефона. Подтвердите номер, зайдите в «Расширенные настройки» и по подсказкам активируйте нужный функционал.
Завершение активации, которая осуществляется в течение суток, можно проверить нажатием кнопки «Включены» в разделе «Доступность функций».
Пошаговое руководство настройки, запуска и ведения прямых трансляций
Вести прямые трансляции на Ютубе можно с помощью компьютеров с ОС Windows, MacOS и мобильных устройств на Android и iOS.
Общие рекомендации для настройки
Сеть. Учитывайте общий битрейт и пропускную способность при загрузке. Рекомендуемый резерв — 20%. Например, минимальная скорость интернета, необходимая для запуска стрима, составляет 3 мегабита в секунду. Соответственно, для нормальной бесперебойной передачи данных битрейт должен быть не менее 3,6.
Видеокодер. Если вы используете видеокодер — настройте его заранее, примерно за 2 часа до трансляции. Для проверки качества трансляции подключите его за 15 минут до начала эфира и убедитесь в корректном воспроизведении видео на панели управления трансляциями.
Веб-камера. Проверьте необходимые базовые настройки до начала трансляции.
На компьютере с ОС Windows
Проверьте, включена ли функция ведения стримов на вашем канале. Обязательно наличие браузеров последних версий — например, Chrome 60 и выше или Firefox 53 и выше. И, желательна версия Windows не ниже 7.
Если функция активирована, и это отображается на сайте — можно приступать к следующим настройкам.
Кликните на кнопку с изображением в верхнем левом углу трёх горизонтальных линий.
В открывшемся окне войдите в «Настройки».
Нажмите на значок с изображением камеры в правом верхнем углу.
В открывшемся окне кликните на «Начать трансляцию».
В открывшемся окне выбирайте нужный режим. Можно создать трансляцию с отсрочкой при помощи установки таймера или начать в режиме онлайн.
После выбора режима система выдаст пошаговую инструкцию с уточнениями — знаете ли вы правила трансляций, активна ли функция для их проведения и запросит название, описание, настройки камеры и микрофона. После этого вы вернётесь снова в окно с выбором режима, где нужно кликнуть на «Выбрать». После этого вы выходите прямой эфир.
Важно! Если вы активировали функцию проведения стримов меньше суток назад — скорее всего, провести трансляцию не получится, придётся подождать.
На компьютере MacOS
Настройка и проведение стримов на MacOS идентичны для ОС Windows, отличия ощутимы только в интерфейсах.
- Войдите в свой аккаунт YouTube и кликните «Мой канал».
- Нажмите на значок с изображением камеры в верхнем правом углу и «Создать».
- Кликните на «Начать трансляцию».
- В разделе меню слева введите название, описание и параметры доступа.
- Перепроверьте настройки — камеру и микрофон.
- Нажмите «Начать эфир».
- Для завершения стрима нажмите в нижней части страницы на «Завершить трансляцию».
На Андроиде
Войдите в свой аккаунт YouTube и нажмите на круглую кнопку в верхнем правом углу.
Кликните на строку «Мой канал» в открывшемся окне настроек.
Нажмите на значок «+» в нижней части экрана.
На появившейся панели нажмите на строку «Начать трансляцию».
Для завершения нужно нажать на соответствующую кнопку в нижней части экрана для завершения.
Важно! Перед началом проведения стрима проверьте настройки смартфона — корректность работы камеры, микрофона и т.д. Для лучшего качества видео рекомендуется воспользоваться основной камерой, которая расположена на задней панели телефона. Фронтальная камера не очень подходит из-за некачественного воспроизведения видео.
На iOS
Алгоритм идентичен проведению стримов на Ютубе для Android.
- Войдите в свой профиль на Ютубе.
- Откройте свой канал и нажмите на «+» в нижней части экрана.
- В появившейся вкладке кликните на «Начать трансляцию».
- Для завершения нажмите кнопку «Конец».
Как продвигать прямые эфиры
Для того чтобы о вашем стриме узнало как можно больше пользователей, необходимо предусмотреть меры по продвижению канала и конкретного эфира.
- Сделайте рекламный ролик предстоящего стрима и запустите платную рекламу на Ютубе.
- Свяжите свой канал с аккаунтами в социальных сетях и делитесь там информацией о предстоящей трансляции.
- Закажите рекламу предстоящего эфира на сторонних ресурсах — у блогеров в социальных сетях и на сайтах.
- Наращивайте подписчиков канала и делайте анонсы предстоящих эфиров. Подписчики увидят эту информацию у себя в рекомендациях.
Как монетизировать стримы
Для стримов на Ютубе предусмотрено три варианта монетизации:
- реклама;
- суперчат;
- спонсорство;
- YouTube Premium
Реклама — это рекламные видеоролики, которые видят зрители стрима в начале, середине или в конце трансляции. Рекламодателями могут быть совершеннолетние пользователи или несовершеннолетние с согласия опекуна.
Суперчат — платная услуга, с помощью которой пользователи имеют возможность размещения во время трансляции анимированных надписей, стикеров и т.д. Актуально для совершеннолетних зрителей и поддерживается не во всех регионах.
Спонсорство — подписчики канала активируют эту услугу и регулярно перечисляют вам деньги взамен на разные бонусы. Доступно совершеннолетним пользователям, у которых на канале не менее 1000 подписчиков.
Примечание. Например, как выглядит реклама в стримах. Она может отображаться в нижнем правом углу экрана.
Либо несколько рекламных роликов подряд будут видны на весь экран. Рекламу можно вставить в начале трансляции, в середине и в конце.
Настройка рекламы осуществляется согласно разным тонкостям таргетинга — нужно выбирать целевую аудиторию с указанием региона, пола, возраста, интересов и т.д.
На заметку! YouTube Premium — это не только монетизация, но и возможность смотреть стримы других пользователей и видеоролики без рекламы.
Как модерировать чат
Модерировать стрим можно перед началом, во время проведения и после завершения.
Перед началом:
Во время проведения:
Вы либо модератор может удалять комментарии в чате во время проведения стрима. Кроме того, можно ограничивать действия или блокировать пользователей.
После проведения:
Аналогично модерации во время проведения — можно удалять комментарии и блокировать пользователей.
Ограничения на прямые трансляции
Основные ограничения для проведения стримов на YouTube:
- Для трансляций с помощью мобильных устройств канал должен иметь не менее 1000 подписчиков.
- Ваш стрим нарушает авторские права.
- Вы превысили дневной лимит проведения трансляций.
- Контент для детей или несовершеннолетних — ограничения часто обновляются. Например, в стримах для детей недоступны суперчаты и комментарии, для несовершеннолетних — на трансляции должен присутствовать взрослый опекун или родитель.
- Вы ограничены в создании любого контента на Ютубе из-за нарушения правил в отношении контента, подходящего для монетизации, либо ограничены в размещении продакт-плейсмента и прямой рекламы.
Как вести прямую трансляцию с камеры GoPro на YouTube
Для трансляции с камеры GoPro нужно установить приложение GoPro App. Аккаунт YouTube должен быть привязан к Facebook.
Читайте также: