Я пытаюсь выяснить GStreamer для «аудио только» на пару дней, но с различными инструкциями между 1.0 и 0.10, и большинство инструкций связано с видео, мне трудно понять, как все это объединяется и разговаривает по сети (такой же диапазон подсети). Большинство примеров также, похоже, хотят отправить аудио в пункт назначения, а не ждать чего-то, чтобы подключиться к нему, и я не думаю, что это то, что мне нужно.GStreamer аудио-руководство?
В основном, я использую систему записи изображений BlueIris, которая разговаривает с IP-камерами. К сожалению, у моих камер нет микрофонов, поэтому я бы хотел использовать запасной RaspberryPI с USB-микрофоном для прослушивания звука, а BlueIris подключится к нему, чтобы получить аудио. По-видимому, я могу указать альтернативные источники звука с rtsp или другим потоковым источником.
Камеры работают отлично, поэтому gstreamer будет только моим источником звука.
Так мой прогресс до сих пор:
Я понял, как воспроизводить звук с микрофона USB к динамикам с помощью:
gst-launch-1.0 alsasrc device=hw:1 ! audioconvert ! autoaudiosink
Это работает прекрасно.
Затем я попытался создать сеанс TCP Sever ждать чего-то для подключения к нему:
gst-launch-1.0 alsasrc device=hw:1 ! audioconvert ! audioresample ! speexenc ! rtpspeexpay ! tcpserversink
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstAudioSrcClock
Redistribute latency...
Redistribute latency...
(Сервер кажется запускается без проблем.)
А затем клиент подключения :
gst-launch-1.0 tcpclientsrc ! speexdec ! autoaudiosink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
ERROR: from element /GstPipeline:pipeline0/GstTCPClientSrc:tcpclientsrc0: Internal data flow error.
Additional debug info:
gstbasesrc.c(2948): gst_base_src_loop(): /GstPipeline:pipeline0/GstTCPClientSrc:tcpclientsrc0:
streaming task paused, reason error (-5)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...
... и это большой NOPE!
Так что я надеюсь проверить, что я могу пойти на свою машину для Windows и запустить VLC и попытаться подключиться к PI малины с чем-то вроде rtsp: //192.168.0.123, но здесь все становится нечетким, особенно когда я не могу даже заставить gstreamer подключиться к себе в одной коробке.
Может кто-нибудь помочь?
+1 его хорошо, чтобы увидеть кто-то действительно попробовать, прежде чем задавать вопрос :) сейчас .. не переживайте, вы очень близко от вашего решения .. первое, чтобы дать вам некоторые Знание: используйте 'GST_DEBUG = 4 gst-launch-1.0 ...', чтобы отлаживать то, что происходит. Теперь вы загружаете поток с помощью rtp, поэтому на приемнике вам нужно depayload с элементом rtp .. его всегда симметрично на сервере и клиенте (ну, конечно, на клиенте его в противоположном направлении, чем на сервере), попробуйте добавить 'rtpspeexdepay' перед speexdec .. когда у вас есть некоторый прогресс, напишите мне, если хотите. – nayana
Большое спасибо @otopolsky за ответ. С тех пор я много чего пробовал (и некоторые проблемы с RPI), и я наконец нашел что-то, что сработало. Вот моя последняя строка: 'gst-launch-1.0 alsasrc device = hw: 1,0! mulawenc! rtppcmupay! udpsink host = 224.1.1.1 auto-multicast = true port = 5000' Итак, как вы можете видеть, я пошел на многоадресный подход. В любом случае, я нахожусь в небольшой частной сети.Таким образом, я могу записать приложение для записи звука в камеру, и я даже могу загрузить VLC на свой ПК с Windows и слушать прямо, перейдя на 'rtp: //224.1.1.1: 5000', и он работает! –
отлично, вы можете добавить свой собственный ответ и принять его как правильный - он поможет другим, рад услышать, что вы решили его после всей борьбы :) – nayana