【问题标题】:How to pause JACK audio client如何暂停 JACK 音频客户端
【发布时间】:2020-05-15 20:44:54
【问题描述】:

我正在将 JACK 音频连接套件集成到我的应用中,但遇到了一个基本但烦人的问题。

我基本上从他们自己的 API 复制并粘贴了 simple_client 示例 (github code),但 jack_shutdown() 方法只使用 exit(1) 而不是任何暂停机制。我已经尝试使用这两种方法:

void jack_shutdown(void *arg){
    jack_deactivate(client);
    jack_client_close(client);
}

虽然音频停止,但在运行与之前相同的代码时,首先启动 JACK 客户端,从simple_client - int main (),它使应用程序崩溃。我猜这是因为jack_client_close(client) 实际上返回了以下消息:

Released audio card Audio0
Released audio card Audio1
audio_reservation_finish

谁能告诉我哪个“暂停”功能更合适?如果要关闭音频系统,停止功能也很有用 - 但可以选择重新启动。

【问题讨论】:

  • 我的回答对你有帮助吗?
  • 使用它并没有解决我的问题,正如您可以通过我问题的代码中的答案来判断。但我猜我错过了激活和停用 JACK 系统所需的所有额外内容。我现在搬到了 JUCE,它可以解决我遇到的所有问题。

标签: c++ jack


【解决方案1】:

好吧,我不是专家,但如果你真正想做的是暂停输出信号,你应该使用 jack_port_disconnect() 来断开你的 source_port destination_port,然后再次使用 source_port jack_connect()

【讨论】:

    【解决方案2】:

    我还没有在我的应用程序中这样做,但是通过查看 Ardour 的代码,我猜是一个

    jack_client_close(client);
    

    应该是 JACK 所期望的。 https://github.com/Ardour/ardour/blob/365f6d633731229e7bc5d37a5fe2c9107b527e28/libs/backends/jack/jack_connection.cc#L144

    我查看了 Ardor,因为我知道它允许在会话期间断开和重新连接到 JACK。

    【讨论】:

      猜你喜欢
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多