Использование 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
Ответы
Ответ 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-адреса, которые на самом деле не так, как мы хотим закончить... но эй, это начало!
Ответ 3
У меня возникла проблема в конце процесса, что-то вроде:
- configure: не найден пакет 'gstreamer-1.0'
- configure: ошибка: отсутствует gstreamer-1.0 >= 1.2.3 (GStreamer)
Я нашел решение в этом сообщении:
https://askubuntu.com/info/384059/error-compiling-a-package-configure-error-no-gstreamer-1-0-1-0-0
И он отлично работает!!!