【问题标题】:GStreamer: Introduce delay/gap/shift to audioGStreamer:将延迟/间隙/移位引入音频
【发布时间】:2013-05-06 13:56:40
【问题描述】:

我在 gstreamer 中有以下管道设置:

来自两个单独的 USB 音频接口和一个脉冲音频接收器 (pulsesink) 的两个脉冲音频源 (pulsesrc)。我正在使用加法器组件组合两个传入的音频流。不幸的是,两个音频通道之间存在轻微延迟。

pulsesrc1 --- queue --- audioconvert --- audioresample --- |
                                                           | adder --- queue --- | pulsesink
pulsesrc2 --- queue --- audioconvert --- audioresample --- |

我正在使用系统时间/时钟进行同步。两个音频接口都连接到同一个 USB 集线器。我猜音频在被源接收之前已经有轻微的延迟(由于时钟不同)。

这就是为什么我想为第一个音频通道(第二个稍微滞后)引入延迟/间隙/移位来弥补这一点。

到目前为止,我尝试设置第一个队列的属性“min-threshold-time”。不幸的是,管道补偿了这种延迟,两个音频流都得到了同样的延迟。我还检查了元素“audioecho”。不幸的是,它缺少“干/湿”属性。这意味着原始信号总是在其原始时间播放,然后延迟尾部开始播放(这对我没有帮助)。

任何进一步的想法如何解决这个问题?也许增加了沉默的间隙?或者我可能缺少的其他参数。

我已经使用 Python 实现了这个管道。提前谢谢!

【问题讨论】:

    标签: python audio synchronization gstreamer python-gstreamer


    【解决方案1】:

    您可以使用队列中的最小阈值时间/字节数来延迟通过管道的其余部分发送数据吗?我认为它应该工作。除非那不适合这个:

    http://gentrans.sourceforge.net/docs/head/gst-entrans-plugins/html/gst-entrans-plugins-shift.html

    或为音频修改 frie0r 延迟插件。

    【讨论】:

    • 感谢 av501!我之前尝试过设置最小阈值时间。不幸的是,这不起作用,因为 GStreamer 的自动延迟补偿平衡了其他音频路径中的延迟。我会看看 shift 插件。我会让你知道它是如何工作的。
    • 您使用过移位元件吗?这个简单的测试管道不起作用 - 没有发生变化:gst-launch-0.10 pulsesrc device=alsa_input.usb-Creative_Technology_Ltd_Sound_Blaster_X-Fi_Go__Pro_00201613-00-Pro.analog-stereo!班次延迟=2000!队列 ! pulsesink device=alsa_output.usb-Creative_Technology_Ltd_Sound_Blaster_X-Fi_Go__Pro_00201613-00-Pro.analog-stereo
    • 自己没用过。也许一些调试打印可能会告诉您发生了什么? GST_DEBUG=3 或 4。顺便说一句,在简单的管道中,您如何知道发生了转变?我认为这不会发生。从我读到它改变了时间戳。因此,如果您将它混合到一个容器中,您应该会看到转换的时间戳。但是,除非在接收器之前有一个输出,否则管道将不会启动(除非您的管道处于实时模式。如果您的接收器具有实时模式,请启用它)。
    • 查看了调试日志(3-5 级)。那里没什么可疑的。那么这是否意味着,我实际上并没有延迟从输入到输出的音频,以便稍后播放特定时间(例如 2 秒)?它只是改变时间,像 VLC 这样的播放器会获取时间戳并相应地延迟音频?我也尝试混合数据 - 但是延迟为 2000000 微秒的移位元素对混合文件完全没有影响(就实际延迟而言)。现在要看看实际的时间戳(必须先找到一个工具)。
    • 好的,我与 Shift-element 的开发人员取得了联系。它实际上只是更改了时间戳,并没有延迟源输出的信号。他很乐意添加该功能(已经提交给 GitHub)。现在可以设置延迟信号的属性“running-time=TRUE”。这适用于简单的管道,例如“inputsrc!shift!outputsrc”,但在尝试将移位的音频流引导到多路复用器时失败。猜猜我将不得不回到您最初的建议并编写我自己的 gstreamer 插件。无论如何,再次感谢您的帮助!
    猜你喜欢
    • 2021-11-23
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    相关资源
    最近更新 更多