Подтвердить что ты не робот

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

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

Работающая труба:

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

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

Я соглашусь с тем, что > 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
4b9b3361

Ответ 1

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

  • Preliminars
    • Установите gstreamer-1.0 с базовыми/хорошими/уродливыми/плохими плагинами.
    • Установите autoconf automake autopoint libtool, а другие отсутствующие необходимые инструменты сборки
  • Построить gst-rtsp-server
    • 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

Ответ 2

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

поток Rtp GStreamer для vlc

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