GNOME Bugzilla – Bug 777862
gnome-sound-recorder: trying to record sound gives ' Your audio capture settings are invalid'
Last modified: 2017-03-20 04:42:07 UTC
On both Debian Unstable and Tails, using gnome-sound-recorder and trying to record sound gives an error message: 'Your audio capture settings are invalid' Debian bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=852870 Tails bug: https://labs.riseup.net/code/issues/11780 There's no output from this, nor anyway that I can see to tweak my audio settings. My audio works for Iceweasel + Google Hangouts, and I can use my mic. The system is using pulseaudio.
Hi, That error indicates that there is a missing GStreamer src element. Can you tell me what GStreamer packages you have installed and what codec you are using for the recording?
Created attachment 345557 [details] installed gstreamer packages
Hi Meg, I was using the defaults (honestly, didn't realize there was an option), so Ogg Vorbis. I've just tested Ogg Vorbis, Opus, Flac, MP3 and MOV, none of which on my Debian unstable machine. I've attached my list of installed gstreamer packages as an attachment (it was a bit long for an inline). Please let me know if I can be of further assistance.
I can't reproduce your bug so far, but I used to get a similar error on my system that was fixed by restarting the pulseaudio demon. Can you try that?
(In reply to Meg Ford from comment #4) > I can't reproduce your bug so far, but I used to get a similar error on my > system that was fixed by restarting the pulseaudio demon. Can you try that? doing: $ pulseaudio -k $ pulseaudio --start $ gnome-sound-recorder gives the same error. Are there some debugging channels I could enable that would shed more light on this? Alternatively, if you're able to boot tails (a vm should work), you could enable root and install gnome-sound-recorder, where it's reproducible (I've most recently tested in 2.10, which is the current release).
If you cd into the directory with the bin file, you can run GST_DEBUG=6 ./gnome-sound-recorder. That will give you a few thousand lines of output. Please attach them here and I'll take a look. Thanks for the vm tip! I run Fedora, so I tried to make a live usb of Debian 9 last night but it failed to boot. I'll try the vm tonight.
Don't bother with the debug output. I can reproduce the error on Tails. Will write up a fix tomorrow. Thanks for the report!
So, this is caused by having <Glib 2.46. I changed the code to use some recent Gio File monitor flags and events, but they are only in >=2.46. Does updating the package fix the error for you?
AFAICT, I have 2.50.3 (on my Debian unstable machine, I haven't checked on Tails). I'll attach a listing from dpkg -l.
Created attachment 347030 [details] glib packages
That's odd; the error is clearly because the Gio.FileMonitor Flags aren't recognized: amnesia@amnesia:~/Tor Browser$ gnome-sound-recorder Gjs-Message: JS LOG: Sound Recorder started (org.gnome.SoundRecorder:14743): Gjs-WARNING **: JS ERROR: Error: Expected type flags for Argument 'flags' but got type 'undefined' Listview<.monitorListview@resource:///org/gnome/SoundRecorder/js/listview.js:79 wrapper@resource:///org/gnome/gjs/modules/lang.js:169 MainView<.scrolledWinAdd@resource:///org/gnome/SoundRecorder/js/mainWindow.js:535 wrapper@resource:///org/gnome/gjs/modules/lang.js:169 Listview<._onNextFileComplete/<@resource:///org/gnome/SoundRecorder/js/listview.js:153 main@resource:///org/gnome/SoundRecorder/js/main.js:42 run@resource:///org/gnome/gjs/modules/package.js:192 @/usr/bin/gnome-sound-recorder:6 I wonder why this is happening on Debian systems but I don't see it in GNOME. I'll add some code to work around it and let you know when it's fixed.
Hi Austin, I added a workaround in the code here: https://git.gnome.org/browse/gnome-sound-recorder/commit/?id=895728ed10581d0d2b3cab1dcd256e1ce889f502 This works correctly for me, but I'd like to verify that this fixes the issue for you. Do you need me to make a release for you to test or can you use the code from master for testing?
(In reply to Meg Ford from comment #12) > Hi Austin, > > I added a workaround in the code here: > https://git.gnome.org/browse/gnome-sound-recorder/commit/ > ?id=895728ed10581d0d2b3cab1dcd256e1ce889f502 > > This works correctly for me, but I'd like to verify that this fixes the > issue for you. Do you need me to make a release for you to test or can you > use the code from master for testing? Hi Meg, Thanks for the fix (and the release offer). I'm capable of compiling. I did a git pull, and compiled 3.21.92-12-g895728e, but unfortunately I still see the issue on my Debian unstable laptop (which is where that glib package list came from). If there's some log I can get you that can help more, please let me know.
Can you run gnome-sound-recorder in the terminal and paste the error output when you try to record?
(In reply to Meg Ford from comment #14) > Can you run gnome-sound-recorder in the terminal and paste the error output > when you try to record? Unfortunately, there's not any. On startup, I see: austin@debian-laptop:~/src/gnome-sound-recorder$ ./src/org.gnome.SoundRecorder Gjs-Message: JS LOG: Running from source tree, using local files Gjs-Message: JS LOG: Sound Recorder started then nothing after interacting with the UI. Are you on IRC at all? I feel like that would be faster for debuggging than BZ :)
N/m, just found your wiki page. I'll send you a private mail about it.
(In reply to Austin English from comment #15) > (In reply to Meg Ford from comment #14) > > Can you run gnome-sound-recorder in the terminal and paste the error output > > when you try to record? > > Unfortunately, there's not any. On startup, I see: > austin@debian-laptop:~/src/gnome-sound-recorder$ > ./src/org.gnome.SoundRecorder > Gjs-Message: JS LOG: Running from source tree, using local files > Gjs-Message: JS LOG: Sound Recorder started > > then nothing after interacting with the UI. > > Are you on IRC at all? I feel like that would be faster for debuggging than > BZ :) Could you try to run the app with JHBuild and paste the log? Thanks.
(In reply to Miguel Vaello Martínez from comment #17) > (In reply to Austin English from comment #15) > > (In reply to Meg Ford from comment #14) > > > Can you run gnome-sound-recorder in the terminal and paste the error output > > > when you try to record? > > > > Unfortunately, there's not any. On startup, I see: > > austin@debian-laptop:~/src/gnome-sound-recorder$ > > ./src/org.gnome.SoundRecorder > > Gjs-Message: JS LOG: Running from source tree, using local files > > Gjs-Message: JS LOG: Sound Recorder started > > > > then nothing after interacting with the UI. > > > > Are you on IRC at all? I feel like that would be faster for debuggging than > > BZ :) > > Could you try to run the app with JHBuild and paste the log? > > Thanks. This bug is only happening in Debian and Tails. It is not reproducible in JhBuild.
Still preesnt in still present with 3.21.92-15-gae4db49 after the updated fix.
(In reply to Austin English from comment #19) > Still preesnt in still present with 3.21.92-15-gae4db49 after the updated > fix. You can try running the recorder with GST_DEBUG=4 ./src/org.gnome.SoundRecorder and see if you get any useful output. When I ran it that way on Tails just now I got 0:00:04.808620096 15032 0x9af2020 INFO GST_ELEMENT_FACTORY gstelementfactory.c:456:gst_element_factory_make: no such element factory "pulsesrc"! I'm honestly not sure why the app can't find any GStreamer plugins, considering the package manager says they're installed: amnesia@amnesia:~$ sudo apt-get install gstreamer1.0* [sudo] password for amnesia: Reading package lists... Done Building dependency tree Reading state information... Done Note, selecting 'gstreamer1.0-fluendo-mp3' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-vaapi' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-audiosource' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-pocketsphinx' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-vaapi-doc' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-clutter' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-alsa' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-videosink' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-visualization' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-plugins-base-apps' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-tools' for regex 'gstreamer1.0*' Note, selecting 'libgstreamer1.0-0-dbg' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-pulseaudio' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-plugins-ugly-doc' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-plugins-base-doc' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-plugins-really-bad' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-plugins-ugly' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-doc' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-qapt' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-rtsp-dbg' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-libav-dbg' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-plugins-good' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-ffmpeg' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-plugins-good-dbg' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-espeak' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-plugins-bad-dbg' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-rtsp' for regex 'gstreamer1.0*' Note, selecting 'libgstreamer1.0-dev' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-audiosink' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-videosource' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-gnonlin' for regex 'gstreamer1.0*' Note, selecting 'libgstreamer1.0-0' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-plugins-good-doc' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-crystalhd' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-plugins-bad-doc' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-plugins-base' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-packagekit' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-nice' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-lame' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-clutter-3.0' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-x' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-libav' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-plugins-ugly-dbg' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-plugins-base-dbg' for regex 'gstreamer1.0*' Note, selecting 'gstreamer1.0-plugins-bad' for regex 'gstreamer1.0*' gstreamer1.0-plugins-base is already the newest version. gstreamer1.0-clutter is already the newest version. gstreamer1.0-libav is already the newest version. libgstreamer1.0-0 is already the newest version. gstreamer1.0-gnonlin is already the newest version. gstreamer1.0-plugins-bad is already the newest version. gstreamer1.0-plugins-ugly is already the newest version. gstreamer1.0-plugins-good is already the newest version. gstreamer1.0-x is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 168 not upgraded. dpkg-query -l 'gstreamer1.0*' gives: un gstreamer1.0-a <none> <none> (no description available) un gstreamer1.0-a <none> <none> (no description available) ii gstreamer1.0-c 2.0.12-1 i386 Clutter PLugin for GStreamer 1.0 ii gstreamer1.0-g 1.2.1-1 i386 non-linear editing module for GSt un gstreamer1.0-l <none> <none> (no description available) ii gstreamer1.0-l 1.4.4-2 i386 libav plugin for GStreamer ii gstreamer1.0-p 1.4.4-2.1+de i386 GStreamer plugins from the "bad" ii gstreamer1.0-p 1.4.4-2 i386 GStreamer plugins from the "base" ri gstreamer1.0-p 1.4.4-2+deb8 i386 GStreamer plugins from the "good" un gstreamer1.0-p <none> <none> (no description available) ii gstreamer1.0-p 1.4.4-2+b1 i386 GStreamer plugins from the "ugly" un gstreamer1.0-p <none> <none> (no description available) un gstreamer1.0-t <none> <none> (no description available) un gstreamer1.0-v <none> <none> (no description available) un gstreamer1.0-v <none> <none> (no description available) un gstreamer1.0-v <none> <none> (no description available) ii gstreamer1.0-x 1.4.4-2 i386 GStreamer plugins for X11 and Pan When I check for the plugin I get: amnesia@amnesia:~$ gst-inspect-1.0 pulsesrc bash: gst-inspect-1.0: command not found When I look for the pulseaudio shared library I can't find it, either: amnesia@amnesia:/$ sudo find -iname "libgstpulse.so" [sudo] password for amnesia: ./usr/lib/i386-linux-gnu/gstreamer-0.10/libgstpulse.so ./lib/live/mount/rootfs/filesystem.squashfs/usr/lib/i386-linux-gnu/gstreamer-0.10/libgstpulse.so Can you verify that any of these things are happening on your system? I generally use Fedora and everything is fine on my system there, but it's possible I'm missing something simple that a Debian person would recognize quickly. BTW, for Tails 2.10 Jessie backports is not included in the sources list so I had to add it to get >= Glib 2.46. The default version of Glib was 2.42.1.
Created attachment 347732 [details] gst debug log
Hi Meg, On my Debian Sid system, I ran with GST_DEBUG=4 (attached). I see the pulsesrc comment: 0:00:03.606222867 29365 0xd3c730 INFO default encoding-profile.c:1278:gst_encoding_profile_get_file_extension: caps application/ogg, ext: ogg 0:00:03.606878904 29365 0xd3c730 INFO GST_ELEMENT_FACTORY gstelementfactory.c:460:gst_element_factory_make: no such element factory "pulsesrc"! Doing: $ apt-get -y install gstreamer1.0-pulseaudio works for me! I haven't tested on Tails yet, but at least for Debian it appears to be a missing package dependency? Does gnome-sound-recorder always expect to have pulse available?
(In reply to Austin English from comment #22) > Hi Meg, > > On my Debian Sid system, I ran with GST_DEBUG=4 (attached). I see the > pulsesrc comment: > > 0:00:03.606222867 29365 0xd3c730 INFO default > encoding-profile.c:1278:gst_encoding_profile_get_file_extension: caps > application/ogg, ext: ogg > 0:00:03.606878904 29365 0xd3c730 INFO GST_ELEMENT_FACTORY > gstelementfactory.c:460:gst_element_factory_make: no such element factory > "pulsesrc"! > > Doing: > $ apt-get -y install gstreamer1.0-pulseaudio > > works for me! I haven't tested on Tails yet, but at least for Debian it > appears to be a missing package dependency? Does gnome-sound-recorder always > expect to have pulse available? Yes, you'll always need the gstreamer pulseaudio plugin. It's usually included in gst-plugins-good, so it's odd that you had to install it separately.
(In reply to Meg Ford from comment #23) > (In reply to Austin English from comment #22) > > Hi Meg, > > > > On my Debian Sid system, I ran with GST_DEBUG=4 (attached). I see the > > pulsesrc comment: > > > > 0:00:03.606222867 29365 0xd3c730 INFO default > > encoding-profile.c:1278:gst_encoding_profile_get_file_extension: caps > > application/ogg, ext: ogg > > 0:00:03.606878904 29365 0xd3c730 INFO GST_ELEMENT_FACTORY > > gstelementfactory.c:460:gst_element_factory_make: no such element factory > > "pulsesrc"! > > > > Doing: > > $ apt-get -y install gstreamer1.0-pulseaudio > > > > works for me! I haven't tested on Tails yet, but at least for Debian it > > appears to be a missing package dependency? Does gnome-sound-recorder always > > expect to have pulse available? > > Yes, you'll always need the gstreamer pulseaudio plugin. It's usually > included in gst-plugins-good, so it's odd that you had to install it > separately. Looks like Debian needs to update its package dependencies: https://packages.debian.org/sid/gnome-sound-recorder However, I noticed that Fedora is depending on gstreamer1-plugins-base, not gstreamer1-plugins-good: http://pkgs.fedoraproject.org/cgit/rpms/gnome-sound-recorder.git/tree/gnome-sound-recorder.spec is that intentional, and gnome-sound-recorder just works works by luck from some other package pulling it in?
It sounds like luck to me. Pulseaudio is in plugins-good https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-plugins/html/gst-plugins-good-plugins-plugin-pulseaudio.html#plugin-pulseaudio I'll update configure.ac to include the all GStreamer dependencies.
(In reply to Meg Ford from comment #25) > It sounds like luck to me. Pulseaudio is in plugins-good > https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good- > plugins/html/gst-plugins-good-plugins-plugin-pulseaudio.html#plugin- > pulseaudio > > I'll update configure.ac to include the all GStreamer dependencies. Cool. While that's helpful, I think the proper thing to do here would be: A) change Fedora's dependencies to gstreamer1-plugins-good, rather than base (your call, of course) B) Detect if gstreamer-pulseaudio is missing, and warn the user appropriately. I'm not very familiar with gnome-sound-recorder's codebase, so I'm not sure how difficult B would be..
(In reply to Austin English from comment #26) > (In reply to Meg Ford from comment #25) > > It sounds like luck to me. Pulseaudio is in plugins-good > > https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good- > > plugins/html/gst-plugins-good-plugins-plugin-pulseaudio.html#plugin- > > pulseaudio > > > > I'll update configure.ac to include the all GStreamer dependencies. > > Cool. While that's helpful, I think the proper thing to do here would be: > A) change Fedora's dependencies to gstreamer1-plugins-good, rather than base > (your call, of course) Sure, I can contact to the package maintainers and ask them to do that. Is there a reason why you don't think adding it to configure.ac would be helpful for package maintainers? It seems like the best way to enforce that the correct dependencies are installed with the package. However, I'm not a package maintainer so maybe there's a reason it would be better to e.g. file a bug downstream? Totem, for example, has checks in configure.ac, both for the gstreamer dependencies, and also for the required plugins: https://git.gnome.org/browse/totem/tree/configure.ac#n173 > B) Detect if gstreamer-pulseaudio is missing, and warn the user > appropriately. I can require gst-inspect and use that to check for the plugin and warn the user when they press record. That's a simple fix. It wasn't in the code because GstPbutils missing plugin message is usually used for that, but can't be used if the pipeline can't be created. > > I'm not very familiar with gnome-sound-recorder's codebase, so I'm not sure > how difficult B would be..
(In reply to Meg Ford from comment #27) > (In reply to Austin English from comment #26) > > (In reply to Meg Ford from comment #25) > > > It sounds like luck to me. Pulseaudio is in plugins-good > > > https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good- > > > plugins/html/gst-plugins-good-plugins-plugin-pulseaudio.html#plugin- > > > pulseaudio > > > > > > I'll update configure.ac to include the all GStreamer dependencies. > > > > Cool. While that's helpful, I think the proper thing to do here would be: > > A) change Fedora's dependencies to gstreamer1-plugins-good, rather than base > > (your call, of course) > > Sure, I can contact to the package maintainers and ask them to do that. Is > there a reason why you don't think adding it to configure.ac would be > helpful for package maintainers? It seems like the best way to enforce that > the correct dependencies are installed with the package. However, I'm not a > package maintainer so maybe there's a reason it would be better to e.g. file > a bug downstream? > Totem, for example, has checks in configure.ac, both for the gstreamer > dependencies, and also for the required plugins: > https://git.gnome.org/browse/totem/tree/configure.ac#n173 No, I think adding configure check is also a good idea, sorry for implying otherwise. My concern is that this particular bug was caused by a missing runtime dependency rather than a builtime one, so it wouldn't have helped here. IMO the more checks, the better ;). > > B) Detect if gstreamer-pulseaudio is missing, and warn the user > > appropriately. > I can require gst-inspect and use that to check for the plugin and warn the > user when they press record. That's a simple fix. It wasn't in the code > because GstPbutils missing plugin message is usually used for that, but > can't be used if the pipeline can't be created. I see, thanks.
https://git.gnome.org/browse/gnome-sound-recorder/log/?h=Bug_777862 has the fix we talked about. Do you mind building that branch on your system when you have a chance and verifying that it doesn't break things on your system? I removed the initial workaround for the wrong GLib, but I think everything should work on Debian without it.
(In reply to Meg Ford from comment #29) > https://git.gnome.org/browse/gnome-sound-recorder/log/?h=Bug_777862 has the > fix we talked about. Do you mind building that branch on your system when > you have a chance and verifying that it doesn't break things on your system? > I removed the initial workaround for the wrong GLib, but I think everything > should work on Debian without it. Hi Meg, Unfortunately, it breaks things for me. Running ./autogen.sh && ./configure: #bug 777862 branch# configure: error: Package requirements (gdk-3.0 gdk-pixbuf-2.0 gstreamer-1.0 >= gstreamer-pbutils-1.0 gstreamer-plugins-base-1.0 >= 1.4 glib-2.0 >= 2.46 gobject-introspection-1.0 >= 1.31.6 gtk+-3.0 >= 3.12) were not met: No package 'gstreamer-1.0' found No package 'gstreamer-plugins-base-1.0' found #master# no errors I'll attach logs
Created attachment 347972 [details] config.log
I updated the fix and tested it out on Debian. Everything was fine for me with the changes. It's in master now and will be in the next release. Please re-open if you run into any issues. Thanks for all your help :)
(In reply to Meg Ford from comment #32) > I updated the fix and tested it out on Debian. Everything was fine for me > with the changes. It's in master now and will be in the next release. Please > re-open if you run into any issues. Thanks for all your help :) Works for me as well, with 3.21.92-33-ge0cbeef, thanks for your help as well! FYI, I sent a patch for this to Debian, which has been applied, so that package is fixed: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=852870 Tails patch (to add gnome-sound-recorder back) is done, not applied yet.