gstreamer:交错两个音频 - 链接错误

2 投票
1 回答
968 浏览
提问于 2025-04-15 19:32

我正在尝试按照GStreamer的文档将两个音频文件交错在一起:

gst-launch interleave name=i ! audioconvert ! wavenc ! filesink location=file.wav  filesrc location=file1.wav ! \
decodebin ! audioconvert ! "audio/x-raw-int,channels=1" ! queue ! i.sink0   filesrc location=file2.wav !  \
decodebin ! audioconvert ! "audio/x-raw-int,channels=1" ! queue ! i.sink1

但是执行这个命令时出现了以下错误:

0:00:00.125000000 2264 00332BC0 错误 GST_PIPELINE grammar.tab.c:656:gst_parse_perform_link: 无法将queue0连接到i

如果我去掉第二个filesrc相关的命令,也就是在"filesrc location=file2.wav"之后的所有命令,命令就能正常运行。上面的命令到底哪里出问题了?

谢谢

1 个回答

0

尝试一下

gst-launch interleave name=i ! audioconvert ! wavenc ! filesink location=file.wav  filesrc location=file1.wav ! \
decodebin ! audioconvert ! "audio/x-raw-int,channels=1" ! queue ! i.   filesrc location=file2.wav !  \
decodebin ! audioconvert ! "audio/x-raw-int,channels=1" ! queue ! i.

这个“中间元素”的接收端(sink pads)是需要请求的,所以我猜在gst-launch尝试连接这些元素的时候,i.sink0这个接收端是不存在的。留下一个单独的点(i.)是告诉gst-launch去尝试所有的接收端,直到找到一个合适的为止。

对于除了最基本的例子之外,手动在像Python这样简单的高级语言中创建管道会更好。

另见

man gst-launch

撰写回答