LINUX.ORG.RU

Не читает vlc поток переданный GStreamer

 ,


0

1

Всем доброго дня! Помогите разобраться. Пытаюсь использовать GStreamer для передачи видео с usb(web)-камеры по локальной сети. Снимаю поток с камеры и кидаю на nginx сервер где настроен rtmp.

gst-launch-0.10 v4l2src device=/dev/video1 ! videorate ! decodebin ! tcpserversink rtmp://localhost/myapp/mystream

Камера включается, поток идет. Но открыть через vlc я его не могу. vlc не распознает кодек. Пишет это

Не найден подходящий модуль декодирования: VLC не поддерживает аудио- или видеоформат «undf». К сожалению, вы не можете это исправить.

Подскажите, что поправить?

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

Grid_Sergey
()
Ответ на: комментарий от Grid_Sergey

Для этого можно написать sdp файл и давать его vlc.

Не знаю как этот sdp может выглядеть для rtpmp, для rtp это будет что-то типа

c=IN IP4 192.168.1.7
m=video 5000 RTP/AVP 96 
a=rtpmap:96 H264/90000

urquan
()
Последнее исправление: urquan (всего исправлений: 1)
Ответ на: комментарий от Grid_Sergey

А может подскажете как изменить запись в gst, чтобы поток воспринимался? Был кодированным, например.

vash_sa
() автор топика
Ответ на: комментарий от vash_sa

с планшета, не проверить, но что-то вроде этого:

gst-launch-0.10 v4l2src device=/dev/video1 ! \
video/x-raw-yuv, framerate=25/1, width=640, height=480 ! \
x264enc ! mpegtsmux ! tcpserversink rtmp://localhost/myapp/mystream

gstreamer конечно должен быть собран с x264 (ну или замени на mpeg2enc). Ну и width/height должны быть твои

Grid_Sergey
()
Ответ на: комментарий от Grid_Sergey

Ругается

WARNING: erroneous pipeline: no element "mpegtsmux"
что-то не установлено? без этого элемента
root@orangepipcplus:~# gst-launch-0.10 v4l2src device=/dev/video1 ! video/x-raw-yuv, framerate=25/1, width=640, height=480 ! x264enc ! tcpserversink rtmp://localhost/myapp/mystream
Setting pipeline to PAUSED ...
ERROR: Pipeline doesn't want to pause.
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Could not negotiate format
Additional debug info:
gstbasesrc.c(2830): gst_base_src_start (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
Check your filtered caps, if any
Setting pipeline to NULL ...
Freeing pipeline ...

vash_sa
() автор топика
Ответ на: комментарий от vash_sa

Установил gstreamer1.0. Беру из описания

gst-launch-1.0 videotestsrc ! ximagesink

ожидал тестовый сигнал, но получил:

ПРЕДУПРЕЖДЕНИЕ: ошибочный конвейер: элемент «ximagesink» не найден

пробовал так

gst-launch-1.0 videotestsrc ! autovideosink

выдает следующее:

Установка конвейера в состояние PAUSED… LIBGL: Initialising glshim Подготовка конвейера (PREROLL)… Получен контекст из элемента «autovideosink0-actual-sink-glimage»: gst.gl.GLDisp lay=context, gst.gl.GLDisplay=(GstGLDisplay)«\(GstGLDisplayX11\)\ gldisplayx11-0 »; ОШИБКА: из элемента /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGL ImageSink:autovideosink0-actual-sink-glimage: Failed to connect to X display ser ver Дополнительная отладочная информация: gstglimagesink.c(458): _ensure_gl_setup (): /GstPipeline:pipeline0/GstAutoVideoS ink:autovideosink0/GstGLImageSink:autovideosink0-actual-sink-glimage ОШИБКА: конвейер не хочет подготавливаться (PREROLL). Установка конвейера в состояние NULL… Освобождение конвейера…

Подскажите, что ему нужно?

vash_sa
() автор топика
Ответ на: комментарий от vash_sa

Плагин ximagesink, как и xvimagesink, распостраняются в пакете gstreamer1.0-plugins-base. Попробуйте его установить. Проверить наличие плагина и получить о нем информацию можно следующим образом:

gst-inspect-1.0 xvimagesink

Вывести полный список установленных плагинов можно так:

gst-inspect-1.0 --plugin

Описанный ранее плагин «mpegtsmux» относится к пакету "-plugins-bad"

SkiminokD
()
Ответ на: комментарий от SkiminokD

Спасибо! Еще вопрос. Установил gir1.2-gst-rtsp-server-0.10. Но никак не могу найти более менее подробные примеры работы с ним. Мне нужно сделать аналог IP-камеры, работающей по RTSP-протоколу. Используется для этого usb-камера и комп ARM с установленным debian 8. На него установил gir1.2-gst-rtsp-server-0.10. И на этом остановился. Как его настроить и как с ним работать? Подскажите примеры, описывающие настройку и работу с этим сервером.

vash_sa
() автор топика
Ответ на: комментарий от vash_sa

А как же rtmp? Для rtsp сервера нужен пакет gst-rtsp-server-0.10. В исходниках с ним есть примеры программ. В них достаточно будет подставить нужный pipeline. Если делать на питоне, то возможен следующий код:

import gobject, sys, pygst, os
gobject.threads_init()
pygst.require('0.10')
from gst import rtspserver
server=rtspserver.Server()
server.set_property(«service», «8554»)
factory1 = rtspserver.MediaFactory()
factory1.set_launch(«videotestsrc is-live=1 ! x264enc ! rtph264pay name=pay0 pt=96»)
server.props.media_mapping.add_factory('/stream', factory1)
server.attach()
loop = gobject.MainLoop()
loop.run()

Pipeline обязательно должен заканчиваться элементом rtp*pay с именем pay%d

SkiminokD
()
Ответ на: комментарий от vash_sa

Проявив немного сообразительности можно догадаться, что версия 1.10 является дальнейшим развитием версии 0.10. А уж проявив немного внимательности можно и в истории найти все необходимое. Но к сожалению, до такого додумываются только те, кому это действительно нужно...

SkiminokD
()
Ответ на: комментарий от SkiminokD

Не нужно упрекать человек за то, что он стремится разобраться в том, что ему не понятно. Я не устанавливал из подобных источников пакеты. С исходниками пока у меня проблемы. Я не увидел в них инсталяционных файлов. Поэтому мне не понятно как и куда будет устанавливаться rtsp сервер. Если это был пример с описанием установки, то может вопросов было бы меньше.

vash_sa
() автор топика
Ответ на: комментарий от vash_sa

Так, давайте расставим все по своим местам. gst-rtsp-server это в первую очередь библиотека для разработчиков программного обеспечения, а не продукт для конечного пользователя. Соответственно чтобы им пользоваться нужно писать код на С, С++, Python или другом языке программирования. Сам gstreamer в первую очередь также является мультимедийной библиотекой. Утилита gst-launch в основном используется для тестирования. Но в некоторых случаях может послужить и продуктом для продвинутого конечного пользователя. Как я понял из последнего поста, Ваша цель не «разработка», как я в начале подумал, а поиск готового продукта для конечного пользователя. Если так, то как мне кажется Вам будет проще обратить свой взор на такой законченный продукт, как vlc player. В нем есть так называемый vlm конфигуратор, который при правильной настройке может выступать в качестве rtsp-сервера. Конфигуратор имеет графический интерфейс, так что проблем возникнуть не должно. Готовые конфигурации можно сохранять в файл. Как потренируетесь с ним, поищите как настраивать vlc для работы без gui.

SkiminokD
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.