Audio Gstreamer复制2声道音频

Audio Gstreamer复制2声道音频,audio,gstreamer,audio-streaming,gstreamer-1.0,Audio,Gstreamer,Audio Streaming,Gstreamer 1.0,我想使用audiotestsrc生成2个音频音调,然后在16个声道上复制这两个声道(即一个音调的8个声道和另一个音调的8个声道) 我有一个命令,为2个通道生成2个音调: gst-launch-1.0 interleave name=i ! audioconvert ! wavenc ! filesink location=file.wav audiotestsrc wave=0 freq=100 volume=0.4 ! decodebin ! audioconvert ! "aud

我想使用audiotestsrc生成2个音频音调,然后在16个声道上复制这两个声道(即一个音调的8个声道和另一个音调的8个声道)

我有一个命令,为2个通道生成2个音调:

gst-launch-1.0 interleave name=i ! audioconvert ! wavenc ! filesink location=file.wav  audiotestsrc wave=0 freq=100 volume=0.4 ! decodebin ! audioconvert ! "audio/x-raw,channels=1,channel-mask=(bitmask)0x1" ! queue ! i.sink_0   audiotestsrc wave=1 freq=150 volume=0.4 ! decodebin ! audioconvert ! "audio/x-raw,channels=1,channel-mask=(bitmask)0x2" ! queue ! i.sink_1
gst-launch-1.0 audiotestsrc wave=0 freq=100 volume=0.4 ! audio/x-raw,rate=48000,format=S16BE ! queue ! capssetter caps="audio/x-raw,channels=16,rate=48000,channel-mask=(bitmask)0xffff" ! audioconvert ! audioresample ! wavenc ! filesink location=test.wav
我还有一个命令,可以在16个通道中生成1个音调:

gst-launch-1.0 interleave name=i ! audioconvert ! wavenc ! filesink location=file.wav  audiotestsrc wave=0 freq=100 volume=0.4 ! decodebin ! audioconvert ! "audio/x-raw,channels=1,channel-mask=(bitmask)0x1" ! queue ! i.sink_0   audiotestsrc wave=1 freq=150 volume=0.4 ! decodebin ! audioconvert ! "audio/x-raw,channels=1,channel-mask=(bitmask)0x2" ! queue ! i.sink_1
gst-launch-1.0 audiotestsrc wave=0 freq=100 volume=0.4 ! audio/x-raw,rate=48000,format=S16BE ! queue ! capssetter caps="audio/x-raw,channels=16,rate=48000,channel-mask=(bitmask)0xffff" ! audioconvert ! audioresample ! wavenc ! filesink location=test.wav
因此,我的问题是:

有没有办法将这两个命令结合起来? 我尝试了几个不同的选项,并假设位掩码为 需要0xaaaa和0x5555来“映射”哪些通道获得哪些音调

但我总是遇到语法错误或错误

警告:管道错误:无法将capssetter0链接到i

警告:错误管道:无法将队列0链接到i

我觉得我离这里很近,但不太近


任何帮助都将不胜感激。

看来我找到了一个至少能实现均匀输出通道计数的解决方案:

gst-launch-1.0 interleave name=i audiotestsrc wave=0 freq=100 volume=0.4 ! decodebin ! audioconvert ! audio/x-raw,format=S16BE,channels=1,channel-mask=(bitmask)0x1 ! queue ! i.sink_0 audiotestsrc wave=2 freq=100 volume=0.4 ! decodebin ! audioconvert ! audio/x-raw,format=S16BE,channels=1,channel-mask=(bitmask)0x1 ! queue ! i.sink_1 i.src ! capssetter caps=audio/x-raw,format=S16BE,channels=6,channel-mask=(bitmask)0x3f ! audioconvert ! audioresample ! wavenc ! filesink location=test.wav

因此,下一个技巧是处理奇数输出通道计数。i、 e 5

  • 我尝试将输出映射到6个通道,但使用通道掩码=0x1f
  • 还尝试将输出映射到6个通道,然后使用:
  • 这两个都不起作用