Используйте gstreamer для потоковой передачи видео и аудио Logitech C920
Я новичок в использовании gstreamer. Я хочу передавать потоковое видео и аудио с моей веб-камеры C920 на другой компьютер, но продолжаю ошибаться при объединении вещей...
Теперь я могу транслировать видео h264 с моего C920 на другой компьютер, используя:
gst-launch-1.0 v4l2src device=/dev/video1 ! video/x-h264,width=1280,height=720,framerate=30/1 ! h264parse ! rtph264pay pt=127 config-interval=4 ! udpsink host=172.19.3.103
И просмотрите это с:
gst-launch-1.0 udpsrc port=1234 ! application/x-rtp, payload=127 ! rtph264depay ! avdec_h264 ! xvimagesink sync=false
Я также могу получить звук с C920 и записать его в файл вместе с тестовым изображением:
gst-launch videotestsrc ! videorate ! video/x-raw-yuv,framerate=5/1 ! queue ! theoraenc ! queue ! mux. pulsesrc device="alsa_input.usb-046d_HD_Pro_Webcam_C920_F1894590-02-C920.analog-stereo" ! audio/x-raw-int,rate=48000,channels=2,depth=16 ! queue ! audioconvert ! queue ! vorbisenc ! queue ! mux. oggmux name=mux ! filesink location=stream.ogv
Но я пытаюсь заставить что-то вроде этого (ниже) работать.. Это не работает, возможно, это даже очень плохая комбинация, которую я сделал!
gst-launch v4l2src device=/dev/video1 ! video/x-h264,width=1280,height=720,framerate=30/1 ! queue ! mux. pulsesrc device="alsa_input.usb-046d_HD_Pro_Webcam_C920_F1894590-02-C920.analog-stereo" ! audio/x-raw-int,rate=48000,channels=2,depth=16 ! queue ! audioconvert ! queue ! x264enc ! queue ! udpsink host=127.0.0.1 port=1234
1 ответ
Вы должны закодировать свое видео перед тем, как связать его с мультиплексором. Кроме того, я не вижу, чтобы вы объявляли тип используемого вами мультиплексора, и вы не помещаете звук в мультиплексор.
Я не уверен, что в gstreamer таким способом даже можно передавать аудио и видео по одному и тому же потоку rtp. Я знаю, что реализация сервера rtsp в gstreamer позволяет аудио и видео вместе, но даже в этом я не уверен, что это все еще два потока, просто отвлеченные от реализации.
Возможно, вы захотите просто разделить потоки и передать их элементу gstrtpbin.