【问题标题】:App using GStreamer doesn't work when another app is using ALSA当另一个应用程序使用 ALSA 时,使用 GStreamer 的应用程序不起作用
【发布时间】: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


【解决方案1】:

请使用pulsesink 然后尝试。您还应该解决所有必需的依赖项。

【讨论】:

  • 用 pulsesink 替换我的 autoaudiosink 效果很好!谢谢!不过,我更喜欢使用 alsasink,但我仍然没有找到解决问题的方法。所以,如果有人知道如何解决这个问题,请提供答案。
猜你喜欢
  • 1970-01-01
  • 2015-10-09
  • 1970-01-01
  • 2019-08-01
  • 2018-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多