我们尝试使用interleave插件同时播放两首歌曲。
> 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
我可以在左右耳塞上听到两首歌。但是我希望test.mp3在右声道播放,song.mp3在左声道播放。 如果在上面的管道中,我改变了通道= 1而不是2,它说
将管道设置为PAUSED ... 管道是PREROLLING ...... 我什么都听不到。
有人可以建议我正确的管道结构吗?
答案 0 :(得分: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
更新:哦,我的!它与interleave
页here上的管道几乎相同。在下次询问之前尝试阅读一些文档。这并不难。