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

<p>мы пытаемся заставить gstreamer работать на leopardboard dm368 *, мы успешно убедили его создать тестовое видео (videotestsrc), кодировать его и выгрузить в файл.</p><p>труба, которая работала:</p><pre><code>gst-launch -v videotestsrc num-buffers=100 ! queue ! ffenc\_mpeg4 bitrate=800000 ! ffmux\_mp4 ! filesink location=video\_test.mp4 </code></pre><p>следующим шагом является изменение канала для потоковой передачи тестовой карты по сети для просмотра на пк с vlc, используя что-то вроде<strong> rtsp: // ip\_addr: порт/имя потока </strong>, но документация о том, как это сделать, кажется довольно тонкий на земле (и часто устаревший), и примеры, кажется, размывают исходный код и способы командной строки сделать это.</p><p>я свободно признаю, что> 50% проблемы заключается в том, что мы не знакомы с gstreamer и его различными частями, я всегда обнаруживал, что если у меня есть рабочий пример, чтобы начать с него, я могу ткнуть его палками и отработать остальное оттуда.</p><p>я получил это далеко:</p><pre><code>gst-launch -v videotestsrc ! queue ! ffenc\_mpeg4 bitrate=800000 ! rtpmp4vpay ! tcpserversink host=<pc\_ip> port=5000 </code></pre><p>что, кажется, заставляет <em>что-то</em> происходить в vlc (используя<strong> tcp: // board\_ip: port </strong>) - кажется, что что-то происходит (не выдает ошибку), но не воспроизводит/показывает что-нибудь. когда я нарушаю (^ c) gst-процесс, vlc замечает.</p><p>так что, в принципе - любое руководство/обратная связь были бы хорошими, а работа с одной линией была бы фантастической.</p><p><em>отредактировано, чтобы добавить:</em> да, я вижу пример test\_video.c, но он компилирует специальную программу, которая делает что-то, что должно быть возможно просто вызвать из командной строки, чтобы доказать концепцию.</p><pre><code>* = linux version 2.6.32-17-ridgerun /cpu: arm926ej-s </code></pre>

<p>наконец нашел рабочий пример здесь:</p><p> <a href="https://stackoverflow.com/questions/13154983/gstreamer-rtp-stream-to-vlc">gstreamer rtp stream в vlc</a> </p><p>но для этого нужно создать файл .sdp для vlc и указать ip-адреса, что не совсем так, как мы хотим в итоге ... но эй, это начало!</p>

<p> <a href="https://github.com/tik0/mat2gstreamer/blob/master/gstreamer.md">источник</a> : в отличие от rtp, rtsp-сервер согласовывает соединение между rtp-сервером и клиентом по требованию ( <a href="https://stackoverflow.com/questions/4303439/what-is-the-difference-between-rtp-or-rtsp-in-a-streaming-server">link</a> ). <a href="https://gstreamer.freedesktop.org/data/events/gstreamer-conference/2013/gstreamer%20conference%202013%20-%20wim%20taymans%20-%20latest%20gstreamer%20rtsp%20server%20features.pdf">gst-rtsp-server</a> - это не плагин gstreamer, а библиотека, которую можно использовать для реализации вашего собственного rtsp-приложения. следующий тестовый пример был применен на машине с ubuntu 12.04.5:</p><ul> <li>preliminars <ul> <li>установите gstreamer-1.0 с плагинами base/good/ugly/bad</li> <li>установите <code>autoconf automake autopoint libtool</code> и другие недостающие необходимые инструменты сборки</li> </ul></li> <li>сборка gst-rtsp-сервера <ul> <li><code>git clone git://anongit.freedesktop.org/gstreamer/gst-rtsp-server && cd gst-rtsp-server</code></li> <li>мы используем gstreamer 1.2: <code>git checkout remotes/origin/1.2</code></li> <li>сборка: <code>./autogen.sh --noconfigure && gst\_plugins\_good\_dir=$(pkg-config --variable=pluginsdir gstreamer-plugins-bad-1.0) ./configure && make</code> (по какой-то причине, gst\_plugins\_good\_dir не устанавливается pkg-config, поэтому мы устанавливаем это явно)</li> </ul></li> <li>тестовый забег <ul> <li>запустите тестовое приложение: <code>cd examples && ./test-launch "( videotestsrc ! x264enc ! rtph264pay name=pay0 pt=96 )"</code></li> <li>теперь можно получить доступ к потоку (например, с помощью vlc) удаленно по адресу: <code>rtsp://host\_ip:8554/test</code></li> </ul></li> </ul>

<p>у меня была проблема в конце процесса, что-то вроде:</p><ul> <li>настройка: не найден пакет "gstreamer-1.0"</li> <li>настроить: ошибка: нет gstreamer-1.0> = 1.2.3 (gstreamer) найден</li> </ul><p>я нашел решение в этом посте:</p><p> <a href="https://askubuntu.com/questions/384059/error-compiling-a-package-configure-error-no-gstreamer-1-0-1-0-0">https://askubuntu.com/questions/384059/error-compiling-a-package-configure-error-no-gstreamer-1-0-1-0-0</a> </p><p>и это сработало отлично !!!</p>