Потоковая передача xh264 на веб-сайт с использованием gstreamer-1.0

Я новичок в GStreamer, поэтому был бы рад, если бы вы мне помогли.

Мне нужно передать видеосигнал с почти нулевой задержкой с веб-камеры на сервер, и они смогут просматривать поток на веб-сайте. Веб-камера подключена к Raspberry Pi 3, поскольку монтажная платформа ограничена по месту. В результате использования Pi я действительно не могу перекодировать видео на самом Pi. Поэтому я купил веб-камеру Logitech C920, которая может выводить необработанный h264-поток.

К настоящему времени мне удалось просмотреть поток на моем компьютере с Windows, но не удалось заставить работать весь веб-сайт. Мои «достижения»:

  • Отправитель:

    gst-launch-1.0 -e -v v4l2src device=/dev/video0 ! video/x-h264,width=1920,height=1080,framerate=30/1 ! rtph264pay pt=96 config-interval=5 mtu=60000 ! udpsink host=192.168.0.132 port=5000
    

Я понимаю эту команду: получить сигнал video-device0, который представляет собой поток h264 с определенной шириной, высотой и частотой кадров. Затем упакуйте его в rtp-пакет с достаточно высоким mtu, чтобы не было артефактов, и заключите rtp-пакет в udp-пакет и транслируйте его на порт ip +.

  • Получатель:

    gst-launch-1.0 -e -v udpsrc port=5000 ! application/x-rtp, payload=96 ! rtpjitterbuffer ! rtph264depay ! avdec_h264 ! fpsdisplaysink sync=false text-overlay=false
    

Я понимаю эту команду: получить udp-пакет на порт 5000. Приложение сообщает, что это rtp-пакет внутри. Я не знаю, что делает rtpjitterbuffer, но он немного уменьшает задержку видео. rtph264depay говорит, что внутри rtp находится поток в кодировке h264. Чтобы получить необработанные данные, которые понимает fpsdisplaysink, нам нужно декодировать сигнал h264 с помощью avdec_h264.

Следующим моим шагом было изменение приемника-приемника на локальный TCP-приемник и вывод этого сигнала со следующим тегом html5:

<video width=320 height=240 autoplay>
    <source src="http://localhost:#port#">
</video>

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

Мне не хватает видеоконтейнера, например MP4, для моего видео? Я ошибаюсь с расшифровкой? Что я делаю неправильно? Как я могу улучшить свое решение? Как бы вы решили эту проблему?

С наилучшими пожеланиями

Потоковая передача видео жить в веб-браузер в наши дни не является простой задачей, см. Здесь: stackoverflow.com/questions/46788860/…

John U 31.10.2018 12:28
1
1
717
0

Другие вопросы по теме