it-swarm.com.ru

Использование Gstreamer для обслуживания потока RTSP, ищется рабочий пример

Мы пытаемся заставить Gstreamer работать на Leopardboard DM368 *, мы успешно убедили его создать тестовое видео (videotestsrc), кодировать его и выгрузить в файл.

Труба, которая работала:

gst-launch -v videotestsrc num-buffers=100 ! queue ! ffenc_mpeg4 bitrate=800000 ! ffmux_mp4 ! filesink location=video_test.mp4

Следующим шагом является изменение канала для потоковой передачи тестовой карты по сети для просмотра на ПК с VLC, используя что-то вроде rtsp: // ip_addr: порт/имя потока , но документация о том, как это сделать, кажется довольно тонкий на земле (и часто устаревший), и примеры, кажется, размывают исходный код и способы командной строки сделать это.

Я свободно признаю, что> 50% проблемы заключается в том, что мы не знакомы с Gstreamer и его различными частями, я всегда обнаруживал, что если у меня есть рабочий пример, чтобы начать с него, я могу ткнуть его палками и отработать остальное оттуда.

Я получил это далеко:

gst-launch -v videotestsrc ! queue ! ffenc_mpeg4 bitrate=800000 ! rtpmp4vpay ! tcpserversink Host=<PC_ip> port=5000

Что, кажется, заставляет что-то происходить в VLC (используя tcp: // board_ip: port ) - кажется, что что-то происходит (не выдает ошибку), но не воспроизводит/показывает что-нибудь. Когда я нарушаю (^ C) GST-процесс, VLC замечает.

Так что, в принципе - любое руководство/обратная связь были бы хорошими, а работа с одной линией была бы фантастической.

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

* = Linux version 2.6.32-17-ridgerun /CPU: ARM926EJ-S
13
John U

Наконец нашел рабочий пример здесь:

GStreamer rtp stream в vlc

Но для этого нужно создать файл .SDP для VLC и указать IP-адреса, что не совсем так, как мы хотим в итоге ... но эй, это начало!

1
John U

Источник : В отличие от RTP, RTSP-сервер согласовывает соединение между RTP-сервером и клиентом по требованию ( Link ). gst-rtsp-server - это не плагин gstreamer, а библиотека, которую можно использовать для реализации вашего собственного RTSP-приложения. Следующий тестовый пример был применен на машине с Ubuntu 12.04.5:

  • Preliminars
    • Установите gstreamer-1.0 с плагинами base/good/ugly/bad
    • Установите autoconf automake autopoint libtool и другие недостающие необходимые инструменты сборки
  • Сборка gst-rtsp-сервера
    • git clone git://anongit.freedesktop.org/gstreamer/gst-rtsp-server && cd gst-rtsp-server
    • Мы используем gstreamer 1.2: git checkout remotes/Origin/1.2
    • Сборка: ./autogen.sh --noconfigure && GST_PLUGINS_GOOD_DIR=$(pkg-config --variable=pluginsdir gstreamer-plugins-bad-1.0) ./configure && make (По какой-то причине, GST_PLUGINS_GOOD_DIR не устанавливается pkg-config, поэтому мы устанавливаем это явно)
  • Тестовый забег
    • Запустите тестовое приложение: cd examples && ./test-launch "( videotestsrc ! x264enc ! rtph264pay name=pay0 pt=96 )"
    • Теперь можно получить доступ к потоку (например, с помощью VLC) удаленно по адресу: rtsp://Host_IP:8554/test
15
Tik0

У меня была проблема в конце процесса, что-то вроде:

  • настройка: не найден пакет "gstreamer-1.0"
  • настроить: ошибка: нет gstreamer-1.0> = 1.2.3 (GStreamer) найден

Я нашел решение в этом посте:

https://askubuntu.com/questions/384059/error-compiling-a-package-configure-error-no-gstreamer-1-0-1-0-0

И это сработало отлично !!!

0
fgfernandez0321