gst-launch 如何生成 2 个音频音调并映射到特定的通道位置位掩码

问题描述

真的很难弄清楚如何生成 2 个 audiotestsrc,然后使用 gst-launch-1.0 将它们映射/复制到多个频道。

通道 1,3 上的正弦波

通道 2,4 上的锯齿

通道 1,4 上的正弦波

通道 2,3 上的锯齿

这里有 4 个频道(但 5 个也不错):

生成两种音调的工作示例如下:

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,channel-mask=(bitmask)0x1" ! queue ! i.sink_1  \
i.src ! capssetter caps="audio/x-raw,channels=6,channel-mask=(bitmask)0x3f"  \
! audioconvert ! audioresample ! wavenc ! filesink location=test.wav

我虽然为每个源和通道(0xa 和 0x5)设置位掩码将允许 gstreamer 填充正确数量的通道和映射的正确信号,但可惜不行:我尝试的是:

gst-launch-1.0 interleave name=i  \
audiotestsrc wave=0 freq=100 volume=0.4 ! decodebin ! audioconvert !  \
"audio/x-raw,channels=2,channel-mask=(bitmask)0xA" ! queue ! i.sink_0  \
audiotestsrc wave=2 freq=100 volume=0.4 ! decodebin ! audioconvert !  \
"audio/x-raw,channel-mask=(bitmask)0x5" ! queue ! i.sink_1  \
i.src ! capssetter caps="audio/x-raw,channels=4,channel-mask=(bitmask)0xf"  \
! audioconvert ! audioresample ! wavenc ! filesink location=test.wav

但我明白了 警告:错误的管道:无法将 queue0 链接到 i

我也尝试使用相同的位掩码将音调通道设置为 4

我也尝试过在 i.sink_0 和 i.sink_1 之后进行音频转换也没有成功。

这甚至可能吗?任何帮助将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)