Hi,
Hoping that someone can shed some light on this... The following pipeline results in a file with gaps every 5 seconds: export TESTSOURCE1="audiotestsrc wave=0 volume=0.8 is-live=true do-timestamp=true samplesperbuffer=480" export SINK="wavenc ! filesink location=test.wav" timeout 60 gst-launch-1.0 $TESTSOURCE1 ! audiomixer ! $SINK If you open the resulting wav file (e.g., in audacity), there are gaps every 5 seconds. If you remove the audiomixer from the pipeline, there are no gaps. If you use an adder (instead of the audiomixer), there are no gaps. I've looked at logs (GST_DEBUG=audiomixer:6), and there are no obvious errors/warnings/etc. I realize that the audiotestsrc is not really a live-source and I'm not sure how well it behaves as such. But I am actually troubleshooting a similar issue using an alsasrc instead. I am hoping that if I understand what's going on here, it will help on the other issue. (For the issue with the alsasrc, I've gone so far as to write the data to files; one at the src of the element feeding the audiomixer, and one at the src of the audiomixer itself -- the first shows no gaps, while the later does show gaps.) Many thanks in advance to any advice. -jim _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Don't use 'do-timestamp=true' with audiotestsrc. It will not do the
right thing.
Cheers -Matt On 8/12/20 5:12 pm, jim nualart wrote:
_______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel OpenPGP_signature (505 bytes) Download Attachment |
In reply to this post by jim nualart
Hi Matt, I tried that as well. I get the same result .. gaps every 5 seconds. If I remove is-live (with or without do-timestamp), then there are no gaps. However, in this case, I also get a much larger, and longer, file; which I don't understand. And again, if I use an adder (vs audiomixer), I get no gaps (with is-live and do-timestamp both true). And if I remove the adder, same ... no gaps. I'm trying not to get hung up on audiotestsrc itself as it is simply a way for me to demonstrate what I see with my pipeline using alsasrc and an audiomixer. I suppose I don't really understand what audiomixer is doing. Another oddity (I think) is that if instead of running the sample pipeline for a set time (using the timeout command), I instead use num-buffers=1000 (in audiotestsrc), I get different resulting file sizes: - with an adder, I get a file with 10.884s of audio and a size of 960056 bytes. - with an audiomixer, I get a file with 10.920s of audio and a size of 1926332 bytes. Any chance someone is willing to run the same test and compare results? export TESTSOURCE1="audiotestsrc wave=0 volume=0.8 is-live=true do-timestamp=true samplesperbuffer=480" export SINK="wavenc ! filesink location=test.wav" timeout 60 gst-launch-1.0 $TESTSOURCE1 blocksize=960 ! audiomixer ! $SINK The gaps go away if I use an adder, as does my actual problem in my "real" pipeline, but I'd like to understand why. thanks in advance, -jim Date: Tue, 8 Dec 2020 19:05:25 +1100 _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
In reply to this post by jim nualart
A little more info on this... 1. By "gaps", I mean silence or 0s. And this is not simply an artifact of using filesrc to write a wav. The gaps are also audible (or rather, not audible, since it's silence, but I think everyone knows what I mean :-) 2. As I mentioned previously, I see the same behavior (gaps) if I replace audiotestsrc with alsasrc (pointing to a line-in where I am playing a sine wave from my phone). 3. Enabling GST_DEBUG=audioaggregator:5 I see a Timeout msg, e.g., "Timeout, missing 36 frames (0:00:00.000816326)" that corresponds to all the gaps in the resulting wav file. Based on that, I start to think that maybe I need to set a latency on the audiomixer (the default is 0). However, no value I use makes any difference. Next, and I can't explain why, I put a queue immediately after the audiomixer (no latency or other non-default settings). This eliminates the Timeouts (and gaps of silence). This holds true when I switch back to an alsasrc instead of the audiotestsrc. I dumped the graphs -- the queue (it's the only queue in the very short pipeline) does not show as buffering any data. So I am really confused as to how this "fixed" the issue. Does anyone have an explanation? I'd settle for even just a well-written theory :-) thanks in advance, -jim Hi Matt, _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Le samedi 12 décembre 2020 à 13:21 -0600, jim nualart a écrit :
> A little more info on this... > > 1. By "gaps", I mean silence or 0s. And this is not simply an artifact of > using filesrc to write a wav. The gaps are also audible (or rather, not > audible, since it's silence, but I think everyone knows what I mean :-) > > 2. As I mentioned previously, I see the same behavior (gaps) if I replace > audiotestsrc with alsasrc (pointing to a line-in where I am playing a sine > wave from my phone). > > 3. Enabling GST_DEBUG=audioaggregator:5 I see a Timeout msg, e.g., "Timeout, > missing 36 frames (0:00:00.000816326)" that corresponds to all the gaps in the > resulting wav file. > > Based on that, I start to think that maybe I need to set a latency on the > audiomixer (the default is 0). However, no value I use makes any difference. > > Next, and I can't explain why, I put a queue immediately after the > audiomixer (no latency or other non-default settings). This eliminates the > Timeouts (and gaps of silence). This holds true when I switch back to an > alsasrc instead of the audiotestsrc. I have also hit situation were a queue was needed after audiomixer / audiointerleave in order for the timeout mechanism to work properly. Basically, push-back from downstream can delay the aggregator passed it's timeout, and you may endup in that state forever. This is a limitation of the timeout mechanism I believe, at least I don't see other way around to make this timeout behave like intented. > > I dumped the graphs -- the queue (it's the only queue in the very short > pipeline) does not show as buffering any data. So I am really confused as to > how this "fixed" the issue. > > Does anyone have an explanation? I'd settle for even just a well-written > theory :-) > > thanks in advance, > -jim > > > > > Hi Matt, > > I tried that as well. I get the same result .. gaps every 5 seconds. > > > > If I remove is-live (with or without do-timestamp), then there are no gaps. > > However, in this case, I also get a much larger, and longer, file; which I > > don't understand. > > > > And again, if I use an adder (vs audiomixer), I get no gaps (with is-live > > and do-timestamp both true). And if I remove the adder, same ... no gaps. > > > > I'm trying not to get hung up on audiotestsrc itself as it is simply a way > > for me to demonstrate what I see with my pipeline using alsasrc and an > > audiomixer. > > > > I suppose I don't really understand what audiomixer is doing. Another > > oddity (I think) is that if instead of running the sample pipeline for a > > set time (using the timeout command), I instead use num-buffers=1000 (in > > audiotestsrc), I get different resulting file sizes: > > - with an adder, I get a file with 10.884s of audio and a size of 960056 > > bytes. > > - with an audiomixer, I get a file with 10.920s of audio and a size > > of 1926332 bytes. > > > > Any chance someone is willing to run the same test and compare results? > > export TESTSOURCE1="audiotestsrc wave=0 volume=0.8 is-live=true > > do-timestamp=true samplesperbuffer=480" > > export SINK="wavenc ! filesink location=test.wav" > > timeout 60 gst-launch-1.0 $TESTSOURCE1 blocksize=960 ! audiomixer ! $SINK > > > > The gaps go away if I use an adder, as does my actual problem in my "real" > > pipeline, but I'd like to understand why. > > > > thanks in advance, > > -jim > > > > > > > Date: Tue, 8 Dec 2020 19:05:25 +1100 > > > From: Matthew Waters <[hidden email]> > > > > > > Don't use 'do-timestamp=true' with audiotestsrc.? It will not do the > > > right thing. > > > > > > Cheers > > > -Matt > > > > > > On 8/12/20 5:12 pm, jim nualart wrote: > > > > Hi, > > > > Hoping that someone can shed some light on this... > > > > > > > > The following pipeline results in a file with gaps every 5 seconds: > > > > export TESTSOURCE1="audiotestsrc wave=0 volume=0.8 is-live=true > > > > do-timestamp=true samplesperbuffer=480" > > > > export SINK="wavenc ! filesink location=test.wav" > > > > timeout 60 gst-launch-1.0 $TESTSOURCE1 ! audiomixer ! $SINK > > > > > > > > If you open the resulting wav file (e.g., in audacity), there are gaps > > > > every 5 seconds. > > > > > > > > If you remove the audiomixer?from the pipeline, there are no gaps. If > > > > you use an adder (instead of the audiomixer), there are no gaps. > > > > > > > > I've looked at logs (GST_DEBUG=audiomixer:6), and there are no obvious > > > > errors/warnings/etc. > > > > > > > > I realize that the audiotestsrc is not really a live-source and I'm > > > > not sure how well it behaves as such. But I am actually > > > > troubleshooting a similar issue using an alsasrc instead. I am hoping > > > > that if I understand what's going on here, it will help on the other > > > > issue. (For the issue with the alsasrc, I've gone so far as to write > > > > the data to files; one at the src of the element feeding the > > > > audiomixer, and one at the src of the audiomixer itself -- the first > > > > shows no gaps, while the later does show gaps.) > > > > > > > > Many thanks in advance to any advice. > > > > -jim > > > > > > > > _______________________________________________ > > > > > _______________________________________________ > gstreamer-devel mailing list > [hidden email] > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
In gstreamer, a queue is also a thread boundary.
By adding queues you are adding threads. My theory: In your scenario, the extra queue (with thread) may be allowing audio information to flow through your pipeline more freely. On Mon, Dec 14, 2020 at 7:35 AM Nicolas Dufresne <[hidden email]> wrote: Le samedi 12 décembre 2020 à 13:21 -0600, jim nualart a écrit : _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
In reply to this post by jim nualart
Nicolas and David, thanks for the input. Both sound like reasonable explanations to me. From: Nicolas Dufresne <[hidden email]> From: David Ing <[hidden email]>
_______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |