【发布时间】:2013-08-11 12:55:36
【问题描述】:
我使用的是 Ubuntu 12.04,它当然使用 ALSA 来处理声音。我正在使用两个应用程序,它们使用 GStreamer 解码和播放媒体,每当我收听 Pandora 或运行 Youtube 时,我的应用程序都无法运行。
对于一个应用程序,每当它启动时,它都会尝试将管道状态设置为正在播放,但它会收到一个它不能的错误。另一个应用程序在给我这个信息的公共汽车上给了我一个错误:
Setting the pipeline to play. Playing.
Error received from element autoaudiosink-actual-sink-alsa: Could not open audio device for playback. Device is being used by another application.
Debugging information: gstalsasink.c(689): gst_alsasink_open (): /GstAlsaSink:autoaudiosink-actual-sink-alsa:
Device 'default' is busy
我在两个应用的管道中都使用了 autoaudiosink,所以这个输出告诉我它正在为音频接收器选择 ALSA。那里并不奇怪。但是,这也意味着 GStreamer 正试图将 ALSA 全部用于自己,并且不能很好地与其他媒体应用程序配合使用。我做了一些测试,我的理论似乎成立。
谁能告诉我是否有办法在 Ubuntu 上设置 GStreamer 音频,以便它可以与其他媒体应用程序一起使用?或者是否知道在使用 GStreamer 音频时,其他媒体应用无法运行?
【问题讨论】:
-
你能不能试试除了 autoaudiosink 以外的 pulsesink 并告诉我们结果
-
我尝试将 autoaudiosink 换成 pulsesink,但管道似乎没有正确链接。我的管道音频部分的设置是 queue -> a52dec -> ac3parse -> audioresample -> audioconvert -> pulsesink。对吗?
-
你确定 dec(oder) 会在 parse(er) 之前出现吗?您能否也尝试切换它们。 IMO,解析器必须在队列中的解码器之前。
-
糟糕,抱歉,我确实在解码器之前有解析器。我发现它不起作用的原因是因为我没有脉冲音频的依赖项。我安装了它们,效果很好!我现在可以让其他媒体应用程序与我的应用程序同时运行。谢谢!
-
不过,希望我仍然可以使用 ALSA 接收器并获得更全面的答案,有没有办法使用 ALSA 接收器设置 GStreamer 以允许其他应用程序播放?
标签: ubuntu-12.04 gstreamer alsa