2016-06-08 2 views
1

Я пытаюсь выяснить 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

+1 его хорошо, чтобы увидеть кто-то действительно попробовать, прежде чем задавать вопрос :) сейчас .. не переживайте, вы очень близко от вашего решения .. первое, чтобы дать вам некоторые Знание: используйте 'GST_DEBUG = 4 gst-launch-1.0 ...', чтобы отлаживать то, что происходит. Теперь вы загружаете поток с помощью rtp, поэтому на приемнике вам нужно depayload с элементом rtp .. его всегда симметрично на сервере и клиенте (ну, конечно, на клиенте его в противоположном направлении, чем на сервере), попробуйте добавить 'rtpspeexdepay' перед speexdec .. когда у вас есть некоторый прогресс, напишите мне, если хотите. – nayana

+0

Большое спасибо @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', и он работает! –

+0

отлично, вы можете добавить свой собственный ответ и принять его как правильный - он поможет другим, рад услышать, что вы решили его после всей борьбы :) – nayana

ответ

1

Это сделал это для меня:

gst-launch-1.0 alsasrc device=hw:1,0 ! mulawenc ! rtppcmupay ! udpsink host=224.1.1.1 auto-multicast=true port=5000

Теперь VLC работает собирается rtp://224.1.1.1:5000 и имеет правильный кодек, который я хотел.

Переходим к следующей проблеме ...

Смежные вопросы