Audio Gstreamer复制2声道音频
我想使用audiotestsrc生成2个音频音调,然后在16个声道上复制这两个声道(即一个音调的8个声道和另一个音调的8个声道) 我有一个命令,为2个通道生成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
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