ALSA dsnoop causes issue with GStreamer video

Nicolas Dufresne nicolas at ndufresne.ca
Wed Apr 14 19:23:12 UTC 2021


Le mardi 13 avril 2021 à 18:03 -0500, StreaminBaby a écrit :
> Hello there, 
> 
> I am using GStreamer to stream live video / audio from a Pi3B with a picam
> module and USB microphone. My end goal is to use the audio from the one USB
> microphone in both the live video / audio stream AND as the input to a
> python script. I understand that this can be done with the ALSA dsnoop
> plugin and have been able to demonstrate it with this /etc/asound.conf
> config:
> 
>     pcm.myTest {
>         type dsnoop
>         ipc_key 2241234
>         slave {
>             pcm "hw:1,0"
>             channels 1
>         }
>     }
> 
>     pcm.!default {
>             type asym
>             playback.pcm {
>                     type plug
>                     slave.pcm "hw:0,0"
>             }
>             capture.pcm {
>                     type plug
>                     slave.pcm "myTest"
>             }
>     }
> 
> With the above ALSA config, the video / audio stream works perfectly using
> the following GStreamer settings, but i am unable to use the microphone in
> other applications (note the "hw:1,0"):
> 
>     #!/bin/bash
>     gst-launch-1.0 -v rpicamsrc vflip=true hflip=false \
>                    name=src preview=0 fullscreen=0 bitrate=10000000 \
>                    annotation-mode=time annotation-text-size=20 \
>                    ! video/x-h264,width=960,height=540,framerate=24/1 \
>                    ! h264parse \
>                    ! rtph264pay config-interval=1 pt=96 \
>                    ! queue max-size-bytes=0 max-size-buffers=0 \
>                    ! udpsink host=192.168.1.101 port=5001 \
>                    alsasrc device=hw:1,0 \
>                    ! audioconvert \
>                    ! audioresample \
>                    ! opusenc \
>                    ! rtpopuspay \
>                    ! queue max-size-bytes=0 max-size-buffers=0 \
>                    ! udpsink host=192.168.1.101 port=5002
> 
> 
> The following (which uses the dsnoop device) causes an issue in the video
> stream which looks like some kind of synchronization problem where instead
> of a nice smooth 24 frames per second I get one frame every ~2-3 seconds.
> The audio continues to work well and im able to use the USB mic
> simultaneously in other applications.

Just some ideas to help give a clue, have you tried setting provide-clock=false
on alsasrc ? Some of the ALSA lib software component do very bad time reporting.

> 
>     #!/bin/bash
>     gst-launch-1.0 -v rpicamsrc vflip=true hflip=false \
>                    name=src preview=0 fullscreen=0 bitrate=10000000 \
>                    annotation-mode=time annotation-text-size=20 \
>                    ! video/x-h264,width=960,height=540,framerate=24/1 \
>                    ! h264parse \
>                    ! rtph264pay config-interval=1 pt=96 \
>                    ! queue max-size-bytes=0 max-size-buffers=0 \
>                    ! udpsink host=192.168.1.101 port=5001 \
>                    alsasrc device=plug:myTest \
>                    ! audioconvert \
>                    ! audioresample \
>                    ! opusenc \
>                    ! rtpopuspay \
>                    ! queue max-size-bytes=0 max-size-buffers=0 \
>                    ! udpsink host=192.168.1.101 port=5002
> 
> I've tried a few things that I've found in some peripherally related forums
> to no avail and im feeling kinda stuck. Do any of you have any suggestions
> on getting the stream's video to play nicely with dsnoop so that I can avoid
> buying another microphone for this project? 
> 
> Thank you for what you do!
> 
> 
> 
> --
> Sent from: http://gstreamer-devel.966125.n4.nabble.com/
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel




More information about the gstreamer-devel mailing list