В некоторых случаях, при попытке перейти на нужный интернет-ресурс, браузер выдает системное сообщение (статус) с кодом «500», о котором свидетельствует надпись «500 Internal Server Error» («500 внутренняя ошибка сервера»).
Код ошибки означает внутренние проблемы с сервером, которые необходимо диагностировать. Произошел сбой работы или нарушена конфигурация системы.
В случае подобной ошибки не обязательно сразу писать в техническую поддержку. Можно попробовать решить эту проблему самостоятельно.
Внутренняя ошибка сервера не всегда свидетельствует о сбое сервера, поскольку указывает на результат, к которому могут привести разные причины.
Что способствует возникновению ошибки 500
- Неверные права на объекты файловой системы
- Ошибочный код или неподдерживаемые директивы файла .htaccess
- Долгое выполнение скриптов
- Ошибка в коде CGI-скрипта
- Превышение лимита памяти
- Некорректная работа CMS
Как диагностировать ошибку 500
Для диагностики внутренней ошибки сервера с кодом 500 необходимо проверить содержимое файла « error.log », находящийся в корне сайта или в каком-либо другом месте, которое зависит от настроек сервера.
What is RTMP?
Способ доступа к файлу зависит от того, находится ли сайт на веб-хостинге или размещён на выделенном/физическом сервере.
- На веб-хостинге можно найти « error.log » в панели управления веб-хостингом. Например, в ISPmanager файл с ошибками расположен в разделе «WWW» → «Журнал».
- На VPS файл « error.log » можно посмотреть через консоль, либо предварительно скачать его на локальный компьютер при помощи клиента FileZilla.
Этот метод позволяет выяснить причину возникновения ошибки и за короткий промежуток времени устранить ее. После проведения диагностики можно воспользоваться одним из нижеописанных способов решения проблемы.
Права доступа к директориям и файлам
Отсутствие необходимых прав доступа к объектам файловой системы (директориям и файлам) довольно часто приводит к ошибке со статусом «500». При переносе сайта на другой хостинг или изменении его структуры (добавлении новых элементов) пользователь забывает изменить права доступа.
Решение № 1 — изменение прав
Для доступа к файловой системе сервера можно использовать бесплатный клиент FileZilla. Его необходимо установить, а затем запустить.
Алгоритм изменения атрибута файла (папки)
- Выполнить вход в корневую директорию сервера, введя параметры аутентификации — IP-адрес сервера, логин пользователя, пароль, а также порт (если необходимо).
- Нажать на кнопку «Быстрое соединение». Слева отобразится список объектов файловой системы локального компьютера, а справа — файлы и директории сервера.
- Следующий шаг, о котором часто забывают при загрузке сайта на хостинг, — активация пункта меню для отображения скрытых файлов («Сервер → Принудительно отображать скрытые файлы»).
- Загрузить необходимые файлы и папки на сервер посредством перетаскивания или используя контекстное меню «Загрузить на сервер».
- После загрузки перейти на правую панель, выделить интересующие объекты и через контекстное меню исправить соответствующие права доступа.
Primary you tube ingest server legacy RTMP
Рекомендуемые числовые значения для файлов — « 644 » и директорий — « 755 ». Необходимо пересматривать и изменять права отдельно для каждого объекта файловой системы. Этот подход позволит избежать ошибок.
Если изменение прав доступа не привело к положительному результату, а при открытии сайта снова появляется ошибка 500, то следует попробовать другой способ решения проблемы.
Решение № 2 — перезагрузка сервера
При размещении ресурса на базе физического или виртуального выделенного сервера (VPS) может иногда возникать ошибка 500. Если страница временно недоступна и браузер выдает ошибку с кодом «500», а изменения прав доступа были испробованы, то нужно просто перезагрузить сервер.
Некорректный .htaccess
Для файла .htaccess существует определенный синтаксис, который нельзя нарушать. Если в нем неверно указаны директивы, то при обращении к сайту будет возникать ошибка «500». Кроме того, не все директивы поддерживаются на хостинге.
Решение № 1 — исправление кода
Для определения причины ошибки «500», связанного с некорректным файлом .htaccess, последний необходимо сохранить в другом месте, а исходник удалить. Если сайт заработал, то в сохраненном файле .htaccess следует искать неверный код.
Для поиска существует специальный алгоритм последовательного запуска директив, содержащихся в файле. Его нужно скачать на локальный компьютер, а затем открыть в текстовом редакторе.
Методика выявления неверного кода
- Закомментировать все строки при помощи символа решетки «#».
- Убрать «#» с первой строки.
- Сохранить изменения и загрузить нужные файлы на сервер через перетаскивание или с помощью функции «Загрузить на сервер» в контекстном меню. Процедура аналогична тому, как это делается в описанном выше случае с изменением атрибута файла.
- Проверить web-приложение (сайт).
- При отсутствии сообщения с кодом «500» нужно выполнить пункт «2» для других строк.
- Если возникла ошибка, то требуется проверить правильность написания директивы и ее поддержку хостингом.
Вышеописанного алгоритма достаточно для выявления неверного кода. Однако бывают ситуации, при которых код, на первый взгляд, написан верно, а директивы не поддерживаются хостингом. Тогда нужно попробывать второй вариант решения проблемы.
Решение № 2 — замена символов
Замена символов — распространенная ошибка при написании директив самостоятельно или копировании частей .htaccess c недостоверных источников. В коде директив присутствуют русские символы, которые очень сложно отличить от английских. Процедуру следует делать в специальных редакторах или через сервис антиплагиата «text.ru». Последний позволяет выявлять символы замены в массиве текста.
Алгоритм нахождения
- Запустить сервис проверки уникальности текста «text.ru».
- Скачать .htaccess на локальный компьютер.
- Сделать его копию и отредактировать ее, оставив только английские символы.
- Скопировать содержимое файла и вставить в поле для текста.
- Нажать на кнопку «Проверить уникальность» и дождаться результатов проверки.
- Исправить символ в исходнике.
- Сохранить файл и закачать его на сервер.
- Выполнить переход на сайт.
Долгое выполнение скриптов
В настройках PHP выставляется ограничение времени, которое дается скрипту на его выполнение. Многие об этом забывают, выставляя только параметр в файле « php.ini » , находящийся в папке web-сервера Apache.
Решение № 1 — оптимизация PHP-скрипта
Чтобы оптимизировать PHP-скрипт, необходимо его переписать без лишнего кода. В интернете существует несколько сервисов для выявления избыточного кода.
Эта задача под силу опытному программисту. Новичку рекомендуется работать со скриптом, тестируя его на локальном сервере, а затем загрузить на хостинг.
Решение № 2 — увеличение времени обработки
Клиенту, пользующемуся услугой VPS, следует увеличить время ожидания сервера. Для этого нужно в « php.ini » найти параметр « set_time_limit » и установить его значение как « 0 », т. е. set_time_limit = 0 .
Если используется веб-хостинг, то выполнить эту операцию не получится. В этом случае необходимо связаться с технической поддержкой.
Ошибка в коде CGI-скрипта
Скрипт CGI-типа используется для создания интерактивных страниц, контент которых зависит от действий пользователя. Довольно часто при неверной работе со скриптами этого типа на сайте возникает внутренняя ошибка сервера с кодом «500».
Решение № 1 — проверка формата окончания строк
Для проверки символа, содержащегося в конце каждой строки, используется специальный редактор (например, Notepad++ или любой другой с поддержкой отображения символов табуляции).
- Если сервер работает под управлением Unix-систем, то окончание каждой строки должно соответствовать символу « n ».
- При использовании Windows-платформы — « rn ».
Решение № 2 — установка прав доступа
Одной из причин неправильной работы CGI-скриптов является некорректное разрешение прав доступа. Для директории, в которой хранятся CGI-файлы, должны стоять права с числовым значением « 755 ».
Решение № 3 — неверные HTTP-заголовки
В некоторых случаях ошибка возникает из-за некорректных HTTP-заголовков. Для ее диагностики следует проверить файл « error.log ».
Превышение лимита выделенной памяти
Некоторые хостинг-компании, чтобы избежать перегрузки сервера, устанавливают определенный лимит памяти, используемой скриптами. В результате превышения этого ограничения возникает внутренняя ошибка сервера с кодом состояния «500».
Решение № 1 — проверка PHP-скриптов
Чтобы проверить PHP-скрипты, следует скачать на локальный компьютер исходник сайта, а затем протестировать его на работоспособность.
Затем требуется проверить описание функций (структуру и код) и включить опцию показа ошибок в « php.ini ».
Опции для тестирования
- error_reporting = E_ALL
- display_errors = On
- display_startup_errors = On
В файле конфигурации нужно указать вышеописанные параметры без точек.
Если проблем в файле нет, а сообщение об ошибке «500» выводится на экране, необходимо перейти ко второму способу решения проблемы.
Решение № 2 — изменение настроек
Настройка лимита памяти выставляется в файле конфигурации « php.ini ». За этот параметр отвечает опция « memory_limit ».
При использовании VPS она устанавливается экспериментальным путем. После каждого изменения файл загружается на сервер, а затем тестируется работа сайта. Однако нужно помнить об ограничении использования памяти со стороны поставщика услуги.
Решение № 3 — связаться с технической поддержкой
Если ошибка «500» не исчезает при правильной работе скрипта и верных настройках, то нужно связаться с технической поддержкой. Как правило, они помогают исправить проблему.
Некорректная работа CMS
Причиной появления ошибки «500» могут стать неверные настройки CMS. Наиболее часто используются WordPress и Joomla. Следовательно, на их примере и нужно разобрать причины возникновения проблемы, а также решения по ее устранению.
Ошибка «500» в WordPress
При работе сайта на движке WordPress методика диагностики появления ошибки с кодом «500» немного отличается от остальных CMS. Проблема может быть связана с .htaccess, установленной темой, плагином или ядром WordPress.
Решение № 1 — файл .htaccess
Файл используется при изменении структуры ссылок и работе плагинов. Кроме того, в него могут вносить изменения ядро CMS, темы и плагины.
Выполнение диагностики
- Скопировать .htaccess на диск, а затем удалить его на сервере.
- Обновить страницу.
- Если сайт заработал, то нужно искать причину в файле.
- Если при обновлении страницы ошибка не исчезнет, то рекомендуется изменить атрибуты файла .htaccess. Для этого нужно запретить запись в файл, задав в правах доступа числовое значение « 644 ».
Последний пункт влияет на активацию плагинов. Его рекомендуется рассматривать как временную меру.
Решение № 2 — смена текущей темы
Для устранения ошибки «500» рекомендуется поменять тему на другую, а затем обновить страницу. Если сайт заработал, то причина в ней. В противном случае нужно перейти к третьему варианту решения проблемы.
Решение № 3 — перебор плагинов
При расширении функциональности сайта пользователи используют соответствующие плагины, которые могут стать причиной внутренней ошибки сервера. Для диагностики неработающего компонента нужно последовательно деактивировать каждый из плагинов.
Порядок деактивации плагина
- Выбрать плагин (стрелка № 1).
- В выпадающем списке указать опцию «Деактивировать» (стрелка № 2).
- Нажать на кнопку «Применить» (стрелка № 3).
- Обновить веб-страницу.
- Перебор плагинов продолжать до возобновления работы интернет-ресурса.
Если деактивация плагинов не привела к положительному эффекту, и сайт по-прежнему не работает, то нужно перейти к четвертому методу.
Решение № 4 — модификация конфигурационного файла
Устранить проблему внутренней ошибки сервера поможет увеличение объема памяти.
Алгоритм модификации
- В корневой директории хостинга необходимо найти файл « wp.config.php ».
- Открыть его в редакторе.
- Перейти в конец файла.
- Добавить код « define(‘WP_MEMORY_LIMIT’, ’64M’) ».
- Сохранить и перезагрузить страницу.
Решение № 5 — обновление CMS
Если ни один из методов не помог, то причина заключается в ядре движка CMS. Для устранения ошибки его нужно обновить до последней версии или переустановить.
Ошибка «500» в CMS Joomla
Ошибка с кодом «500» иногда возникает при попытке зайти в административную панель CMS Joomla. При этом сайт и все его функции работают корректно.
Ошибку нужно искать самостоятельно, перебирая каждый из вариантов. В файле « error.php », который расположен в директории « logs », находится описание всех проблем при работе с CMS.
Решение № 1 — установка прав на «logs»
Чтобы устранить проблему, нужно установить права доступа на папки « logs » и « tmp », которые должны соответствовать числовому значению « 777 ».
Решение № 2 — корректность путей к директориям «logs» и «tmp»
Пути к директориям хранятся в файле « configuration.php ». Необходимо проверить их правильность, указав при необходимости полные пути.
Решение № 3 — проверка .htaccess
При ошибке «500» в административной панели нужно открыть файл .htaccess» и поочередно комментировать строки. После каждого изменения файл нужно сохранять и проверять работоспособность админ-панели.
Если, после реализации предложенных методов исправления ошибки «500», сайт на хостинге по-прежнему не работает, необходимо обращаться к техподдержке хостинг-провайдера.
Надежный хостинг для сайта. 14 дней — бесплатно!
Источник: eternalhost.net
Использование VLC Media Player как сервера для трансляции видео
В широком перечне функций VideoLAN Client достойное место занимает возможность превратить компьютер, на котором установлен проигрыватель в сервер потокового вещания мультимедиа в сеть. Настроить VLC сервер совсем несложно, а получаемый при этом результат может удовлетворить потребности пользователей крупной локальной сети.
В качестве источников потоковой трансляции с помощью сервера, созданного по инструкции ниже, могут быть видеофайлы различных форматов, DVD-Video, а также видео в реальном времени. В качестве приемника вещания можно использовать компьютеры, работающие под управлением практически любой современной операционной системы, а также мобильные устройства в основе функционирования которых лежит Android либо iOS.
Настройка сервера потокового вещания
Единственным условием для того чтобы нижеизложенное принесло положительные результаты является тот фактор, что на всех устройствах в сети, которые планируются к использованию в качестве принимающей поток стороны, как и на ПК-сервере должен быть установлен VLC-проигрыватель актуальной версии.
- Запускаем плеер, открываем меню «Медиа» и заходим в пункт «Передавать».
- Добавляем файл-источник в соответствующее поле на вкладке «Файл». В том случае, если в качестве основы трансляции будет использоваться не локальное видео или аудио, а физический диск-носитель, источник в Интернете или устройство видеозахвата, воспользуемся соответствующими вкладками в верхней части окна.
- После того как источник определен, нажимаем кнопку «Поток», которая запустит Мастер «Вывод потока». Первый шаг работы мастера завершаем нажатием кнопки «Следующий».
- Параметры, определяемые в окне «Настройка вывода», являются важнейшими для правильной настройки проигрывателя в качестве сервера. Нажимаем «+» и добавляем из раскрывающегося списка протокол, возможности которого будут использованы при будущей передаче медиапотока.
- Можно добавлять несколько протоколов для большей «универсальности» трансляции в отношении устройств-приемников. Простейшим методом осуществления передачи медиаданных на устройства в локальной сети является использование протокола «HTTP». Создаем трансляцию на его основе, нажав кнопку «Добавить».
- Значения полей «Порт» и «Путь» не меняем, сразу нажимаем кнопку «Следующий».
- Выбираем профиль, определяющий формат передаваемых видео и аудио данных из раскрывающегося списка. Если есть сомнения в правильности определения, можно оставить профиль по умолчанию.
- Открывается финальное окно Мастера «Вывод потока», предлагающее возможности по настройке дополнительных параметров. В большинстве случаев менять значения в этом окне нет необходимости, нажимаем кнопку «Поток».
- Создание сервера окончено, а передача стартует автоматически.
Для того чтобы принимать созданную трансляцию на других устройствах, понадобится сетевой адрес компьютера-сервера. Определить значение этого параметра можно обратившись к окну свойств сетевого подключения. В рассматриваемом примере значение 192.168.0.104.
Прием потока
Для просмотра трансляции с VLC-сервера, созданного по инструкции выше, на устройствах, подключенных к локальной сети необходимо осуществить несколько простых шагов. В качестве примера используем Андроид-версию проигрывателя. В других ОС настройка приема осуществляется аналогично.
- Открываем плеер, а в меню выбора источника воспроизведения выбираем пункт «Открыть MRL…».
- В поле «Сетевой адрес MRL» вводим IP-адрес устройства-сервера и порт.
- Нажимаем на добавленный пункт, в результате чего будет открыто окно проигрывания видео.
Как видим организация потокового вещания в пределах небольшой сети – простая процедура, если использовать такой инструмент, как VLC-Server и следовать несложным инструкциям.
Как смотреть RTSP поток в VLC плеере
Многофункциональность медиакомбайна VLC превращает данный продукт в практически универсальное решение для просмотра видео в независимости от источника. Примечательной возможностью, которую предоставляет проигрыватель является воспроизведение RTSP-потока. О том, как работает данный функционал пойдет речь ниже.
Проигрывание в плеере VLC RTSP, а также возможность захвата потока – весьма востребованные функции среди пользователей систем видеонаблюдения, в составе которых присутствуют IP-камеры.
Применение
Большинство современных моделей камер видеонаблюдения, а также видеорегистраторов оснащены поддержкой описываемого протокола. Добавив к этим аппаратным составляющим такой надежный программный инструмент, как VideoLAN Client можно осуществить организацию системы для просмотра и сохранения видеоинформации без привлечения профессионалов в этой сфере.
Real Time Streaming Protocol – это прикладной потоковый протокол, описывающий команды, которые служат, чтобы управлять видеопотоком. Команды могут указать IP-камере либо серверу совершать различные действия, к примеру, начать транслировать поток, либо остановить передачу видеоданных.
В параметрах IP-камер может встречаться различное обозначение потокового варианта передачи информации. RTSP, как было сказано выше, является, по сути набором команд, с помощью которого осуществляется управление потоком.
Аббревиатуры UDP и RTP указывают на транспортный механизм, применяемый при передаче видео.
Открытие RTSP-потока в VLC.
Чтобы поток с камеры отображался в окне проигрывателя, требуется предварительная настройка ВЛЦ. Выполняем ниже перечисленные пункты инструкции.
- Запускаем VLC и заходим в меню «Инструменты», а затем выбираем «Настройки».
- Переходим на вкладку «Ввод/кодеки», кликнув по соответствующему значку.
- Переводим переключатель «Транспорт потока Live 555» раздела «Сеть» в положение «Использовать RTP поверх RTSP (TCP)» и нажимаем кнопку «Сохранить».
- Открываем меню «Медиа» и заходим в пункт «Открыть URL…». В открывшемся окне добавляем ссылку на поток в поле «Введите сетевой адрес». IP-адресацию и другие параметры, из которых состоит адрес можно выяснить, обратившись к документации IP-камеры или видеорегистратора.
- Воспроизведение RTSP-потока начнется вслед за нажатием на кнопку «Воспроизвести».
Обратите внимание! Интернет должен быть максимально быстрым для того, чтобы не получить ошибку «VLC не может соединиться с сетью».
Таким простым способом может осуществляться организация просмотра камер в системах видеонаблюдения.
Источник: media-player-s.ru
Стриминг видеозвонков по RTMP
Сегодня стриминг-платформы на пике популярности, так как миллионы талантливых людей регулярно делятся своими знаниями – читай, используют стриминг на всю катушку. Так как этот рынок растет, то существует и масса приложений, которые могут стримить видео в реальном времени, используя камеру смартфона или ноутбука. Возможно, вы тоже хотите внедрить в ваше приложение такую функциональность; если так, то спешим обрадовать – теперь Voximplant позволяет прокидывать видеозвонки по RTMP в любой CDN, который поддерживает этот протокол.
Эта функциональность стала возможна благодаря новому модулю Voxengine – StreamingAgent. Под катом вас ждут 5 шагов по настройке этой интеграции, добро пожаловать!
Схема
Видеозвонок из мобильного/веб-приложения или SIP приходит в наше облако, которое направляет его в стриминговый CDN. В свою очередь, CDN отправляет аудио- и видеопотоки конечным пользователям – как он обычно и делает. Обратите внимание, что RTMP поддерживает только H.264, поэтому очень важно явно указывать этот кодек при стриминге.
Вам понадобятся
- аккаунт на стриминговом сервисе, например, Twitch или Youtube;
- аккаунт Voximplant. Если у вас его нет, то регистрация живет здесь;
- приложение Voximplant, а также сценарий, правило и один пользователь. Все это мы создадим в этом туториале;
- веб-клиент для захвата видео и аудио – воспользуемся нашей демкой videochat
1. Настройки стриминга
Первым делом вам нужно будет получить значения двух параметров, который мы используем в облачном сценарии – stream name/key и server URL. Ниже показано, как получить эти значения на примере Twitch и YouTube.
Twitch
Зайдите в аккаунт, нажмите на аватарку в правом верхнем углу и выберите Video Producer.
В разделе Settings выберите Channel, а затем нажмите Copy в верху страницы – так вы получите ваш Primary Stream Key. Обратите внимание, что ключ доступен только при активированной двухфакторной аутентификации. Вставьте это значение в ваш текстовый редактор или просто оставьте эту страницу открытой, чтобы скопипастить значение позже.
Чтобы найти server url, зайдите на страницу stream.twitch.tv/ingests, выберите один из рекомендованных серверов и скопируйте его без последнего слэша, например: rtmp://live-sfo.twitch.tv/app
YouTube
Войдите в аккаунт, нажмите на аватарку в правом верхнем углу и выберите YouTube Studio (beta).
Если у вас нет канала на YouTube, то появится диалог о создании канала. Нажмите Create channel и вы увидите дашборд созданного канала с уведомлением, что стриминг будет возможен в течение 24 часов.
Находясь в YouTube Studio, через меню слева зайдите в Other features —> Live stream now. Откроется новая страница, внизу которого будет блок Encoder setup. Отсюда необходимо взять значения Server URL и Stream name/key (либо оставить страницу открытой).
2. Настройки VOXIMPLANT
Теперь надо сделать настройки со стороны Voximplant. Сначала войдите в свой аккаунт: https://manage.voximplant.com/auth. В меню слева нажмите «Приложения», затем «Новое приложение» и создайте приложение с именем streaming. Зайдите в новое приложение, переключитесь на вкладку «Сценарии», чтобы создать сценарий startStream с таким кодом (не забудьте подставить значения из предыдущего шага в строках 8 и 9):
require(Modules.StreamingAgent); VoxEngine.setVideoCodec(«H264»); VoxEngine.addEventListener(AppEvents.CallAlerting, function (e) < const streaming = VoxImplant.createStreamingAgent(< protocol: «RTMP», url: «rtmp://live-sfo.twitch.tv/app», streamName: «live_********************», keyframeInterval: 4 >); e.call.sendMediaTo(streaming); streaming.addEventListener(StreamingAgentEvents.Connected, function (e) < Logger.write(«LOG: StreamingAgentEvents.Connected: » + e.reason); >); streaming.addEventListener(StreamingAgentEvents.Disconnected, function (e) < Logger.write(«LOG: StreamingAgentEvents.Disconnected: » + e.reason); >); streaming.addEventListener(StreamingAgentEvents.ConnectionFailed, function (e) < Logger.write(«LOG: StreamingAgentEvents.ConnectionFailed: » + e.reason); >); streaming.addEventListener(StreamingAgentEvents.Error, function (e) < Logger.write(«LOG: StreamingAgentEvents.Error: » + e.reason); >); streaming.addEventListener(StreamingAgentEvents.StreamStarted, function (e) < Logger.write(«LOG: StreamingAgentEvents.StreamStarted: » + e.reason); >); streaming.addEventListener(StreamingAgentEvents.StreamError, function (e) < Logger.write(«LOG: StreamingAgentEvents.StreamError: » + e.reason); >); streaming.addEventListener(StreamingAgentEvents.StreamStopped, function (e) < Logger.write(«LOG: StreamingAgentEvents.StreamStopped: » + e.reason); >); e.call.answer(); e.call.addEventListener(CallEvents.Disconnected, function (e) < Logger.write(«LOG: terminating in 6 secs»); setTimeout(VoxEngine.terminate, 6000); >); >);
Это простой сценарий, который инициирует стрим, а также отслеживает все его возможные состояния, как то: Connected, Connection failed, StreamStarted и т.д. – подробности работы сценарии будут чуть ниже. Сейчас же вам надо перейти на вкладку «Роутинг» вашего приложения и нажать «Новое правило». Назовите его streamRule, укажите сценарий startStream и оставьте маску по умолчанию (.*).
Последнее, что надо сделать на этом этапе – создать пользователя. Перейдите на вкладку «Пользователи», нажмите «Создать пользователя», укажите имя (например, user1) и пароль, затем кликните «Создать». Эта пара логин-пароль понадобятся нам для аутентификации в веб-клиенте.
Конфигурация Voximplant закончена, но прежде чем мы перейдем к веб-клиенту, предлагаю разобраться, как работает модуль StreamingAgent в нашем сценарии.
3. Сценарий
Модуль StreamingAgent позволяет разработчикам запускать стримы по RTMP на популярные стиминговые платформы. Чтобы использовать функциональность модуля, мы должны подключить его в самом начале сценария:
require(Modules.StreamingAgent);
Далее необходимо явным образом указать кодек, который будет использоваться при стриминге. Так как многие платформы (Twitch и YouTube в том числе) используют RTMP, который, в свою очередь, поддерживает H.264, именно его мы и укажем:
VoxEngine.setVideoCodec(«H264»);
Если кодек не указан, то может быть вызвано событие StreamingAgentEvents.StreamError, содержащее текст об ошибке:
«Video codec mismatch. » + codecName + » granted, but should be H.264″
Затем мы добавляем обработчик для события CallAlerting, чтобы обработать видеозвонок из веб-клиента (да-да, скоро мы до него дойдем). Первым делом мы добавим в обработчик вызов метода createStreamingAgent. У метода есть следующие параметры, большинство из них – обязательные, опциональные отмечены отдельно:
- protocol – пока поддерживается только RTMP;
- url – server URL, см. шаг 1;
- streamName – stream name/key, см. шаг 1;
- applicationName (опциональный) – часть streamName, например, live2. Используйте этот параметр, если этого требует выбранная платформа;
- keyframeInterval (опциональный, секунды) – как часто будет создаваться ключевой кадр в стриме. Если не указан, то по умолчанию стоит значение 2.
VoxEngine.addEventListener(AppEvents.CallAlerting, function (e) < const streaming = VoxImplant.createStreamingAgent(< protocol: «RTMP», url: «rtmp://live-sfo.twitch.tv/app», streamName: «live_********************», keyframeInterval: 4 >);
Но мы можем опустить keyframeInterval и использовать applicationName, вот так:
VoxEngine.addEventListener(AppEvents.CallAlerting, function (e) < const streaming = VoxImplant.createStreamingAgent(< protocol: «RTMP», url: «rtmp://a.rtmp.youtube.com/», applicationName: «live2», streamName: «somename» >);
После того как создан объект стриминга, сценарий продолжает обрабатывать звонок внутри обработчика. Следующий шаг – направить входящий видеопоток из веб-клиента в созданный объект стриминга:
e.call.sendMediaTo(streaming);
Затем мы используем все возможные стриминговые события для отладки: обработчики ничего не делают, кроме отправки сведений в лог Voximplant-сессии. Вы можете не использовать этот кусок кода, если хотите.
После обработки событий сценарий отвечает на входящий звонок:
e.call.answer();
Наконец, мы должны корректно обработать окончание стриминга, когда веб-клиент прекращает отправку видео. Формально, мы можем не использовать и этот обработчик тоже, но при этом сессия закончится только по спустя 60 секунд после прекращения отправки видео. В этом ожидании нет смысла, поэтому лучше завершать сессию, отталкиваясь от событий Disconnected:
e.call.addEventListener(CallEvents.Disconnected, function (e) < Logger.write(«LOG: terminating in 6 secs»); setTimeout(VoxEngine.terminate, 6000); >);
Понимая логику сценария, мы готовы приступить к последней – но не по значению – части нашей конфигурации.
4. Веб-клиент
Клонируйте или скачайте наше демо videochat. Затем перейдите в папку репозитория и откройте файл WebApp/JS/app.js в текстовом редакторе/IDE. Измените имя приложения на 5 строке и сохраните файл:
5. Запускаем стриминг
Вам нужно запустить папку WebApp локально или на вашем веб-сервере. Для локального запуска можете воспользоваться утилитой live-server или приложением Web Server for Chrome. При запуске веб-клиента вы должны передать ему имя вашего аккаунта Voximplant, например:
http://127.0.0.1:8080/index.html#accname=johngalt
Запустив клиент, введите пару логин-пароль из пункта 2:
Источник: temofeev.ru