2011-12-26 36 views
2

我们尝试使用交错插件同时播放两首歌曲。如何通过Gstreamer在不同的耳机上同时播放两首不同的歌曲?

> gst-launch 
    filesrc location=/home/test.mp3 
     ! decodebin ! audioconvert ! "audio/x-raw-int,channels=2" 
     ! alsasink 
    filesrc location=/home/song.mp3 
     ! decodebin ! audioconvert ! audio/x-raw-int,channels=2 
     ! deinterleave name=d 
    interleave name=i ! audioconvert ! alsasink 
    d.src0 ! queue ! audioconvert ! i.sink1 
    d.src1 ! queue ! audioconvert ! i.sink0 

我能听到这两首歌一起左,右earplugs.but我想请将test.mp3在右声道和Song.mp3的播放在左声道播放。 如果在上述管道更改频道= 1而不是2,它说

设置管道停顿了一下。 管道预卷... 我可以听不见。

任何人都可以建议我这样做的正确的流水线结构?

回答

2

在交错两首歌曲之前,您需要将它们转换为单声道。使用audioconvert可以做到这一点。只需设置通道1

audioconvert ! "audio/x-raw-int,channels=1" 

然后就interleave他们到一个流:

$ gst-launch              \ 
    interleave name=i ! alsasink         \ 
    filesrc location=07.\ No\ Woman\,\ No\ Cry.mp3    \ 
     ! decodebin ! audioconvert ! "audio/x-raw-int,channels=1" \ 
     ! i.sink1             \ 
    filesrc location=11.\ Sun\ Is\ Shining.mp3     \ 
     ! decodebin ! audioconvert ! "audio/x-raw-int,channels=1" \ 
     ! i.sink0 

UPD:哦,我的天!它几乎与interleave页面here上的管道相同。尝试在下次询问之前阅读一些文档。这并不难。

+0

thanx您reply.I试图用U带通道= 1 >> GST推出交错名=我提到的管道! alsasink filesrc location =/home/Smith/Desktop/FORCE/song.mp3!解码器! audioconvert! audio/x-raw-int,channels = 1! i.sink0 filesrc location =/home/Smith/Desktop/FORCE/test.mp3!解码器! audioconvert! audio/x-raw-int,channels = 1! i.sink1 但我收到错误警告:错误的管道:无法连接audioconvert0我 – Minion 2011-12-26 14:14:42

+0

是的,对不起。它必须在sink0之前是'sink1'。查看更新的帖子。 – 2011-12-26 14:41:16

+0

非常感谢,它为我工作。 – Minion 2011-12-28 06:26:20

相关问题