Лучший подход, чтобы получить RTSP потокового в веб-браузер с IP-камеры?

можно ли получить потоковые данные RTSP в веб-браузере?

Ниже приведены некоторые из моих выводов. Пожалуйста, поправьте меня, если я ошибаюсь?

  1. только Mac OS, и Safari поддерживает RTSP Live Streaming.

  2. HTML 5 видео не поддерживает RTSP.

  3. Я могу использовать плагин VLC, но я не хочу его использовать.

возможность смешивания ffmpeg а websocket?

предположим, что моя IP-камера подключена к Ethernet.

на клиентской машине:

  1. я запускаю ffmpeg, чтобы получить данные с сервера (т. е. IP)
  2. клиентская машина запускает websocket.
  3. как только ffmpeg получает данные с RTSP-сервера, он декодирует и генерирует raw-изображение любого формата (например: yuv).
  4. теперь я должен отправить это изображение в браузер через websocket.

вопрос:

  1. это правильный подход ?
  2. как я могу получить декодированное изображение из видео в браузере ?

Я могу ошибаться в разных местах. Просьба представить информацию.

2 ответов


здесь это запись в блоге или учебник, если хотите, который достигает чего-то очень похожего.

их установка немного отличается, но это резюме:

использовать ffmeg для преобразования входных данных в mpeg1video:

ffmpeg  -i rtsp://whatever -f mpeg1video -b 800k -r 30 http://localhost:8082/yourpassword/640/480/

установить node.js С stream-server.js скрипт jsmpeg и ws пакет WS WebSocket.

для просмотра потока используйте stream-example.html и jsmpg.js С jsmpeg. Измените URL WebSocket в stream-example.html to localhost и откройте его в своем любимом браузере.

обновление an вот тема предложите два других рабочих решения, с тегом


мне нужно показать потоковую передачу в разных plataforms и браузерах. Чтобы сделать это без использования каких-либо плагинов (не уверен, что он будет работать на смартфонах и планшетах), используется подход, очень похожий на ваш. Задача ffmpeg crontab создает 3 изображения в секунду и сохраняет их в каталоге. Используя Jquery, вызов ajax на php считывает каталог и получает имя файла, чтобы изменить изображение (только изменение атрибута 'src'<img>), каждые 330ms. Чтобы решить проблему хранения, используется другое задача crontab, которая удаляет файлы с более чем 1 минутой. Его не настоящая потоковая передача, но кросс-браузер, и решает проблему довольно хорошо.

задача ffmpeg

ffmpeg -i "rtsp://path/to/cam" -s 320x240 -f image2 -vf fps=fps=3 cache/%04d.jpg

пример вызова ajax

$.ajax({
        url: '_read_dir.php',
        type: 'POST',
        dataType: 'json'
    })
    .done(function(result) {        
        $("#img_cam").prop('src',"cache/" + result.img);            
    });

задача управления хранилищем

find /var/www/path/to/dir -mmin +1 -exec rm -f {} \;

надеюсь, смогут помочь! :)