Audio 如何在Gstreamer中动态交换左/右音频输出

Audio 如何在Gstreamer中动态交换左/右音频输出,audio,gstreamer,swap,channels,Audio,Gstreamer,Swap,Channels,我有一个固定的立体声麦克风和一个旋转摄像机 如何在GStreamer中动态交换音频通道,以便左/右输出耳机中的左/右或右/左 目前,我可以在启动时交换它们,但一旦流启动,我就无法更改它 我的C语言管道如下所示: gst-launch-1.0 alsasrc device=plughw:1,0 buffer-time=35000 ! audio/x-raw,channels=2 ! audioamplify amplification=10.0 ! deinterleave

我有一个固定的立体声麦克风和一个旋转摄像机

如何在GStreamer中动态交换音频通道,以便左/右输出耳机中的左/右或右/左

目前,我可以在启动时交换它们,但一旦流启动,我就无法更改它

我的C语言管道如下所示:

gst-launch-1.0 alsasrc device=plughw:1,0  buffer-time=35000 ! 
    audio/x-raw,channels=2 ! audioamplify amplification=10.0 ! 
    deinterleave name=d interleave name=i ! pulsesink  d.src_0 ! 
    queue ! volume volume=1 ! i.sink_0 d.src_1 ! queue ! 
    volume volume=1 ! i.sink_1
mix-matrix="<<(float)0.0, (float)1.0>, <(float)1.0, (float)0.0>>"
这一切都很好。现在,如果我想交换接收器,使左/右输出变为右/左,则不会发生任何事情。我可以在上看到,这可能行不通,因为它说“更改输入上限”还不受支持

如果出于某种原因,您希望看到应该更改的代码:

但当然,如果不支持此功能,那么遵循此路线是没有意义的

因此,是否有另一个插件/元素允许我动态交换左右声道?

audioconvert元素具有混合矩阵属性。看起来你可以随心所欲。查看有关该物业的文档:

对于立体声切换,我相信如下所示:

gst-launch-1.0 alsasrc device=plughw:1,0  buffer-time=35000 ! 
    audio/x-raw,channels=2 ! audioamplify amplification=10.0 ! 
    deinterleave name=d interleave name=i ! pulsesink  d.src_0 ! 
    queue ! volume volume=1 ! i.sink_0 d.src_1 ! queue ! 
    volume volume=1 ! i.sink_1
mix-matrix="<<(float)0.0, (float)1.0>, <(float)1.0, (float)0.0>>"
不过我还没试过