• Добрый день.
    Помогите, пожалуйста, разобраться с ip-камерами.

    Ссылки на камеры вида
    <img src="http://<ip-адрес>:<порт>/<набор букв>?container=mjpeg&stream=main" alt="">
    вставлены на странице как код HTML.

    Если открываю страницу через браузер Firefox — всё хорошо.
    Однако в Chrome (и, кажется, в Яндекс браузере) не работает.

    Страница, с которой нужна помощь: [войдите, чтобы увидеть ссылку]

Просмотр 12 ответов — с 1 по 12 (всего 12)
  • Всё просто. Сайт на https, а картинки вставлены с http, в результате Mixed Content и блокировка ресурса.

    Почему FF показывает — не знаю, по идее тоже не должен бы.

    Подскажите, пожалуйста, как это можно исправить?
    Переходить обратно на http не хочется…
    Если просто заменить ссылки http на https, трансляция пропадает даже на Firefox…

    как это можно исправить?

    Можно сделать проксирование. Скрипты будет забирать с камеры по http, а отдавать по https. Это сложный путь.

    Можно попробовать вставить в <head> страницы

    <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
    

    Раньше срабатывало. Но всё меняется.

    Если просто заменить ссылки http на https, трансляция пропадает

    Если камера не умеет работать по https (а с чего бы ей уметь получать сертификаты?), то получится обращение в никуда.

    • Ответ изменён 3 года, 8 месяцев назад пользователем Юрій.
    Модератор Yui

    (@fierevere)

    永子

    Можно сделать проксирование. Скрипты будет забирать с камеры по http, а отдавать по https. Это сложный путь.

    вообще-то достаточно простой путь. (через директиву proxy_pass)

    см «SSL termination with nginx» вылезет куча статей, настройка достаточно тривиальна. Опять же при высокой нагрузке на сайт. вам будет обеспечена приемлимая производительность без перегрузки железок камеры на обслуживание всех запросов.

    Но с этим не на форум по WP 😀

    Можно попробовать вставить в <head> страницы

    Попробовал — перестало открываться даже в firefox.

    см «SSL termination with nginx» вылезет куча статей, настройка достаточно тривиальна.

    Жаль только, что на английском…
    И ещё загвоздка — камера не одна, а три…
    По сути — нужен только прямой эфир, без записей и перемотки…

    Модератор Yui

    (@fierevere)

    永子

    сделайте три секции с директивами proxy_pass

    server
    {
    
    ... тут директивы для ssl...
    
    proxy_buffering    on;
    location /cam1/ { proxy_pass http://айпи_камеры1:порт; }
    location /cam2/ { proxy_pass http://айпи_камеры2:порт; }
    ....

    <img src="http://<ip-адрес>:<порт>/<набор букв>?container=mjpeg&stream=main" alt="">

    соответственно станет
    <img src="https://ваш_сервер/cam1/<набор букв>?container=mjpeg&stream=main" alt="">

    наверное для камеры трансляция HTTP заголовков клиента даже и не важна будет, будет достаточно простейшего проксирования с базовой буферизацией.

    Обратите внимание, что это также откроет доступ и к авторизации в админке камеры, т.к. проксированы будут все запросы
    Так что желательно будет использовать что-то вроде

    location /cam1/admin/ {
    deny all;
    }
    • Ответ изменён 3 года, 8 месяцев назад пользователем Yui.

    Передача видео по https требует системных ресурсов, поэтому бесплатно вряд-ли получится. Есть платные сервисы, типа https://devline.ru/translation/ . Но оно того стоит? Https конечно важно, но не до фанатизма. Сейчас даже Яндекс не делает разницы между https и http сайтами, хотя раньше https ранжировал выше.

    Спасибо, попробовал, но не получилось… 🙁
    Может быть, из-за того, что сайт работает на nginx+php-fpm?

    P.S. Доступа к админке камер у меня нет, только эти ссылки…

    Модератор Yui

    (@fierevere)

    永子

    alexander70, вы точно разобрались в вопросе автора темы?

    Может быть, из-за того, что сайт работает на nginx+php-fpm?

    ну так и отлично, nginx уже при деле, вот и пусть проксирует,
    всего то надо внести изменения в конфигурацию сайта

    А что именно не получилось?

    Доступа к админке камер у меня нет

    я про то, что доступ извне к админке надо защитить, а то все равно долбить могут

    Добавил секции с директивами proxy_pass (кстати, получается, можно было и одну, если ip и порт — одинаковые?)
    Переписал ссылки на странице WordPress.

    Но поток всё равно не показывается…

    Ссылка в первом сообщении темы, добавил обновлённую ссылку камеры внизу страницы, после слова «ТЕСТ».

    У @alexander70 просто хобби такое — лезть туда, в чем он не разберается. Так что не обращайте на него внимания, это нормально.

    Модератор Yui

    (@fierevere)

    永子

    получается, можно было и одну, если ip и порт — одинаковые?

    а как может быть что одинаковый айпи у нескольких устройств? такого не бывает.
    ps: хотя посмотрела вашу страничку, вероятно у вас несколько камер, за которыми стоит еще устройство аггрегатор

    можно было и 1 секцию, да
    почему то у вас правда оно вместо проксирования выдает 403

    • Ответ изменён 3 года, 8 месяцев назад пользователем Yui.
Просмотр 12 ответов — с 1 по 12 (всего 12)
  • Тема «Трансляция видео с ip-камеры» закрыта для новых ответов.